微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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格式有严格的格式要求,在变量值和冒号之间有一个空格

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐