一、清单文件语法
ansible安装完成后,在/etc/ansible/目录下有个hosts文件,这个文件就是ansible默认的主机清单的配置文件,在清单文件中,可以指定主机名或IP地址,一行一个,也可以是组的形式,组下面包含一个或多个主机,组还可以嵌套,方式很灵活。下面的例子会向你展示这个文件的写法。
|
#表示单个主机,不属于任何组 |
|
web.frank.com |
|
|
|
#组名为:db-server,组内包含db1.frank.com,db2.frank.com 2个主机 |
|
[db_server] |
|
db1.frank.com |
|
db2.frank.com |
|
|
|
#组名为:ha,组内有3台主机,可以写域名,也可以写IP地址 |
|
[ha] |
|
ha1.frank.com |
|
192.168.100.10 |
|
192.168.100.11 |
|
|
|
[k8s_master] |
|
master1.frank.com |
|
master2.frank.com |
|
master3.frank.com |
|
|
|
[k8s_nodes] |
|
node1.frank.com |
|
node2.frank.com |
|
node3.frank.com |
|
|
|
#通过范围来简化,组内包含3台主机,分别为:etcd1.frank.com,etcd2.frank.com,etcd3.frank.com 使用方法:[start:end] |
|
[k8s_etcd_cluster] |
|
etcd[1:3].frank.com |
|
|
|
#嵌套组写法,固定格式:[组名:children] |
|
[k8s_all:children] |
|
master |
|
nodes |
|
etced-cluster |
这里有一点需要注意的地方:文件中的组名尽量用下划线_代替中横线-,不然ansible会报警告。 以上介绍了ansible清单文件的基本写法和语法格式,是直接写在了/etc/ansible/hosts文件里的,一般来说并不推荐这样做,而是建个ansible的工作目录,在这个目录里创建一个叫inventory的文件,把主机清单写到inventory中,在调用时在通过-i INVENTORY指定相应资源。
二、清单文件相关操作
- 创建ansible工作目录
|
[root@master ansible]# pwd |
|
/root/ansible |
|
[root@master ansible]# ls |
|
ansible.cfg copy_repo.yml inventory pushsshkey.yaml remove_k8s.yaml update_kernel.yml update_vim8.yml yum_install_etcd_3.yml |
- 编写inventory
|
[root@master ansible]# cat inventory |
|
[k8s_master] |
|
master |
|
node[1:2] |
|
|
|
[k8s_etcd_cluster] |
|
master |
|
node[1:2] |
|
|
|
[k8s_nodes] |
|
node[1:3] |
-
验证主机是否在清单中
使用 ansible host-or-group -i inventory --list-hosts列出文件中的受管主机和组
|
[root@master ansible]# ansible k8s_etcd_cluster -i inventory --list-hosts |
|
hosts (3): |
|
master |
|
node1 |
|
node2 |
使用 ansible all -i inventory --list-hosts 列出所有受管主机
|
[root@master ansible]# ansible all -i inventory --list-hosts |
|
hosts (4): |
|
master |
|
node1 |
|
node2 |
|
node3 |
使用 ansible ungrouped -i inventory --list-hosts 列出不属于某个组的受管主机
|
[ ] |
|
[nothing to do ]: No hosts matched, |
|
hosts (0): |
ansible的清单文件和操作并不只是为了查看有哪些主机在清单中,更重要的是配合playbook使用,不过在介绍playbook之前还得要了解一下ansible.cfg的配置文件。