1. 程式人生 > 實用技巧 >Asible——inventory配置與書寫規範

Asible——inventory配置與書寫規範

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"
}

萬用字元使用

除了用別名外,我們可以用萬用字元來匹配主機

注意:

  1. 萬用字元只是對字串進行匹配,所以不會區分別名,域名,IP,組名。只要存在對應字串的內容全都匹配。
  2. 來使用萬用字元來匹配主機時,必須使用'',否則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