SaltStack 基礎

介     

  SaltStack是基於Python開發的一套C/S架構配置管理工具。它的底層使用ZeroMQ消息隊列pub/sub方式通訊,使用SSL證書籤發的方式進行認證管理。號稱世界上最快的消息隊列ZeroMQ使得saltstack能工快速在成千上萬臺機器上進行操做,並且使用RSA Key方式確認身份,傳輸採用AES加密,安全性高。
     在傳統的C/S架構中,客戶端發送請求給服務器端,服務器端接收到請求而且處理完後再返回給客戶端。在SaltStack架構中不只有傳統的C/S架構服務模式,並且有消息隊列中的發佈與訂閱(pub/sub)服務模式。通常
使用C/S架構進行配置管理。
     在Master和Minion端都是以守護進程的模式運行,一直監聽配置文件裏面定義的re_port(接受minion請求)和publish_port(發佈消息)的端口。當Minion運行時會自動鏈接到配置文件裏Master的ret_port端口進行鏈接
認證。默認客戶端請求id是socket.getfqdn()取到的值,也能夠修改minion配置文件。
     Master 4505端口:ZeroMQ的publish_port(發佈消息);
                 4506端口:接受minion消息請求。
     
     Masterless架構,若是採用Masterless架構,就不須要單獨安裝一臺Master機器。只須要在每臺機器上安裝Minion,而後採用本機只負責對本機的配置管理工做機制服務模式。
 
 
saltstack 運行方式:
  1. Local (本地運行,單機)
  2. Master/Minion
  3. Salt ssh(不安裝agent,經過ssh 協議來管理)
  4. 多master(配置多個master)
 
saltstack 三大功能:
  1. 遠程執行
  2. 配置管理
  3. 雲管理 salt-cloud

 安裝:

 

Master 端命令

# rpm -ql salt-master
/etc/salt/master         # salt-master 主配置文件
/etc/salt/master.d       # salt-master 擴展配置文件目錄
/etc/salt/pki/master     # master key
/usr/bin/salt            # master 核心命令
/usr/bin/salt-cp         # salt 文件傳輸命令
/usr/bin/salt-key        # salt 證書管理命令
/usr/bin/salt-master     # salt-master 服務命令(start,stop,restart)
/usr/bin/salt-run        # salt-master runner命令
/usr/bin/salt-unity

(1)salt 命令html

  在命令能夠經過salt -h 獲取全部參數解釋,這裏主要介紹一些經常使用參數。node

Options:
    --version           #查看saltstack程序的版本號
    --versions-report   #查看SaltStack程序以及依賴包的版本號
    -h                  #查看幫助信息
    -c CONFIG_DIR ,--config-dir=CONFIG_DIR #指定配置文件目錄(默認是/etc/salt/)
    -t TIMEOUT, --timeout=TIMEOUT           #指定超時時間(默認是5秒)
    --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 (mysql/redis), 將執行結果存儲到mysql/redis,須要在配置文件中指定地址帳號密碼等
    -d, --doc                        #查看指定模塊或者全部模塊文檔
    --args-separator=ARGS_SEPARATOR  #設置多個傳參指定分隔符(同時執行多個模塊)
    --summary                        #顯示彙總信息
    --username=USERNAME              #指定外部認證用戶名
    --password=PASSWORD              #指定外部認證密碼
salt 命令參數

(2)salt-key 命令mysql

  在master端管理minion key。正則表達式

Options:
    -l ARG, --list=ARG  # 顯示指定狀態的key(支持正則)
    -L, #顯示全部public keys
    -a   # 接受指定等待的key(支持正則)
    -A      # 接受全部等待認證的key
    -r key  # 拒絕指定等待認證的key(支持正則)
    -R   # 拒絕全部
    --include-all # 顯示全部狀態的key(包含non-pending狀態)
    -p key # 打印指定key(支持正則),顯示key內容
    -P     # 打印全部key
    -d key # 刪除指定key
    -D     # 刪除全部key 
    -f key # 顯示指定key的指紋信息(支持正則)
    -F     # 顯示全部key的指紋信息
salt-key 命令參數

 

Minion 客戶端命令

# rpm -ql salt-minion
/etc/salt/minion          # 主配置文件
/etc/salt/minion.d        # 擴展配置文件目錄
/etc/salt/pki/minion      # key
/etc/salt/proxy         
/usr/bin/salt-call        # salt minion 端主命令,相似於master端的salt 
/usr/bin/salt-minion      # salt minion 服務命令
/usr/bin/salt-proxy

(1)salt-callredis

  客戶端主要命令。sql

Options:
    --version         # 查看SaltStack程序的版本號
    --versions-report # 查看SaltStack程序以及依賴包的版本號
    -h, --help        # 幫助信息
    -c CONFIG_DIR     # 指定配置文件目錄(默認/etc/salt/)
    --hard-crash      # 捕捉到original異常不退出(默認關閉)
    -g                # 返回的信息生成grains
    -m MODULE_DIRS    #指定自定義模塊目錄
    -d                #查看指定模塊全部模塊文檔
    --master=MASTER   # 指定saltstack MASTER
    --return=RETURNER # 指定return
    --local           # 運行masterless模式(不須要master端,只對本機負責的一種工做機制)
    --file-root=FILE_ROOT      # 指定file-root目錄
    --pillar-root=PILLAR_ROOT  # 指定pillar-root目錄
    --retcode-passthrough      # 顯示salt-call命令返回狀態
    --id=ID           # 指定一個minion ID
    --metadata        # 打印metadata信息
    --skip-grains     # 不加載grains信息
    --refresh-grains-cache     # 強制刷新grains信息
salt-call 命令參數

Master 端匹配minion 方式

  在SaltStack系統中的管理對象叫作Target。簡寫: tgt安全

(1)正則表達式服務器

# 正則表達式匹配的是 Minion端的 ID 值
salt -E 'min*' test.ping

(2)list 列表匹配架構

# 列表匹配也是匹配的Minion端的 ID 值
salt -L minion1,minion2 test.ping
salt -L minion1, test.ping
salt -L minion1 test.ping

(3)Grains 匹配less

# 經過minions的grains item 來匹配
salt -G 'os:CentOS' test.ping

(4)組匹配

# 經過對minion分組,對整個組進行匹配,操做,groups是組名
# 組是須要人爲劃分的
salt -N groups test.ping

(5)複合匹配

# 複合匹配支持使用and和or關聯多個條件
salt -C 'G@os:Centos or L@Minion1' test.ping

(6)Pillar值匹配

# key:value 是Pillar系統中定義的一組鍵值對,跟Grains的鍵值對相似。
salt -I 'key:value' test.ping

(7)CIDR匹配

#  經過一個指定的CIDR網段,這裏CIDR匹配的IP地址是Minion鏈接Master 4505端口的來源地址
salt -S '192.168.1.0/24' test.ping

 

對Minions 進行分組

     經過對minion id 進行分組,能夠經過組這個概念來批量操做受控主機。分組信息默認保存在 /etc/salt/master。能夠經過建立子配置文件的方式來修改存放分組信息的文件。在master的主配置文件中有include配置文件(子配置文件)的設定: default_include: master.d/*.conf , 目錄和文件都須要本身來建立。這樣能夠避免直接操做Master主配置文件 。

分組語法:

  

注意:分組語法與匹配相似,注意區分。匹配中可使用and, or 及not等boolean 型操做。

分組配置文件示例

# /etc/salt/master.d/group.conf

nodegroups:
  group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
  group2: 'G@os:Debian and foo.domain.com'
  group3: 'G@os:Debian and N@group1'
  group4:
    - 'G@foo:bar'
    - 'or'
    - 'G@foo:baz

  分組後記得須要重啓salt-master,才能加載新的分組信息。

Salt 批處理執行方式

# 每次同時執行10臺執行,就是每10臺一組執行cmd.run
[root@salt-master ~]# salt '*' -b 10  cmd.run 'whoami'

Executing run on ['salt-master ']

salt-master :
    root
jid:
    20171222160450456555
retcode:
    0
相關文章
相關標籤/搜索