saltstack(三):SaltStack遠程執行
1.1 saltStack遠程執行—SaltStack基本語法和操作
salt <clients> module.method 'cmd'
例: 在所有客户端上執行uptime命令
salt命令
--version 查看 SaltStack 程序的版本號
--versions-report 查看 SaltStack 程序以及依賴包的版本號
-h, --help 查看幫助信息
-c CONFIG_DIR, --config-dir=CONFIG_DIR 指定配置文件目錄
-t TIMEOUT, --timeout=TIMEOUT 指定 Timeout 時間 ( 默認是 5s)
--hard-crash 捕捉到 original 異常不退出 ( 默認關閉
-s, --static 以組的形式返回所有 Minion 的數據
--async 異步執行
-v, --verbose verbose 模式
--show-timeout 顯示 minion timeout 狀態
--show-jid 顯示任務 jid
-b BATCH, --batch=BATCH 按照百分比執行任務
-a EAUTH, --auth=EAUTH, --eauth=EAUTH, --external-auth=EAUTH
指定外部認證方式
-T, --make-token 生成 Master token
--return=RETURNER 指定 SaltStack return
-d, --doc 查看指定模塊或者所有模塊文檔
--args-separator=ARGS_SEPARATOR 設置多個傳參直接分隔符
--summary 顯示彙總信息
--username=USERNAME 指定外部認證用户名
--password=PASSWORD 指定外部認證密碼
Target Options:
-E, --pcre 正則匹配
-L, --list 列表匹配
-G, --grain grains 匹配
--grain-pcre grains 加正則匹配
-N, --nodegroup 組匹配
-R, --range 範圍匹配
-C, --compound 綜合匹配 ( 指定多個匹配 )
-I, --pillar pillar 值匹配
salt minion配置常用選項説明
master:指定master主機(默認salt)
master_port:指定認證和執行結果發送到master的哪個端口,與master配置文件中的ret_port對應,默認為4506
id:指定minion的表示,salt內部使用id作為表示(默認為主機名)
user:指定運行minion的用户,推薦使用root(默認root)
cache_job:minion是否緩存執行結果(默認false)
backup_mode:在文件操作(file.managed或file.recurse)時,如果文件發送改變,指定備份目標,備份在cachedir/file_backups目錄下,以原始文件名+時間戳命名(默認disable)
providers:指定模塊對應的providers
renderer:指定配置管理系統中的渲染器(默認yaml_jinja)
file_client:指定file client默認去哪裏尋找文件(默認remote)
loglevel:指定日誌級別(默認為warning)
tcp_keepalive:minion是否與master報錯keepalive檢查,zeromq3以下版本存在bug,建議升級到3以上版本(默認為true)
1.2 saltstack遠程執行—選擇目標
1.2.1 和minion_ID相關的
指定具體的minion ID
salt 'pe-db' test.ping
通配符
salt '*' test.ping
salt 'linux-node2*' test.ping
salt 'linux-node[1|2].example.com' test.ping
salt 'linux-node[1-2].example.com' test.ping
salt 'linux-node[!2].example.com' test.ping
salt 'linux-node?.example.com' test.ping
列表
salt -L 'linux-node1.example.com,linux-node2.example.com' test.ping
正則表達式
salt -E 'linux-(node1|node2)*' test.ping
salt -E 'linux-(node1|node2).example.com' test.ping
salt -E 'web1-(prod|devel)' test.ping
#top.sls
base:
'web1-(prod|devel)':
- match: pcre
- webserver
備註: 所有匹配目標的方式,都可以用到top file裏面來指定目標。
minion ID設置方案:IP地址、根據業務來進行設置
#例:
redis-node1-redis04-idc04-h5web.example.com
redis-node1 # redis第一個節點
redis04 # 集羣
idc04 # 機房
h5web # 業務線
1.2.2 和minion_ID無關的
IP地址、子網
salt -S 192.168.137.12 test.ping
salt -S 192.168.137.0/24 test.ping
分組
需要配置master文件,重啓systemctl restart salt-master
vim /etc/salt/master
編輯master主配置文件添加分組
|
letter |
含義 |
例子 |
|
G |
Grains glob匹配 |
G@os:Centos |
|
E |
PCRE正則匹配minion_id |
E@web\d+\.(dev|qa|prod)\.loc |
|
P |
PCRE正則匹配Grains |
P@os:(RedHat|Centos) |
|
L |
minion_id列表 |
L@vas01,vas02,vas03 |
|
I |
pillar glob匹配 |
I@pdata:foobar |
|
S |
子網/ip地址匹配 |
S@192.168.1.0/24 or S@192.168.1.100 |
|
R |
Range cluster匹配 |
R@%foo.bar |
|
D |
minion data匹配,需要定義data |
D@key:value |
|
N |
組+組匹配 |
N@group1 or N@group2 |
批處理
可用於重啓所有主機或進程場景,百分比或固定數量的一點一點重啓主機或進程
salt '*' -b 10 test.version #一次10台
salt -G 'os:RedHat' --batch-size 25% apache.signal restart #一次處理25%
1.3 saltstack遠程執行—執行模塊
官網文檔 https://docs.saltstack.com/en/latest/ref/modules/all/index.html#all-salt-modules
列出salt所有模塊,以及如何使用的幫助文檔
通過yum默認安裝salt所有模塊存放路徑 /usr/lib/python2.7/site-packages/salt/modules(centos 7)
salt '*' network.active_tcp # 列出所有主機運行的tcp連接
salt '*' network.arp # 列出所有主機arp
salt '*' service.available sshd # 列出所有主機sshd
salt '*' service.get_all # 列出所有主機的所有運行服務
salt '*' service.status sshd # 列出所有主機sshd運行狀態
salt-cp '*' /etc/hosts /tmp/test # 將master上/etc/hosts文件拷貝到所有主機的/tmp/test
salt '*' state.show_top # 查看top
salt '*' state.single pkg.installed name=lsof # 所有主機安裝lsof
1.4 saltstack遠程執行—執行返回
查看saltstack(十二):saltstack輸出處理—Saltstack job cache(寫入數據庫)