Ansible 系列之 Patterns

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

相關文章
相關標籤/搜索