ansible--hosts文件

2021-08-02 17:50:21 浏览数 (1)

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

代码语言:javascript复制
192.168.56.108
192.168.56.109

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

代码语言:javascript复制
[one]192.168.56.108
[two]192.168.56.109

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

代码语言:javascript复制
[one]192.168.56.[108:109]
[two]192.168.56.109

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

代码语言:javascript复制
[one]nginx-a-servernginx-b-server#可改为如下方式
[one]nginx-[a:b]-server

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

代码语言:javascript复制
[nginx]
192.168.56.108
[tomcat]
192.168.56.109
[zabbix-agent:children]
nginxtomcat

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

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

代码语言:javascript复制
[one]
192.168.56.[108:109] 
ansible_ssh_user=root

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

代码语言:javascript复制
[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的,主机名一样,就给覆盖了

代码语言:javascript复制
[one]
192.168.56.[108:109] ansible_ssh_user=root
[two]
192.168.56.[108:109] ansible_ssh_user=admin

Ansible配置 指定单独秘钥管理

代码语言:javascript复制
#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

0 人点赞