当前位置: 首页 > ai >正文

ansible进阶02

管理主机清单变量

使用变量的原则

变量创建的位置
  • 角色的defaults或vars目录
  • 主机清单
  • playbook或主机清单所在位置的子目录group_varshost_vars
  • play或角色或任务

无论在哪创建变量,都应该遵守一些规则:

  • 保持简洁
  • 不要重复造轮子。不要反复在多个位置创建相同的变量。
  • 把变量组织到小的、可读性强的文件中

变量的合并和优先级

主机清单变量优先级从低到高

  • 角色defaults中的变量
  • 主机清单中定义的组变量
  • inventory目录下group_vars/all目录中为主机组all定义的组变量
  • playbook目录下group_vars/all目录中为playbook定义的组变量
  • inventory目录下group_vars目录中为其他主机组定义的组变量
  • playbook目录下group_vars目录中为playbook定义的组变量
  • 主机清单中定义的主机变量
  • 在主机清单的host_vars目录中创建的变量
  • 在playbook的hosts_vars目录中创建的变量
  • facts变量和缓存变量

play变量的优先级

从低到高依次是:

  • play中通过vars声明的变量
  • play中通过vars_prompt获取的变量
  • play中通过vars_files声明的变量
  • 角色的vars目录中声明的变量
  • block中通过vars声明的变量
  • task中通过vars声明的变量
  • 通过include_vars加载的变量
  • 通过set_fact模块创建的变量和通过register注册的变量
  • 当加载角色时导入的参数,或通过include_role模块加载的参数
  • 通过include_tasks模块设置的变量
  • 通过ansible-playboo -e指定的额外变量

将变量从主机清单中分离出来

  • 建议的组变量结构
[user@demo project3]$ tree -F group_vars
group_vars/                 # 组变量定义目录
├── all/                    # 组all
│   └── common.yml          # 定义所有组都需要的变量
├── db_servers/             # 组db_servers
│   ├── mysql.yml           # 定义mysql相关的变量,文件名随意
│   └── firewall.yml
├── lb_servers/
│    ├── firewall.yml
│    ├── haproxy.yml
│    └── ssl.yml
└── web_servers/├── firewall.yml├── webapp.yml└── apache.yml
特殊的主机变量
  • ansible_connection:用于指定连接方式(ssh、smart、local)。
  • ansible_host:当连接到被管理的主机时,使用的真实的IP地址或FQDN。
  • ansible_port:远程主机的端口号。
  • ansible_user:远程连接时采用的用户。
用于识别主机的变量
  • inventory_hostname:主机清单中的主机名
  • ansible_host:主机的真正IP地址,或FQDN
  • ansible_facts['hostname']:事实变量取得的主机名
  • `ansible_facts[‘fqdn’]:事实变量取得的FQDN
http://www.xdnf.cn/news/6124.html

相关文章:

  • vivado原语
  • AI编程:使用Trae + Claude生成原型图,提示词分享
  • 一次因校时服务器异常引起的性能差异分析
  • 浏览器相关
  • React Native矢量图标全攻略:从入门到自定义iconfont的高级玩法
  • 深入浅出 IPFS 在 DApps 和 NFT 中的应用:以 Pinata 实战为例
  • Java 框架配置自动化:告别冗长的 XML 与 YAML 文件
  • 科普:影像空间分辨率
  • 院校机试刷题第二天:1479 01字符串、1701非素数个数
  • spring-cloud-stream学习
  • elasticdump备份恢复
  • vue3实现JSON格式化和JSONPath提取功能
  • 10、面向对象技术★★★★★30‘
  • 移动端巡检点检,让设备管理更便捷高效
  • 当数控编程“联姻”AI:制造工厂的“智能大脑”如何炼成?
  • .NET NativeAOT 指南
  • CGO中引入 <cstddef> <vector> fatal error: cstddef: No such file or directory 失败的原因
  • Llama:开源的急先锋
  • 基于springboot+vue的医院门诊管理系统
  • 南审计院考研分享会 经验总结
  • Android多媒体——媒体start流程分析(十三)
  • PinkWallet如何打通数字资产与传统金融的最后一公里
  • Vue百日学习计划Day1-3天详细计划-Gemini版
  • 计算机组成与体系结构:缓存设计概述(Cache Design Overview)
  • spring中的@MapperScan注解详解
  • 【RabbitMq】无法打开 RabbitMq 管理插件的问题
  • Python基础入门
  • 文件名是 ‪E:\20250512_191204.mp4, EV软件录屏,未保存直接关机损坏, 如何修复?
  • 机器学习入门案例:鸢尾花分类与AI辅助
  • 机器人示教操作