inventory文件为ansible的主机管理文件,默认位于/etc/ansible/hosts
主机文件中定义了ansible客户端的主机,使用IP地址或域名定义。
格式:
[local] 定义主机组
127.0.0.1 该主机组中的主机
[test] 定义主机组
192.168.2.16[0:9] 该主机组中的主机,.16[0:9]代表160-169
[ansible:children] 定义主机组 :children代表该主机组中包含主机组
Local 该主机组包含的主机组
test 该主机组包含的主机组
[zabbix:vars] 定义主机组的变量
ansible_ssh_pass=123.com 使用sshpass格式,定义主机组的密码为3075px ,该密码在主机组中的所有主机中通用
定义主机组:使用[],括号内为主机组名称,下面为主机的ip或者主机名;主机组中不仅仅可以有主机,还可以有其他主机组,定义方式为:
[父主机组名:children]
子主机组1
子主机组2
...
当你使用ansible命令批量处理时,默认需要输入主机密码
(当要求不提示输入密码时,将主配置文件中的ask_pass = True的注释去掉)
而输入的密码被当做所有被执行主机的ssh密码,这样的话很不方便,而且如果主机密码不同的话,会有一些主机无法完成处理,ansible对密码的管理方式也是在ansible的hosts文件中,当你安装了sshpass后,可以直接在hosts文件中输入密码,格式为:
[test]
192.168.1.2:2222 #主机ssh端口变量
192.168.1.3 ansible_ssh_pass='51cto.com' #主机ssh密码变量
[test:vars] #组变量
ansible_ssh_pass='51cto.com' #组密码变量
ansible_ssh_port=22 #组端口变量
密码可以直接输入在主机后面,使用关键字:ansible_ssh_pass=进行密码定义,也可以在组变量([test:vars])中对一组中的所有主机进行密码定义,组变量中的所有变量对相应组中的所有主机生效;而定义ssh的端口可以用同样的方法;变量的优先级是:手动输入>主机变量>组变量
这样,在进行批量操作的时候就不需要输入密码了,但次密码是明文的,不×××全,关于ansible文件的加密,后续章节会讲到。