inventory简介
inventory,也就是主机清单。什么叫主机清单,告诉ansible需要管理哪些server,和server的分类和分组信息。可以根据你自己的需要根据地域分类,也可以按照功能的不同分类。
在大规模的配置管理工作中,特别是云服务提供商或者IDC厂家,需要管理不同业务的不同机器,这些机器的信息都存放在Ansible的inventory组件里面。在我们使用Ansible进行远程主机管理时,必须先将主机信息存放在inventory里面,这样才能使用Ansible对它进行操作。
Ansible 通过读取默认的主机清单配置/etc/ansible/hosts
,可以同时连接到多个远程主机上执行任务, 默认路径可以通过修改 ansible.cfg 的 hostfile 参数指定路径。也可以通过命令行选项指定其它的清单文件-i <path>
。
静态inventory
所有的主机信息都存放在Ansible的inventory组件里面,默认Ansible的inventory是一个静态的ini格式的文件/etc/ansible/hosts
,当然还可以通过ANSIBLE_HOSTS环境变量指定或者运行ansible和ansible-playbook的时候用-i
参数临时设置。
a、中括号中的名字代表组名,可以根据自己的需求将庞大的主机分成具有标识的组。
b、主机(host)部分可以使用域名、主机名、IP地址表示;当然使用前两者时,也需要主机能反解析到相应的IP地址,一般此类配置中多使用IP地址。
1.定义主机和主机组
我们也可以直接在主机清单中定义。 定义的方法如下:
向不同的主机传递不同的变量:
IP/HOSTNAME varaiable=value var2=value2
向组中的主机传递相同的变量:
[groupname:vars]
variable=value
Ansible Inventory 内置参数

使用内置变量把用户名密码写在Inventory中,也就是/etc/ansible/hosts
文件里,缺点就是暴露了账号密码,不安全。如果有多个主机需要使用同样的变量,可以用组变量的形式,书写格式如下:
[web]
192.168.2.168
192.168.2.145
192.168.2.178
[web:vars] #给名为webservers的组定义一个变量,:vars是固定格式
ansible_ssh_port=22
ansible_ssh_user='root'
ansible_ssh_pass='1234.com'
动态inventory
动态inventory的意思就是所有的变量可以从外部获取,也就是说我们可以从CMDB一级zabbix系统拉取所有的主机信息然后使用Ansible进行管理。易用inventory只需要把ansible.cfg文件中的inventory定义值改成一个可执行脚本即可。
网友评论