ansible的基础配置:
ansible安装完成后,一定需要对主机清单进行管理,所以,配置inventory是ansible安装完成后的第一步
ansible的主机清单配置有两种方式:
单机配置:将单台主机的可解析主机名和ip配置到主机清单中
分组配置:将几台运行代码相似的主机名或者主机IP放到相同组中,并为该组命名
[web]
web1
web2
web3
web4
上面的分组方式也可以写为下面的形式
[web]
web[1:4]
ansible的主机清单配置除了配置主机到文件中外,还可以配置其它信息,如连接被管理端的用户,密码,例如:
[web]
ubuntu ansible_user=ubuntu ansible_pass=123456 ansible_host=192.168.5.1 ansible_port=22
centos ansible_user=root ansible_pass=123456 ansible_host=192.168.5.2 ansible_port=2022
如果没有设定密钥认证的话,可以在这里进行对被管理端的身份信息录入
除了上面的参数外,还可以在主机清单文件中配置变量信息
比如,我需要给web1的服务器定义http端口为8080,web2主机的http端口为80,配置如下:
[web]
web1 ansible_user=root ansible_pass=123456 http_port=8080
web2 ansible_user=root ansible_pass=123456 http_port=80
除了像上面的变量定义方式外,还可以用下面的组变量的定义方式:
[web]
web1 ansible_user=root ansible_pass=123456
web2 ansible_user=root ansible_pass=123456
[web:vars]
http_port=80
ssh_port=22
redis_port=6379
这样就为web组定义了下面的三个变量。这样定义的变量为一个组内所有的主机所共用。
如果使用了组变量的同时,也为每个主机定义了单独的、相同的变量名,如下面的这种形式:
[web]
web1 ansible_user=root ansible_pass=123456 http_port=8080
web2 ansible_user=root ansible_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格式有严格的格式要求,在变量值和冒号之间有一个空格