saltstack正則匹配主機

2022-08-21 03:36:10 字數 3307 閱讀 7197

語法 | 說明 | 表示式例項 | 完整匹配的字串

:-: | :-: | :-: | :-: | :-:

. | 匹配任意除換行字元"\n"外的字元,在dotall模式中也能匹配換行符 |a.c|abc

\ | 轉移字元,使後乙個字元改變原來的意思,如果字串中有*需要匹配,可使用\*或者字符集[*] |a\.c|a.c

[...] | 字符集,對應的位置可以是字符集中任意字元。|a[bcd]e | abe、ace、ade

\d |數字:0~9 |a\dc|a1c

\d |非數字:[^\d]|a\dc|abc

\s |空白字元:[《空格》\t\r\n\f\v]| a\sc |a c

\s |非空白字元:[^\s]|a\sc |abc

\w |字元[a-za-z0-9]|a\wc|abc

\w |[^\w]|a\wc|ac

以特定字元開頭或結尾的匹配方式:

[root@29-server ~]# salt -e "^minion-.*" test.ping 

minion-one:

true

[root@29-server ~]# salt -e ".*-one$" test.ping

minion-one:

true

[root@29-server ~]# salt -e 'm inio[m, n]-one$' test.ping

minion-one:

true

分組匹配的方式:

[root@29-server ~]# salt -e 'minion-((one)|(other))' test.ping 

minion-one:

true

[root@29-server ~]# salt -e 'minion-(one)?' test.ping

minion-one:

true

有時候,我們只想匹配乙個指定列表裡面的主機並進行遠端執行操作,這時可能全域性匹配方式和正規表示式方式都無法很好地完成任務,這種情況下我們可以直接使用-l選項進行列表匹配。

[root@29-server ~]# salt -l "minion-one, minion-two, minion-three" test.ping 

minion-one:

true

minion-two:

true

minion-three:

true

通常列表匹配的主機都寫在master的配置檔案中,/etc/salt/master中以nodegroups形式出現,包括正則匹配全域性匹配等方式都可以寫在配置檔案中,然後通過分組匹配選項-n加上nodegroups名稱進行匹配。

[root@29-server ~]# cat /etc/salt/master |grep -ve "^$|#"

nodegroups:

testgroup: "minion-one"

[root@29-server ~]# salt -n "testgroup" test.ping

minion-one:

true

我們可以使用grains定位主機:利用-g或—grain:對只是centos的機器進行定位。

[root@29-server ~]# salt -g "os:centos" test.ping

minion-one:

true

定位系統版本是7.6的主機,如下所示。

[root@29-server ~]# salt "minion-one" grains.item osrelease

minion-one:

----------

osrelease:

7.6.1810

[root@29-server ~]# salt -g "osrelease:7.6.1810" test.ping

minion-one:

true

建立兩個自定義的pillar資料

[root@29-server]# tree /srv/pillar/

/srv/pillar/

├── test.sls

└── top.sls

[root@29-server ~]# cat /srv/pillar/top.sls

base:

'*':

- test

[root@29-server ~]# cat /srv/pillar/test.sls

name: wang

role: aaa

[root@29-server ~]# salt '*' pillar.items

minion-one:

----------

name:

wang

role:

aaa

匹配role值是web的主機並執行遠端命令:

[root@29-server ~]# salt -i "name:wang" test.ping

minion-one:

true

復合匹配如下所示,這些匹配方式之間用邏輯運算子進行組合,同時用@符號來規定每部分匹配的型別。這段匹配的含義是匹配所有minion-開頭的並且作業系統是centos且不能以two結尾的主機。

[root@29-server ~]# salt -c 'minion-* and g@os:centos not e@.*-two$' test.ping

minion-one:

true

復合匹配可以混合所有的salt匹配主機方法,以下為官方文件的所有匹配方式。

字母匹配型別示例g

grains glob

g@os:ubuntu

epcre minion id

e@web\d+\(dev|qa|prod)\.loc

pgrains pcre

p@os:(redhat|fedora|centos)

llist of minions

l@agent1,agent2,agent3

ipillar glob

i@pdata:foobar

ssubnet/ ip address

[email protected]/24 or [email protected]/24

rrange cluster

r@%foo.bar

saltstack 主機改名

已存在salt中的機器,為了規範,有時候需要將這批主機改名,但改完名之後,salt是需要清除快取的。操作流程 在master把這批機器剔除 然修改這批機器的主機名 在 etc salt目錄下 用mv把minion id和pki的目錄重新命名 重啟salt minion服務 在mster段能再次監控到...

ansible 主機正則

ansible m a 該功能主要針對inventory的主機列表,案例如下 1 all 全量匹配 說明 匹配所有主機,all或者 號,兩個功能相同,只是 號需要使用雙引號引起來。匹配所有主機 ansible all m pingansible m ping 匹配某個網段 ansible 192.1...

js 正則匹配

isnumber 是否為數字 regexps.isnumber d d isint 是否為整形 regexps.isint d istime 是否為時間格式 regexps.istime d d d s d d d isdate 是否為日期格式 regexps.isdate d d d isemai...