ansible主機清單配置詳解

ansible的基礎配置:

ansible安裝完成後,一定需要對主機清單進行管理,所以,配置inventory是ansible安裝完成後的第一步

ansible的主機清單配置有兩種方式:

單機配置:將單臺主機的可解析主機名和ip配置到主機清單中

分組配置:將幾臺運行代碼相似的主機名或者主機IP放到相同組中,併爲該組命名

[web]
web1
web2
web3
web4

上面的分組方式也可以寫爲下面的形式

[web]
web[1:4]

ansible的主機清單配置除了配置主機到文件中外,還可以配置其它信息,如連接被管理端的用戶,密碼,例如:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456
web2 ansible_ssh_user=root ansible_ssh_pass=123456

如果沒有設定密鑰認證的話,可以在這裏進行對被管理端的身份信息錄入

除了上面的參數外,還可以在主機清單文件中配置變量信息

比如,我需要給web1的服務器定義http端口爲8080,web2主機的http端口爲80,配置如下:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=8080
web2 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=80

除了像上面的變量定義方式外,還可以用下面的組變量的定義方式:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456
web2 ansible_ssh_user=root ansible_ssh_pass=123456

[web:vars]
http_port=80
ssh_port=22
redis_port=6379

這樣就爲web組定義了下面的三個變量。這樣定義的變量爲一個組內所有的主機所共用。

如果使用了組變量的同時,也爲每個主機定義了單獨的、相同的變量名,如下面的這種形式:

[web]
web1 ansible_ssh_user=root ansible_ssh_pass=123456 http_port=8080
web2 ansible_ssh_user=root ansible_ssh_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格式有嚴格的格式要求,在變量值和冒號之間有一個空格

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章