ansible之patterns

在Ansible中,Patterns 是指我們怎樣確定由哪一臺主機來管理. 意思就是與哪臺主機進行交互. 但是在playbooks 中它指的是對應主機應用特定的配置或執行特定進程。

ansible的語法:
ansible <pattern_goes_here> -m <module_name> -a <arguments>

舉個例子:
ansible webservers -m service -a "name=httpd state=restarted"

一個pattern通常關聯到一系列組(主機的集合) ,如上示例中,所有的主機均在 “webservers” 組中。

不管怎麼樣,在使用Ansible前,我們需事先告訴Ansible哪臺機器將被執行。 能這樣做的前提是需要預先定義唯一的 host names 或者 主機組。

patterns

  • 如下的patterns等同於目標爲倉庫(inventory)中的所有機器:
    all*

  • 也可以寫IP地址或系列主機名:

one.example.com
one.example.com:two.example.com
192.168.1.50
192.168.1.*
  • 如下patterns分別表示一個或多個groups.多組之間以冒號分隔表示或的關係.這意味着一個主機可以同時存在多個組:
webservers
webservers:dbservers
  • 你也可以排隊一個特定組,如下實例中,所有執行命令的機器必須隸屬 webservers 組但同時不在 phoenix組:
webservers:!phoenix
  • 你也可以指定兩個組的交集,如下實例表示,執行命令有機器需要同時隸屬於 webservers 和 staging 組.
webservers:&staging
  • 你也可以組合更復雜的條件:
webservers:dbservers:&staging:!phoenix

上面的例子中:webservers和daservers兩個組中屬於staging但不屬於phoenix組的主機。

  • 同時也可以通配符:
*.example.com
*.com
  • 通配符和組也可以:
one*.com:dbservers
  • 在高級語法中,你也可以在group中選擇對應編號的server:
webservers[0]
  • 或者一個group中的一部分servers:
webservers[0-25]
  • 排除條件--limit,/usr/bin/ansible or /usr/bin/ansible-playbook都支持:
ansible-playbook site.yml --limit datacenter2
  • 如果你想從文件讀取hosts,文件名以@爲前綴即可.從Ansible 1.2開始支持該功能:
ansible-playbook site.yml --limit @retry_hosts.txt
發佈了49 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章