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