ansible主机清单整理

2020-07-31 11:06:50 浏览数 (1)

ansible默认是通过/etc/ansible/hosts文件来管理主机的,如果不想使用默认的文件,可以修改配置文件/etc/ansible/ansible.cfg文件

具体是修改该文件中的hostfile配置项,例如:

1

inventory     = /etc/ansible/conf.d

完成修改后,我们就可以在conf.d目录下设置我们的主机清单,可以写任意多个文件

常用主机变量介绍

1 2 3 4 5 6 7 8 9 10 11 12

ansible_ssh_host #用于指定被管理的主机的真实IP ansible_ssh_port #用于指定连接到被管理主机的ssh端口号,默认是22 ansible_ssh_user #ssh连接时默认使用的用户名 ansible_ssh_pass #ssh连接时的密码 ansible_sudo_pass #使用sudo连接用户时的密码 ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径 ansible_ssh_private_key_file #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项 ansible_shell_type #目标系统的shell的类型,默认sh ansible_connection #SSH 连接的类型: local , ssh , paramiko,在 ansible 1.2 之前默认是 paramiko ,后来智能选择,优先使用基于 ControlPersist 的 ssh (支持的前提) ansible_python_interpreter #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl 的路径 ansible_*_interpreter #其他解释器路径,用法与ansible_python_interpreter类似,这里"*"可以是ruby或才perl等其他语言

下面来看几种配置方式

1、最简单的一种

1 2 3 4 5

[nodes] 172.17.0.2 172.17.0.3 172.17.0.4 172.17.0.5:2020

如果不是默认的22端口,后面可以跟端口

2、可以写类似于通配符的形式

1 2 3 4 5

172.17.0.[2:5] www[01:20].devilf.cc web-[a:z].devilf.cc

3、设置别名的形式

1 2

web1 ansible_ssh_port = 9777 ansible_ss_host = 172.17.0.2 web1就指代了172.17.0.2

4、组内变量

1 2 3 4 5 6 7

[test] host1 host2 [test:vars] ntp_server=172.17.0.1 proxy=172.17.0.2

test组中包含两台主机,通过test组指定vars变量,相应的host1和host2相当于他们的ntp_server和proxy都通过设定好变量来赋值

5、组包含和组内变量

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

[web] web1 web2 [db] web3 web4 [test] web5 [store:children] web db [store:vars] ntp_server=172.17.0.1 zabbix_server=172.17.0.3 [lvs:children] store test

解释下:web组里有两台主机,web1和web2,db组里有web3和web4,关键的地方来了,store组,这个组包含web组和db组,与此同时,给store组设置了一个组内变量,最后设置了一个lvs组,包含所有的组

也就是说,只要看到组名后有children的组,均是包含关系,即该组继承包含所有组的所有信息

6、主机与组正则匹配

使用结构:ansible 匹配部分   -m  模块名  -a  选项

1)表示所有的主机

1

ansible all -m ping

2)通配符与逻辑或关系

1 2

ansible 172.17.0.* -m ping ansible web:db -m ping     #冒号表示逻辑或,即表示所有的几个组

3)多个组

1

ansible web:db:store -m ping

4)逻辑非与逻辑且

1 2 3

ansible web:!db -m ping     #表示目标主机在web组中,但不在db组中 ansible web:&db -m ping     #表示既在web组又在db组

0 人点赞