ansible主机清单
文章目录
一、引用主机清单
在playbook中引用hosts时,如果对应的主机清单中没有配置该主机,是无法执行的。
如果主机清单中配置的是主机名称,那么在playbook中hosts字段后写的是ip或者主机名,那么也是无法执行的,示例如下:
vim /etc/ansible/hosts
node1
node2
vim a.yml
---
- name: test
hosts: 172.16.30.10,node2.example.com
tasks:
- name: debug1
debug:
msg: AAA
// 执行a.yml这个playbook的时候,你就会发现有问题了,直接跳过该任务,无法执行。
[root@server ansible]# ansible-playbook a.yml
[WARNING]: Could not match supplied host pattern, ignoring: 172.16.30.10
[WARNING]: Could not match supplied host pattern, ignoring: node2.example.com
PLAY [test] ********************************************************************
skipping: no hosts matched
PLAY RECAP *********************************************************************
[root@server ansible]#
所以在引用主机清单时,一定要注意playbook里面hosts字段后写的内容一定只能时主机清单里面编辑的内容。
使用playbook引用主机清单的方式有很多种,如下
Hosts: node1
Hosts: node1.example.com
Hosts: 172.16.30.10
Hosts: all ----所有的受控主机
Hosts: net ----主机组net
Hosts: ‘’ ----所有的主机
Hosts: ‘.example.com’
Hosts: ‘172.16.30.’
Hosts: ‘web’ —通过匹配符*来匹配
Hosts: net:webserver ----取net组和webserver组的并集
Hosts: net:&webserver —取交集
Hosts: net:!node1 —net组所有的主机,但是除了node1
Hosts: node[1-5]
Hosts: node[a-d]
二、管理动态清单
从我们学习到现在为止,我们使用最多的就是静态主机清单,我们ansible也支持动态的主机清单。在什么时候我们才会用到动态的主机清单呢?
比如说,我们受控主机比较少的情况下,我们建议是使用静态主机清单的,但当我们处于一个大型的环境下,受控主机非常非常多的时候,而且受控主机更替非常快的时候,我们使用静态主机清单就很难来管理了,我们使用动态的主机清单更便于我们管理了。
Ansible支持动态清单脚本,这些脚本在每当ansible执行时从这些类型的来源检索当前的信息,使清单能够实时得到更新。这些清单脚本是可执行的程序,能够从一些外部来源收集信息,并以JSON格式输出清单。
vim hosts
node1 myvars=aa
[net]
node2
[webserver:children]
net
我们可以通过ansible-inventory -i hosts --list 命令,将主机清单以JSON的格式显示出来
[roo