1. 程式人生 > >SaltStack之遠程執行【目標選擇匹配】(六)

SaltStack之遠程執行【目標選擇匹配】(六)

二次 配置 ast error entos argument 重啟 需要 是我

練習內容

Salt遠程執行中目標選擇常用的模式

1.通配符匹配

2.正則表達式匹配

3.List支持

4.Grains匹配

5.IP地址匹配

6.混合匹配

7.Node groups

遠程執行格式如下:

target就是我們要選擇的minion
salt <target> <function> [arguments]
一,通配符匹配,支持minon_id
[root@linux-node1 salt]# salt "*" test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux
-node1 salt]# salt "*node1*" test.ping linux-node1.example.com: True
二,正則表達式,同樣也支持在狀態文件裏面使用
[root@linux-node1 salt]# salt -E "linux-node[0-1].example.com" test.ping
linux-node1.example.com:
    True
[root@linux-node1 salt]# salt -E "linux-node[0-2].example.com" test.ping
linux-node1.example.com:
    True
linux
-node2.example.com: True
三,List支持
[root@linux-node1 salt]# salt -L "linux-node1.example.com,linux-node2.example.com" "test.ping"
linux-node2.example.com:
    True
linux-node1.example.com:
    True
四,Grains匹配
[root@linux-node1 salt]# salt -G os:CentOS test.ping
linux-node1.example.com:
    True
linux
-node2.example.com: True [root@linux-node1 salt]# salt -G cpuarch:x86_64 test.ping linux-node1.example.com: True linux-node2.example.com: True
五,IP地址匹配
root@linux-node1 salt]# salt -S "192.168.56.0/255.255.255.0" test.ping  #註意不支持 255.255.255.0子網掩碼寫法
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received
[root@linux-node1 salt]# salt -S "192.168.56.0/24" test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux-node1 salt]# salt -S "192.168.56.11" test.ping
linux-node1.example.com:
    True
六,混合匹配(不建議使用,看起來有些亂)
[root@linux-node1 salt]# salt -C [email protected] or E@linux-node[0-2].example.com test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
七,Node groups方式需要寫在Master配置文件裏面,並重啟salt-master服務才能生效
nodegroups:
  group1: [email protected],bar.domain.com,baz.domain.com and bl*.domain.com
  group2: G@os:Debian and foo.domain.com
  group3: G@os:Debian and N@group1

總結:

1.混合匹配不建議使用,看起來有些亂

2.List模式在平時維護的時候用的少,但是在二次開發建議用Grains采集到數據,然後select拼接成list再調用後端api去執行

3.控制並發可以使用 batch size,簡寫 -b 如果是1就串行,也支持百分比如 -b 50%

[root@linux-node1 salt]# salt * -b 1 test.ping

Executing run on [linux-node2.example.com]

linux-node2.example.com:
    True
retcode:
    0

Executing run on [linux-node1.example.com]

linux-node1.example.com:
    True
retcode:
    0

百分比使用方法

[root@linux-node1 salt]# salt * -b 50%  test.ping

Executing run on [linux-node2.example.com]

linux-node2.example.com:
    True
retcode:
    0

Executing run on [linux-node1.example.com]

linux-node1.example.com:
    True
retcode:
    0

附:英文參考文檔

https://www.unixhot.com/docs/saltstack/topics/tutorials/modules.html#target

https://www.unixhot.com/docs/saltstack/topics/targeting/index.html

SaltStack之遠程執行【目標選擇匹配】(六)