0
点赞
收藏
分享

微信扫一扫

自动化运维工具Ansible(16)Inventory 文件使用

通过从命令行提供多个清单参数或通过配置多个清单参数,可以同时定位多个清单源(目录,动态清单脚本或清单插件支持的文件)

这对于具有多环境的状态下非常有帮助,比如生产环境和开发环境。

从命令行定位两个源

ansible-playbook get_logs.yml -i development -i production


使用目录汇总清单源

  • 可以通过组合目录下的多个清单来源和来源类型来创建清单。
  • 这对于组合静态和动态主机并将它们作为一个清单进行管理很有用。
  • 目录中仅支持如下扩展名:.yaml   .yml   .json
以下清单结合了清单插件源,动态清单脚本和具有静态主机的文件
inventory/
aliyun.yml # 清单插件,获取阿里云的主机
dynamic-inventory.py # 使用动态脚本添加额外的主机
static-inventory # 添加静态主机和组
group_vars/
all.yml # 给所有的主机指定变量

命令行里使用这个清单目录

ansible-playbook example.yml -i inventory

可以在配置文件中配置

假设这个清单目录的绝对路径是: /etc/ansible/inventory

[defaults]
inventory = /etc/ansible/inventory

要注意变量覆盖

  • 如果存在与其他库存来源之间的变量冲突或组依赖关系,则控制库存来源的合并顺序可能很有用。
  • 根据文件名按字母顺序合并清单,因此可以通过在文件前添加前缀来控制结果:
inventory/
01-aliyun.yml
02-dynamic-inventory.py
03-static-inventory
group_vars/
all.yml

测试

目录结构

[root@localhost inventory]# tree
.
├── 01-static.yml
└── 02-static.yml

文件内容

[root@localhost inventory]# cat 01-static.yml 
[dbservers]
192.168.19.[104:110]

[allservers:children]
dbservers

[allservers:vars]
name = dbserversip

[root@localhost inventory]# cat 02-static.yml
[webservers]
192.168.19.103

[allservers:children]
webservers

[allservers:vars]
name = webserversip

验证变量的值

[root@localhost home]# ansible all -i inventory -m debug -a "var=name"
192.168.19.104 | SUCCESS => {
"name": "webserversip"
}
192.168.19.105 | SUCCESS => {
"name": "webserversip"
}
192.168.19.106 | SUCCESS => {
"name": "webserversip"
}
192.168.19.107 | SUCCESS => {
"name": "webserversip"
}
192.168.19.108 | SUCCESS => {
"name": "webserversip"
}
192.168.19.109 | SUCCESS => {
"name": "webserversip"
}
192.168.19.110 | SUCCESS => {
"name": "webserversip"
}
192.168.19.103 | SUCCESS => {
"name": "webserversip"
举报

相关推荐

0 条评论