saltstack(三):SaltStack遠程執行

1.1  saltStack遠程執行—SaltStack基本語法和操作

salt <clients> module.method 'cmd'

例: 在所有客户端上執行uptime命令

salt 教程 容器_SaltStack

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 教程 容器_SaltStack_02

salt 教程 容器_linux_03

批處理

可用於重啓所有主機或進程場景,百分比或固定數量的一點一點重啓主機或進程

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(寫入數據庫)