用途
Saltstack目前最主要的三大主要功能
· 遠端執行
· 配置管理
· 雲管理
實際
通過Saltstack批量執行系統指令,包括系統重新開機,檢視系統負載,添加/删除使用者等等
salt
Saltstack的三種運作方式
· Local
· Master/Minion
· Salt SSH
Saltstack最傳統的運作方式還是C/S模式,需要在被管理節點上安裝Minion用戶端;其實Saltstack也支援SSH方式,無需安裝Agent,通過SSH實作管理
複習上次的東西
1.想檢視saltstack具體程序,可以安裝一個python-setproctitle庫
2.salt-key -a saltstack-node1.lichengbing.com # -a認證參數
3.遠端執行
salt '*' cmd.run 'w'
遠端指令執行(cmd子產品),格式:salt 'client配置的id' 子產品.方法 '指令參數' (其中'*'表示所有的client)
4.分組
nodegroups:
mysql: 'cm1'
5.salt key相關指令總結
salt-key list 檢視已經認證或未認證的用戶端id,Accepted Keys為已認證清單,Unaccepted Keys為未認證的清單,Rejected Keys為拒絕的清單。
salt-key -a id 認證單個主機id證書請求。
salt-key -A 認證所有主機id證書請求。
salt-key -d id 删除單個主機id證書。
salt-key -D 删除所有認證主機id證書。
6.遠端批量傳輸檔案(salt-cp指令)
salt-cp '*' /mnt/aa /opt/
7.操作目标
-E:--pcre 通過正規表達式進行比對
salt -E '^minion-192-168*' test.ping
-L:--list 以主機id名清單的形式進行過濾,格式與Python的清單相似,即不同主機id名稱使用逗号分隔
salt -L 'minion-192-168-1-102,minion-192-168-1-118' grains.item osfullname
-G:--grain 根據被控主機的grains資訊(grains是saltstack重要元件之一,重要作用是收集被控主機的基本系統資訊)進行比對過濾,格式為'<grain value>:<glob expression>'
salt -G 'osrelease:6.8' cmd.run 'python -V'
-I:--pillar 根據被控主機的pillar(作用是定義與被控主機相關的任何資料,定義好的資料可以被其他元件使用)資訊進行過濾比對,格式為'對象名稱:對象值',比如過濾所有具備'apache:httpd' pillar值的主機。
salt -I 'nginx:root:/data' test.ping
-N:--nodegroup 根據主要端master配置檔案中的分組名稱進行過濾。
web1group: 'L@minion-192-168-1-102,minion-192-168-1-118' //前面空兩格,冒号後面空一格
web2group: 'L@minion-192-168-1-102'
其中:
L@ 表示後面的主機id格式為清單,即主機id以逗号隔開;
G@ 表示以grain格式描述;
S@ 表示以ip子網或位址格式描述
f)-C:--compound 根據條件運算符not、and、or去比對不同規則的主機資訊
salt -C 'E@^minion-192-168* and G@os:Centos' test.ping
g)-S:--ipcidr 根據被控主機的ip位址或ip子網進行比對
salt -S 192.168.0.0/16 test.ping
Saltstack常用子產品及API
https://docs.saltstack.com/en/latest/ref/modules/all/index.html
salt '*' sys.list_modules
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*','test.ping')
print ret
a)Archive子產品
salt '*' archive.gunzip /tmp/wangshibo.gz
解壓預設放到被控制機的目前使用者家目錄(即/root)路徑下
salt '*' archive.tar zxf /mnt/nginx-1.9.7.tar.gz
将被控制機的/mnt/huihui打包到/opt下的huihui.tar.bz2
[root@linux-node1 ~]# salt '*' archive.tar jcf /opt/test.huihui.bz2 /mnt/huihui
自動化運維Saltstack系列(二)之遠端執行和常用子產品
saltstack自帶子產品參考:https://www.unixhot.com/docs/saltstack/contents.html
sys.doc = man
salt 'saltstack-node1*' sys.list_functions cmd
salt 'saltstack-node1*' sys.doc cmd.run
将master file_roots下的目錄拷貝到minion
salt 'saltstack-node1*' cp.get_dir salt://base/ minion/dest
salt 'saltstack-node2*' cp.get_url http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm /tmp/1
salt '*' cron.raw_cron root
salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly
salt '*' cron.rm_job root '*' '*' '*' '*' 1 /usr/local/weekly
salt '*' file.chown /etc/passwd root root
salt '*' file.directory_exists /etc
salt '*' file.stats /etc/passwd
salt '*' file.get_mode /etc/passwd
salt '*' file.mkdir /opt/test
salt '*' file.remove /opt/test
salt '*' file.touch /tmp/test.txt
salt '*' file.append /tmp/test.txt "10000"
salt '*' file.sed /tmp/test.txt "10000" "1"
salt '*' file.get_sum /etc/passwd md5
有檔案,檔案夾,定時任務,拷貝,網絡,pkg子產品,service子產品
還有以下
user(系統使用者子產品)
group(系統組子產品)
partition(系統分區子產品)
puppet(puppet管理子產品)
system(系統重新開機、關機子產品)
timezone(時區管理子產品)
nginx(Nginx管理子產品)
iptables(被控主機iptables支援子產品)
mount(檔案系統挂載子產品) 等等...
自定義子產品
vim /etc/salt/master
file_roots:
base:
- /srv/salt/base
mkdir /srv/salt/base/_modules
vim my_disk.py
def list():
cmd = 'df -h'
ret = __salt__['cmd.run'](cmd)
return ret
salt '*' saltutil.sync_modules
salt '*' my_disk.list
本文轉自 liqius 51CTO部落格,原文連結:http://blog.51cto.com/szgb17/1914622,如需轉載請自行聯系原作者