ansible主机清单配置详解

ansible的基础配置:

ansible安装完成后,一定需要对主机清单进行管理,所以,配置inventory是ansible安装完成后的第一步

ansible的主机清单配置有两种方式:

单机配置:将单台主机的可解析主机名和ip配置到主机清单中

分组配置:将几台运行代码相似的主机名或者主机IP放到相同组中,并为该组命名

[web]
web1
web2
web3
web4

上面的分组方式也可以写为下面的形式

[web]
web[1:4]

ansible的主机清单配置除了配置主机到文件中外,还可以配置其它信息,如连接被管理端的用户,密码,例如:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456
web2 ansible_ssh_user=root ansible_ssh_pass=123456

如果没有设定密钥认证的话,可以在这里进行对被管理端的身份信息录入

除了上面的参数外,还可以在主机清单文件中配置变量信息

比如,我需要给web1的服务器定义http端口为8080,web2主机的http端口为80,配置如下:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=8080
web2 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=80

除了像上面的变量定义方式外,还可以用下面的组变量的定义方式:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456
web2 ansible_ssh_user=root ansible_ssh_pass=123456

[web:vars]
http_port=80
ssh_port=22
redis_port=6379

这样就为web组定义了下面的三个变量。这样定义的变量为一个组内所有的主机所共用。

如果使用了组变量的同时,也为每个主机定义了单独的、相同的变量名,如下面的这种形式:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=8080
web2 ansible_ssh_user=root ansible_ssh_pass=123456

[web:vars]
http_port=80
ssh_port=22
redis_port=6379

则在web1下的http_port的值为8080,而不是80

也就是单台主机的变量会覆盖组变量,在相同变量名的情况下。

在定义组变量的时候,还可以采用下面的方式:

通过在/etc/ansible/group_vars/目录下建立一个以组名为命名的yaml文件

如定义web组的组变量就可以建立下面的一个文件:/etc/ansible/group_vars/web.yml文件

文件格式如下:

http_port: 80
server_name: www.test.com
注意:yaml格式有严格的格式要求,在变量值和冒号之间有一个空格
我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章