Ansible hosts文件


all关键字,可以操作多台机器,这里只填写IP即可,他会用秘钥进行操作,同时省略端口等默认信息。
ansible  all  -m ping

192.168.56.108
192.168.56.109

可以用[xx]方式给主机进行分组,但all还是清理里所有主机的意思

[one]
192.168.56.108

[two]
192.168.56.109

对于这种连续的地址,可以用更加简洁的方式配置。这里注意到109是在2个组里的,这是允许的。别名是不重复的,IP可以重复。并且用all,只会执行一次109。

[one]
192.168.56.[108:109]

[two]
192.168.56.109

域名也是可以用这种方法进行配置

[one]
nginx-a-server
nginx-b-server

#可改为如下方式
[one]
nginx-[a:b]-server

一般对于主机分组是按照服务器功能进行划分,例如作为负载均衡的机器为1组,作为应用的tomcat机器为1组。但有时候需要某些组一起进行操作,例如安装zabbix客户端,这时候就可以用下列方法了。children的意思是在执行本组的时候,执行下列的组,而不是把下列当主机看待。

[nginx]
192.168.56.108

[tomcat]
192.168.56.109

[zabbix-agent:children]
nginx
tomcat

当前使用的是ini配置风格,ansible也可以读取YAML风格的配置文件,不过太丑了,这里不进行赘述,有兴趣可以查看ansible主机配置进行了解。

如果是秘钥的,可以这种方式

[one]
192.168.56.[108:109] ansible_ssh_user=root

创建一个admin用户,密码654321,也做免密登陆,用这种方式,就可以隔开了。

[one]
one-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=root
one-2 ansible_ssh_host=192.168.56.109 ansible_ssh_user=root

[two]
two-1 ansible_ssh_host=192.168.56.108 ansible_ssh_user=admin
two-2 ansible_ssh_host=192.168.56.109 ansible_ssh_user=admin

这种方式不行,pwd查看还是admin的,主机名一样,就给覆盖了

[one]
192.168.56.[108:109] ansible_ssh_user=root

[two]
192.168.56.[108:109] ansible_ssh_user=admin

Ansible配置 指定单独秘钥管理

#ssh root@服务器B
#ssh-keygen 如果要重命名可以自己指定, 回车后生成密钥对
# echo ~/.ssh/id_rsa.pub >> known_hosts 这里把生成的公钥放入known_hosts
如果自己配置了ssh_config, 关闭了known_hosts, 可能就需要写进~/.authorized_keys里面去了.
把服务器B上的私钥回传到ansible执行的服务器A的ssh_keys里, 命名为 
服务器B_ip_.key

给ssh_keys文件夹授权为700, 一定要700, 其它的都会报错.

建立hosts文件里面指定server, 每个server一行.这里我测试就写一行. 
[test_server] 
10.0.1.5 ansible_ssh_private_key_file=ssh_keys/10.0.1.5.key ansible_ssh_user=root


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM