語法 | 說明 | 表示式例項 | 完整匹配的字串
:-: | :-: | :-: | :-: | :-:
. | 匹配任意除換行字元"\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...