saltstack php,Saltstack快速入门简单汇总
[root@master~]# salt \* test.ping
minion-1:
True
minion-2:
True
minion-3:
True
minion-4:
True
True代表正常,沒有響應當然代表客戶端沒有啟動或者沒有認證成功之類的。
指定目標主要有五種方式
一: Global,即salt默認的匹配方式,能識別終端常用的通配符,如*代表所有
如,salt '*' test.ping
二: List,列表,需-L指定。
如,salt -L 'foo,bar' test.ping 其中foo,bar是完整的minion_id
三:正則表達式,需-E指定。
如,salt -E 'pre[1-7]' test.ping 會匹配pre1,pre2..pre7,并且匹配到左右minion_id里面含有1-7的,如pre-11,pre7也會匹配到,如果只匹配1-7可使用參照下面
如,salt -E ^pre[1-7]$ test.ping或者 salt pre[1-7] test.ping
四:混合模式,需-C指定。里面可以既有正則表達式也有列表等
salt -C "apache* or E@ngin*" test.ping 匹配所有tomcat開頭,或者mon開頭的
五:分組,需要-N指定,其中組名就是上面/etc/salt/master.d/groups.conf文件里面配置的配置信息。
如,salt -N apache test.ping
然后是模塊,主要介紹state,cmd,cp模塊
注:想了解某個模塊的功能或者具體參數可以
salt \* sys.doc [模塊名,如cmd]
即salt \* sys.doc cmd 就會列出相關操作及示例了
遠程命令執行
遠程命令執行大概是最常用的操作的,比如獲取所有minion端的ip地址,查看同一個目錄下的文件,全部增加一條環境變量到/etc/profile文件里并刷新環境變量等等操作
cmd模塊
主要用此模塊的run方法,即cmd.run
使用方式如下,
salt \* cmd.run 'ls /root'
如上所示,選擇了所有的客戶端,master端用cmd.run模塊,把''里面的'ls /root'命令全部分發下去,其中單引號''也可以用雙引號""代替,引號的作用就是把被引號的命令傳給salt-master,然后master分發給所有的minion執行,上述命令就會列出所有minion端/root目錄下的文件
注:引號里面的命令跟在任何一臺機器上的命令沒有任何區別,唯一的區別就是salt執行的命令默認用的是sh,而我們常用的shell是bash,比如bash中ll是ls –l的別名,而sh里面是沒有做ll的別名的,所以引號里面的命令如果用ll命令會提示找不到此命的
cmd有幾個有用的參數,在可以著重介紹一下
cwd 定義命令所在的目錄,即工作目錄,在哪個目錄執行操作
如:
復制代碼 代碼如下:
Salt \* cmd.run cwd=/opt ‘pwd'
minion-id-1:
/opt
runas,定義執行此條命令的用戶,使用哪個用戶執行這條命令
如:
復制代碼 代碼如下:
Salt \* cmd.run runas=nobody ‘touch /tmp/file'
然后去客戶端就會發現,在/tmp/目錄下有一個file文件,擁有者是nobody
然后就state模塊了
主要用到的幾個方法是sls,highstate,show_sls
在講state模塊的時候首先得了解sls文件。
Sls文件用.sls結尾,放在指定的環境目錄下,即提到的/data/salt/base /data/salt/base/sls或者/data/salt/apache/sls等目錄
注:假如在這兩個目錄下有兩個一樣的sls文件,那么會file_root配置的第一個環境目錄,即
比如環境:
base:
復制代碼 代碼如下:
/data/salt/base
/data/salt/base/sls
會執行/data/salt/base里的sls文件,因為它在前一行
sls文件基本格式如下:
例子一
復制代碼 代碼如下:
/tmp/ttt20:
file.managed:
- source: salt://files/tst
- mode: 700
- backup: minion
- makedirs: True
例子二
復制代碼 代碼如下:
testfile:
file.managed:
- name: /tmp/ttt20
- source: salt://files/tst
- mode: 700
- backup: minion
- makedirs: True
如上所示,其實例子一與例子二是達成了一樣的效果,只不過寫法不一樣
像例子一,因為沒有- name: /tmp/ttt20所以,它會去第一行的標識作為name
,而例子二的testfile可以任意起名,只要不與該文件中的其他標識一樣即可。
上面的例子達到的功能就是,將/srv/salt/files/tst文件復制到客戶端的/tmp/ttt20位置,如果存在則替換,如果已存在且一樣則提示is correct state,即已經是正確的狀態了。
然后就是top.sls
在每個獨立的salt環境下有且只能有一個top.sls文件,這個文件為該環境的入口文件,里面記錄了目標主機對應的sls文件
如:
base:
minion-id-1:
- test1
- test2
minion-id-2:
- test1
- test3
以tomcat-1為例
它匹配了
- test1
- test2
上面一共是一個2個sls配置文件,即匹配該環境下的test11.sls,test2.sls文件
所以在執行state模塊的時候,它會去檢索這些對應的配置文件并執行該配置文件里的內容。
注:在前面提到過,這些參數前面的空格不能用tab鍵補全或者少寫,不然會報錯,再者就是如果配置文件為xxxx.sls 在調用這個配置文件的時候只要寫xxxx,即它的文件名,沒有后綴
以test1為例
復制代碼 代碼如下:
/tmp/testfile.txt:
file.managed:
- source: salt://test.txt
- mode: 700
- user: root
- mode: 644
- makedirs: True
功能就是調用file模塊,將salt://test.txt(其中,salt://對于該環境的file_root目錄,即/data/salt/base)與目標的/tmp/testfile.txt文件做比對,如不一致則更新。
并且此文件的擁有者為root mask碼為644,如果目標文件目錄不存在就創建
現在回到highstate,sls,show_sls方法
執行如下
復制代碼 代碼如下:
salt \* state.sls test
salt \* state.highstate
salt \* state.show_sls test
上面的意思依次是
1.在當前環境下尋找test.sls文件并執行
2.匹配當前環境的top.sls文件所有的sls文件并執行
3.查看當前環境test.sls文件的執行內容,但是不在客戶端執行。
注:上面特別提到了是在當前環境,默認情況下,salt只會查找執行base環境下的sls文件,不會執行其他環境的配置文件,所以在不同環境下,需要指定要執行的配置環境,比如apache環境,只是執行apache的sls文件的話,則需聲明saltenv=apache,如下
網友評論
文明上網理性發言,請遵守 新聞評論服務協議我要評論
立即提交
專題推薦獨孤九賤-php全棧開發教程
全棧 100W+
主講:Peter-Zhu 輕松幽默、簡短易學,非常適合PHP學習入門
玉女心經-web前端開發教程
入門 50W+
主講:滅絕師太 由淺入深、明快簡潔,非常適合前端學習入門
天龍八部-實戰開發教程
實戰 80W+
主講:西門大官人 思路清晰、嚴謹規范,適合有一定web編程基礎學習
php中文網:公益在線php培訓,幫助PHP學習者快速成長!
Copyright 2014-2020 https://www.php.cn/ All Rights Reserved | 蘇ICP備2020058653號-1
總結
以上是生活随笔為你收集整理的saltstack php,Saltstack快速入门简单汇总的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android默认壁纸的历史,Andro
- 下一篇: IDEA GIT 单文件回退到指定版本