saltstack安裝部署

saltstack安裝部署

1、saltstack簡介

1.簡單介紹

  saltstack是基於python開發的一套C/S架構配置管理工具,它的底層使用ZeroMQ消息隊列pub/sub方式通訊,使用SSL證書籤發的方式進行認證管理。ZeroMQ使SaltStack能快速在成千上萬臺機器上進行各類操做,並且採用RSA Key方式確認身份,傳輸採用AES加密,使傳輸的安全性獲得保障。
  saltstack是基於C/S架構的服務模式,服務器端叫作Master,客戶端叫做Minion,而且有消息隊列中的發佈與訂閱(pub/sub)服務模式,minion與master之間經過ZeroMQ消息隊列通訊。Master和Minion端都以守護進程的模式運行,一直監聽配置文件裏面定義的ret_port也就是4506端口(接收minion請求)和publish_port也就是4505端口(ZMQ的發佈消息)。當minion運行時會自動鏈接到配置文件裏面定義的Master地址ret_port端口進行鏈接認證。node

2.通訊模型

  Salt使用發佈 - 訂閱模式與受管系統進行通訊。 鏈接由Salt minion發起,這意味着你不須要在這些系統上打開任何傳入端口(從而減小攻擊向量)。 Salt master使用端口4505和4506,必須打開端口才能接收訪問鏈接。
python

  Publisher (端口4505)全部Salt minions都須要創建一個持續鏈接到他們收聽消息的發佈者端口。 命令是經過此端口異步發送給全部鏈接,這使命令能夠在大量系統上同時執行。正則表達式

  Request Server (端口4506)Salt minions根據須要鏈接到請求服務器,將結果發送給Salt master,並安全地獲取請求的文件或與特定minion相關的數據值(稱爲Salt pillar)。 鏈接到這個端口的鏈接在Salt master和Salt minion之間是1:1(不是異步)。數據庫

3.Salt minion認證

  當minion第一次啓動時,它會在網絡中搜索一個名爲salt的系統(儘管這能夠很容易地更改成IP或不一樣的主機名)。 當發現時,minion發起握手,而後將公鑰發送給Salt master。
  在初始鏈接以後,Salt minions的公鑰存儲在服務器上,而且必須使用salt-key命令(或經過某種自動機制)在Salt master上接受。 這多是讓新用戶混淆的緣由,由於Salt不會提供解密消息所需的安全密鑰,直到Salt minions的公鑰被接受(這意味着Salt minions在被接受其密鑰以前不會運行任何命令)。
  在minion密鑰被接受後,Salt主機會返回其公鑰以及旋轉的AES密鑰,該密鑰用於加密和解密由Salt master發送的消息。 返回的AES密鑰使用Salt minion最初發送的公鑰進行加密,所以只能由該Salt minion解密。json

2、saltstack安裝

1.下載yum源
wget -P /etc/yum.repos.d https://mirrors.aliyun.com/saltstack/yum/redhat/7.2/x86_64/saltstack-rhel7.repo安全

2.在master端安裝
yum -y install salt-master服務器

3.在minion端安裝
yum -y install salt-minion網絡

3、saltstack的配置

master端
在 /etc/salt/master下添加
master: 192.168.1.3
user: root
service salt-master start 啓動

minion端
在/etc/saltminion下添加
#這裏要指向salt-master服務器,能夠是IP,也能夠是域名,也能夠是主機名,不過主機名就要寫/etc/hosts了,若是用的是內部DNS服務器的話能夠用主機名或者域名的形式。
master: 192.168.1.3 
user: root
id: agent1
service salt-minion start

注意Salt master的管理命令須要系統root權限才能執行,須要在執行命令時使用sudo或直接切換爲root用戶。
查看全部的密鑰架構

[root@localhost]# sudo salt-key --list-all  # salt-key -L 
Accepted Keys:
agent1
Denied Keys:
Unaccepted Keys:
Rejected Keys:

接受一個指定密鑰
salt-key --accept=<key>app

接受全部密鑰
salt-key --accept-all

測試

[root@localhost]# sudo salt '*' test.ping
agent1:
    True
    
注:
master 祕鑰對默認存儲在/etc/salt/pki/master/master.pub  /etc/salt/pki/master/master.pem
master 端認證的公鑰存儲在:/etc/salt/pki/master/minions/
minion 祕鑰對默認存儲在/etc/salt/pki/minion/minion.pub  /etc/salt/pki/minion/minion.pem
minion 存放的master公鑰/etc/salt/pki/minion/minion_master.pub
minion_id 默認存儲在/etc/salt/minion_id #?

salt命令詳解

salt "*" sys.list_modules   # 查看全部模塊

# salt -h
Usage: salt [options] '<target>' <function> [arguments]

Options(選項):

      --version : 查看saltstack軟件的版本號。

      --versions-report : 查看saltstack軟件以及依賴包的版本號。

      -h, --help : 查看幫助信息。

      --saltfile=SALTFILE:指定saltfile的路徑。 若是沒有經過,將在當前工做目錄中搜索一個。

      -c CONFIG_DIR, --config-dir=CONFIG_DIR:指定配置文件的目錄(默認是/etc/salt/)。

      -t TIMEOUT, --timeout=TIMEOUT:指定超時時間默認是5秒。

      --hard-crash:捕捉到original異常不退出默認關閉。

      -s, --static:以組的形式返回全部minion的數據。

      -p, --progress:顯示進度圖,須要progressbar的python包。

      --failhard :在第一個執行錯誤返回以後中止批處理。

      --async : 異步執行。

      --subset=SUBSET : 對目標minions的隨機子集執行程序. minions在執行前會先驗證是否存在該命名的函數,再去執行

      -v, --verbose : 打開命令詳細,顯示jid和活動的工做查詢

      --hide-timeout : 隱藏超時時間。

      --show-jid : 顯示任務的jid。

      -b BATCH, --batch=BATCH, --batch-size=BATC : 按照百分比執行任務。

      -a EAUTH, --auth=EAUTH, --eauth=EAUTH, --external-auth=EAUTH : 指定外部認證方式。

      -T, --make-token : 生成master token.

      --return=RETURNER : 設置一種替代方法。 默認狀況下,salt將從命令將返回數據發送回主服務器,但返回數據能夠重定向到任意數量的系統,數據庫或應用程序。

      --return_config=RETURNER_CONF : 指定命令返回的設置文件。

      -d, --doc, --documentation : 查看指定模式或全部模塊文檔。

      --args-separator=ARGS_SEPARATOR :   指定發送命令跟命令參數的分隔符,當用戶想把一個命令看成參數發送給另外一個命令執行時。

      --summary :  顯示彙總信息。

      --username=USERNAME : 指定外部認證的用戶名。

      --password=PASSWORD :  指定外部認證的密碼。

      --metadata=METADATA :  將元數據傳遞給Salt,用於搜索做業。

Logging Options(日誌相關參數):

      -l LOG_LEVEL, --log-level=LOG_LEVEL : 指定日誌級別。

      --log-file=LOG_FILE : 指定日誌記錄文件

      --log-file-level=LOG_LEVEL_LOGFILE : 日誌文件日誌記錄級別。'all', 'garbage', 'trace', 'debug', 'info', 'warning', 'error','critical', 'quiet'. 默認: 'warning'.

Target Options(目標選擇選項):

      -E, --pcre : 正則匹配

      -L, --list:  列表匹配,目標表達式將被解釋爲以逗號分隔的列表。

      -G, --grain:  grains匹配。

      --grain-pcre :grains加正則匹配。

      -N, --nodegroup:組匹配。

      -R, --range:範圍匹配。

      -C, --compound : 綜合匹配(指定多個匹配,空格隔開)。

      -I, --pillar : pillar值匹配。

      -J, --pillar-pcre : pillar加正則匹配。

      -S, --ipcidr : minions網段地址匹配。

Output Options(輸出參數):
      --out=OUTPUT, --output=OUTPUT : 使用指定的輸出器從'salt'命令打印輸出。 內置的是 'key', 'yaml',  'overstatestage', 'newline_values_only', 'pprint',  'txt', 'raw', 'virt_query', 'compact', 'json', 'highstate', 'nested', 'quiet', 'no_return'.

      --out-indent=OUTPUT_INDENT, --output-indent=OUTPUT_INDENT :   在空格中打印由提供的值縮進的輸出。 負值禁用縮進。 僅適用於支持縮進的輸出器。

      --out-file=OUTPUT_FILE, --output-file=OUTPUT_FILE : 輸出到指定文件。

      --out-file-append, --output-file-append :  輸出附加到指定的文件。

      --no-color, --no-colour :  關閉全部的顏色顯示。

      --force-color, --force-colour : 強制輸出顏色顯示。

      --state-output=STATE_OUTPUT, --state_output=STATE_OUTPUT : 覆蓋配置的state_output值輸出,指定state格式(full, terse, mixed, changes or filter)輸出,默認值是full。

salt-key命令詳解
# salt-key -h

Actions:
     -l ARG, --list=ARG:顯示指定狀態的key(支持正則表達式)

     -L, --list-all :列出全部公鑰。"--list all"已經棄用。

     -a ACCEPT, --accept=ACCEPT: 接受指定的公鑰(除了掛起的密鑰以外,使用--include-all匹配拒絕的密鑰),支持正則表達式。

     -A, --accept-all :接收全部等待認證的key。

     -r REJECT, --reject=REJECT :拒絕指定等待認證的key(支持正則表達式)

     -R, --reject-all:拒絕全部等待認證的key。

     --include-all: 顯示全部狀態的key。

     -p PRINT, --print=PRINT :打印指定的公鑰支持正則表達式。

     -P, --print-all:打印全部的公鑰。

     -d DELETE, --delete=DELET:刪除指定的key。

     -D, --delete-all:刪除全部的key。

     -F, --finger-all:顯示全部key的指紋信息。
查找模塊
salt '*' -d|grep ":" |grep disk

查找某個模塊擁有的方法
salt 'agent1' sys.list_functions test
相關文章
相關標籤/搜索