1. 程式人生 > 其它 >Ansible hosts檔案

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
本文版權歸作者所有,歡迎轉載,請務必新增原文連結。