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组 |
---|