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文件的加密,后续章节会讲到。