ansible 主機正則

2022-05-17 20:15:37 字數 1776 閱讀 4409

ansible -m -a

該功能主要針對inventory的主機列表,案例如下:

1、all(全量匹配)

說明:匹配所有主機,all或者*號,兩個功能相同,只是*號需要使用雙引號引起來。

// 匹配所有主機

ansible all -m ping

ansible "*" -m ping

// 匹配某個網段

ansible 192.168.4.* -m ping

2、邏輯或(or)匹配

如希望對多個主機或者多個組進行執行,相互之間用冒號分割。

ansible  192.168.4.46:192.168.4.50 -m ping

3、邏輯非(!)匹配

主要針對多重條件的匹配規則。

//所有在zookeeper裡面的機器,但不在hadoop裡面的機器被匹配到。需要使用單引號。

ansible '

zookeeper:!hadoop

' -m ping

不使用引號或者使用單引號會報錯。

[root@manager1 data 10:51:57]#ansible 'zookeeper:!hadoop' -m ping

192.168.4.46 | success => ,

"changed": false,

"ping": "pong"

}[root@manager1 data 10:52:41]#ansible "zookeeper:!hadoop" -m ping

-bash: !hadoop": event not found

[root@manager1 data 10:53:45]#ansible zookeeper:!hadoop -m ping

-bash: !hadoop: event not found

4、邏輯與(&)匹配

針對多重條件的匹配。

//zookeeper組和hadoop組中同時存在的機器。需要引號(單引號,雙引號都行。)

ansible "

zookeeper:&hadoop

" -m ping

5、多條件組合

//webservers和dbservers兩個組中的所有機器在staging組中存在,但不存在與phoenix。

ansible 'webservers:dbservers:&staging:!phoenix' -m ping

6、模糊匹配

*萬用字元表示0個或者多個任意字元,主要用於一些模糊匹配。

//

所有以192.168開頭的主機

ansible 192.168.* -m ping

7、域切割或者索引

ansible底層基於python,因此也支援域切割,eg:

//主機清單配置如下:

[webservers]

cobweb

webbing

weber

通過擷取陣列下標可以獲得對應的變數值

webservers[0] # ==cobwb

webservers[-1] #==weber

8、正則匹配

//~開始表示正則匹配。

~(web|db).*\.example\.com

檢測以192.168開頭的主機

ansible ~192\.168\.[0-9]\.[0-9]\ -m ping

主機清單,ansible模組

1 基於密碼的方式 root localhost vim etc ansible hosts web01 192.168.13.20 ansible ssh user root ansible ssh port 22 ansible ssh pass 1 web02 192.168.15.100 a...

Ansible2 主機清單

ansible 通過讀取預設的主機清單配置 etc ansible hosts,可以同時連線到多個遠端主機上執行任務,預設路徑可以通過修改 ansible.cfg 的 hostfile 引數指定路徑。對於 etc ansible hosts最簡單的定義格式像下面 1 簡單的主機和組 mail yan...

利用ansible進行主機管理

安裝好了 ansible 之後後就可以開始一些簡單的任務了 ansible配置檔案查詢順序 首先檢測 ansible config 變數定義的配置檔案 其次檢查當前目錄下的 ansible.cfg 檔案 再次檢查當前使用者家目錄下 ansible.cfg 檔案 最後檢查 etc ansible an...