一、简单说明
Ansible,默认是调用“/etc/ansible/hosts”配置的主机组或者主机,同时也可以通过 -i 参数指定自定义的hosts文件。
Ansible Inventory实际上是包含静态Inventory和动态Inventory两部分,静态Inventory指的是在文件/etc/ansible/hosts中指定的主机和组,Dynamic Inventory指通过外部脚本获取主机列表,并按照ansible 所要求的格式返回给ansilbe命令的。这部分一般会结合CMDB资管系统、zabbix 监控系统、crobble安装系统、云计算平台等获取主机信息。由于主机资源一般会动态的进行增减,而这些系统一般会智能更新。我们可以通过这些工具提供的API 或者接入库查询等方式返回主机列表。
二、代码
#!/usr/bin/env python import json hostlist = {'db':['vm1','vm2'],'web':['vm3','vm4'],'zabbix':['vm5']} print json.dumps(hostlist)
三、解析
1、在上面的代码中,定义为一个字典,且将这个字典输出为json格式的字符串
2、定义了三个主机组,分别为:db、web、zabbix
四、执行
ansible -i my_host_list.py db -m shell -a "uname -a"
ansible -i my_host_list.py web -m shell -a "uname -a"
ansible -i my_host_list.py zabbix -m shell -a "uname -a"
ansible -i my_host_list.py db:zabbix -m shell -a "hostname" #同时执行db和zabbix组,用冒号分隔