Ansible 之 Patternshtml
1.Ansible中的Patterns決定了咱們要管理哪一個主機,意思是與哪些主機進行交互。web
咱們將在Ad-Hoc(Ad-Hoc 是指 臨時執行的命令,要結合着模塊進行使用,可經過ansible-doc -l查看模塊的列表)命令行中進行介紹,docker
本文中,ansible 的hosts 清單文件內容以下:shell
[root@docker ~]# cat /etc/ansible/hosts [centos_group] 172.17.0.2 172.17.0.3 [webserver] web1 ansible_port=222 ansible_host=172.17.0.4 172.17.0.3 [centos:children] centos_group webserver
先看下命令行模式的語法:centos
ansible <pattern_goes_here> -m <module_name> -a <arguments>
示例:數組
[root@docker ~]# ansible webserver -m shell -a "date" web1 | SUCCESS | rc=0 >> Mon Feb 20 15:15:50 CST 2017
-m 模塊名,默認不指定,使用的是command 模塊。
-a 模塊參數,可經過 `ansible-doc 模塊名` 查看具體使用方法bash
在上面的示例中 pattern_goes_here 指的是webserver 組中的計算機,學習
下面的兩條命令中的patterns 等價於使用清單中內的全部主機spa
[root@docker ~]# ansible "*" -m shell -a "date" [root@docker ~]# ansible all -m shell -a "date"
也能夠按指定ip地址,如:命令行
[root@docker ~]# ansible 172.17.0.2 -m ping 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" } [root@docker ~]# ansible 172.17.0.* -m ping 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" }
有個有趣的小發現,不知當槳不當槳。ping 對應的是 pong,是乒乓的意思麼?
patterns 是一個組,也可用 冒號:分割,添加另一個組,表示主機能夠在這個組或者另外一組中。
以下:
[root@docker ~]# ansible centos_group:webserver -m ping 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" } web1 | SUCCESS => { "changed": false, "ping": "pong" } 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" }
也能夠排除某個組相同的主機,如全部計算機必須在centos_group組中 且不在webserver 組中,用 :!來表示(!、& 會被bash 解釋,因此須要加轉義符),以下:
[root@docker ~]# ansible centos_group:\!webserver -m ping 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" }
還能夠指定兩個組的交集,意味着主機必須即在webserver 組中,又在centos_group組中,用:& 表示,以下:
[root@docker ~]# ansible centos_group:\&webserver -m ping 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong" }
另外也能夠根據數組下標來選擇組內的主機,以下:
[root@docker ~]# ansible centos_group[0] -m ping 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong" }
固然,還有高級的用法,如利用通配符,以及正則的方式來匹配主機。
等下再來學習Ad-Hoc 命令的使用吧。
注:本文屬於飛走不可原創,若有轉載,請務必在文首註明出處。飛走不可:=_= http://www.cnblogs.com/hanyifeng/p/6193249.html