自動化運維工具SaltStack --- 分組(使用記錄,groups)

在使用 SaltStack 對主機進行批量管理的時候,因爲不同的服務器組所做的業務功能不同,因此爲了更加方便的管理,勢必要對主機進行分組管理。

因此就自己在分組使用的過程中有以下一點記錄下。

參考 SaltStack 的官方文檔 4.4 Compound matchers 和 4.3. Node groups 知道,對目標服務器分組有以下七種方式,這七種方式的標示符分別爲:

  1. G -- 針對 Grains 做單個匹配,例如:G@os:Ubuntu
  2. E -- 針對 minion 針對正則表達式做匹配,例如:E@web\d+.(dev|qa|prod).loc
  3. P -- 針對 Grains 做正則表達式匹配,例如:P@os:(RedHat|Fedora|CentOS)
  4. L -- 針對 minion 做列表匹配,例如:[email protected],minion3.domain.com or bl*.domain.com
  5. I -- 針對 Pillar 做單個匹配,例如:I@pdata:foobar
  6. S -- 針對子網或是 IP 做匹配,例如:[email protected]/24 or [email protected]
  7. R -- 針對客戶端範圍做匹配,例如: R@%foo.bar

然後我自己在做分組的時候,嘗試了下 L 是否可以使用正則表達式

嘗試一:

   nodegroups:
    #  group1: '[email protected],bar.domain.com,baz.domain.com and bl*.domain.com'
    #  group2: 'G@os:Debian and foo.domain.com'
       TEST1: 'L@JF1-TEST1-001,JF1-TEST1-002,JF-TEST1-0[0-9][0-9]'

執行命令 sudo salt -N TEST1 test.ping結果爲:

JF1-TEST1-002:
    True
JF1-TEST1-001:
    True

只會出現兩臺服務器,後面的不能匹配。

嘗試二:

nodegroups:
    #  group1: '[email protected],bar.domain.com,baz.domain.com and bl*.domain.com'
    #  group2: 'G@os:Debian and foo.domain.com'
       TEST1: 'L@JF1-TEST1-001,JF1-TEST1-002 or JF-TEST1-0[0-9][0-9]'

執行命令 sudo salt -N TEST1 test.ping結果爲:

JF1-TEST1-002:
    True
JF1-TEST1-001:
    True
JF1-TEST1-003:
    True
JF1-TEST1-004:
    True
JF1-TEST1-006:
    True
JF1-TEST1-005:
    True

結果是所有的都匹配成功了

嘗試三

nodegroups:
    #  group1: '[email protected],bar.domain.com,baz.domain.com and bl*.domain.com'
    #  group2: 'G@os:Debian and foo.domain.com'
       TEST1: 'L@JF-TEST1-0[0-9][0-9]'

執行結果爲:

No minions matched the target. No command was sent, no jid was assigned.

表示沒有匹配到任何一個

結論

使用 L 列表的方式,必須把 minion 列出來,或者是列出幾臺後,在後面接 or 或者 and 表達式, or 或者 and 後面接的表達式後面可以使用正則表達式。

注:想使用正則表達式,最好的方式就是使用 E

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章