Asible——inventory配置與書寫規範
阿新 • • 發佈:2020-09-11
inventory
Ansible使用清單的一個列表或者一組列表,同時針對多個被控機進行工作。定義了清單後,可以爭對具體生產情況來對受管主機來進行分組。
清單的預設檔案的名為/etc/ansible/hosts。但我們平時習慣於在專案目錄中單獨建立一個inventory檔案,把受管主機資訊寫入。執行playbook時用-i指定清單即可。
inventory 別名
平時我們為了更方便的辨認主機的用途,我們會為各個主機或者組來起別名,這樣比直接使用IP地址更方便
方式一:直接在inventory中對別名進行說明
[root@localhost project2]# vim inventory mysql_host ansible_password=123456 ansible_host=192.168.190.134 用ansible_host註明對應ip地址 [root@localhost project2]# ansible mysql_host -m ping -i inventory ping主機的時候用別名代替ip地址即可。playbook同理。 mysql_host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" }
方式二:為了更方便的管理主機或組,可以在host_vars或group_vars中建立別名的檔案,然後在裡面表明ip地址
[root@localhost project2]# vim host_vars/mysql_host 在host_vars/mysql_host下說明密碼和對應的ip地址 ansible_host: 192.168.190.134 ansible_password: 123456 [root@localhost project2]# ansible mysql_host -m ping -i inventory 同樣ping通 mysql_host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" }
萬用字元使用
除了用別名外,我們可以用萬用字元來匹配主機
注意:
- 萬用字元只是對字串進行匹配,所以不會區分別名,域名,IP,組名。只要存在對應字串的內容全都匹配。
- 來使用萬用字元來匹配主機時,必須使用'',否則ansible會報錯。
[root@localhost project2]# ansible 'mysql*' -m ping -i inventory 匹配mysql_host主機 mysql_host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/libexec/platform-python" }, "changed": false, "ping": "pong" }
列表
可以在hosts中使用,來分隔多個主機的條目,使playbook對多個主機或組生效。
各個條目並沒有限制。可以是主機名,可以是ip,也可以是組名。主要存在於inventory中即可。
vim test.yml
---
- name: test
hosts: mysql_host,test,192.168.190.133 這裡分別選用了 mysql_host主機,test組,以及ip:192.168.190.133
tasks:
- name:
command: echo 'hello'
TASK [command] ************************************************************************************
changed: [192.168.190.134]
changed: [mysql_host]
changed: [192.168.190.133]
PLAY RECAP ****************************************************************************************
192.168.190.133 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.190.134 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
mysql_host : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0