saltstack是基於python開發的一套C/S架構配置管理工具,它的底層使用ZeroMQ消息隊列pub/sub方式通訊,使用SSL證書籤發的方式進行認證管理。ZeroMQ使SaltStack能快速在成千上萬臺機器上進行各類操做,以前已經介紹過了puppet mco的框架,比較相似。並且採用RSA Key方式確認身份,傳輸採用AES加密,使傳輸的安全性獲得保障。node
saltstack是基於C/S架構的服務模式,服務器端叫作Master,客戶端叫做Minion,而且有消息隊列中的發佈與訂閱(pub/sub)服務模式,minion與master之間經過ZeroMQ消息隊列通訊。Master和Minion端都以守護進程的模式運行,一直監聽配置文件裏面定義的ret_port也就是4506端口(接收minion請求)和publish_port也就是4505端口(ZMQ的發佈消息)。當minion運行時會自動鏈接到配置文件裏面定義的Master地址ret_port端口進行鏈接認證。python
以下圖(salt-master端的4505和4506端口,被兩個客戶端(192.168.1.102,192.168.1.104)所鏈接。):mysql
第一步:salt stack的master與minion之間經過ZeroMq進行消息傳遞,使用了ZeroMq的發佈-訂閱模式,鏈接方式包括tcp,ipc。
第二步:salt命令,以ls查看爲例,將cmd.run ls命令從salt.client.LocalClient.cmd_cli發佈到master,獲取一個Jobid,根據jobid獲取命令執行結果。
第三步:master接收到命令後,將要執行的命令發送給客戶端minion。
第四步:minion從消息總線上接收到要處理的命令,交給minion._handle_aes處理。
第五步:minion._handle_aes發起一個本地線程調用cmdmod執行ls命令。線程執行完ls後,調用minion._return_pub方法,將執行結果經過消息總線返回給master。
第六步:master接收到客戶端返回的結果,調用master._handle_aes方法,將結果寫的文件中。
第七步:salt.client.LocalClient.cmd_cli經過輪詢獲取Job執行結果,將結果輸出到終端。git
saltstack對於python版本和python模塊有必定的要求。web
Python | 版本大於2.6或版本小於3.0 |
msgpack-python | saltstack消息交換庫 |
YAML | saltstack配置解析定義語法 |
Jinja2 | saltstack states配置模板 |
MarkupSafe | Python unicode轉換庫 |
apache-libcloud | saltstack對雲架構編排庫 |
Requests | HTTP Python庫 |
ZeroMQ | saltstack消息系統 |
pyzmq | ZeroMQ Python庫 |
PyCrypto | Python密碼庫 |
M2Crypto | Openssl Python包裝庫 |
官網地址:https://docs.saltstack.com正則表達式
Centos服務器安裝地址:https://repo.saltstack.com/#rhelsql
若是是Centos7系統: yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpmdocker
若是是Centos6系統: yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm數據庫
或者直接編寫一個源文件:apache
# cat /etc/yum.repos.d/salt-latest.repo
[salt-latest]
name=SaltStack Latest Release Channel for RHEL/Centos $releasever
baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest/SALTSTACK-GPG-KEY.pub
#yum install salt-master -y
#yum install salt-minion -y
#yum install salt-ssh -y
#yum install salt-syndic -y
#yum install salt-cloud -y
#yum install salt-api -y
#yum install salt-minion -y
這裏先保持默認配置直接啓動服務,後面再涉及到配置文件的修改。
# service salt-master restart
# cat /etc/salt/minion #修改配置文件(注意每一個冒號後面都要跟一個空格,這是書寫規範)
master: 192.168.1.101 #這裏要指向salt-master服務器,能夠是IP,也能夠是域名,也能夠是主機名,不過主機名就要寫/etc/hosts了,若是用的是內部DNS服務器的話能夠用主機名或者域名的形式。
id: zwidc_kvm_192.168.1.104 #這裏定義後,master認證證書那裏就以這個名稱爲主,默認這裏是註釋狀態。我的比較偏向這裏設置,由於機器衆多外加主機業務的變化,我想這裏的標識能夠在初始化機器的時候就設置好而不受主機名以及主機名變化的影響,由於通常IP和機器類型和機器所在的機房是很難變化的,因此這裏不設置的那麼細化,方便管理工具的部署和管理。
注(這裏有一個坑):
#上面這個圖不陌生,這是編寫puppet的時候的主機名,如今要搞salt環境了,個人主機名已經變成agent2.salt之類了,爲啥master端那邊收到的證書請求,仍是舊主機名的形式呢,並且重啓服務機器都沒用。
這是由於你再沒有設置id:這個惟一標識的狀況下,默認用的就是主機名做爲id的值,可是呢,你是先啓動了minion服務,後改的主機名,這時候你無論怎麼重啓minion的服務都木有用了,這是由於一個文件。
是由於你啓動minion服務後,會產生/etc/salt/minion_id ,而這個文件裏面的內容不會由於你主機名的改變、服務的重啓、機器的重啓而改變,因此若是你的主機名發送了變化,想讓master端那裏的證書認證名稱也跟着發送變化的話,就要刪除/etc/salt/minion_id文件或者清空/etc/salt/minion_id文件裏面的內容,而後重啓minion服務。
#關於主機名的設置,我的的習慣是:ydidc-server-web-101-223-200-2.douyu, ydidc-docker-cache-101-223-200-3.douwan,相似於這種機房名稱、主機類型是服務器仍是虛擬機、機器業務類型、IP地址、公司域名後綴的形式。不建議用業務後面跟編號的形式,由於你加了編號,就有了順序,可是機器所負責的業務可能要更換,機器可能要撤掉,那麼你的編號就是不連貫亂的,可是IP具備惟一性,不會出現由於機器下架業務調整主機名變動形成看着不連貫很亂的現象,若是一個機房沒有多網段能夠直接後一位或者後兩位。
#id: zwidc_kvm_192.168.1.104 #注意冒號後面要空一格,否則啓動minion報錯:ERROR: Unable to look-up config values for /etc/salt
# service salt-minion restart #設置完畢後重啓minion服務
# salt-key -L #查看當前證書的簽證狀況(若是咱們客戶端的證書在未驗證Unaccepted Keys: 的下面。)
Unaccepted Keys:
zwidc_kvm_192.168.1.104
# salt-key -a zwidc_kvm_192.168.1.104 -y #經過此證書的驗證
# salt-key -L #再次查看(發現出如今了Accepted Keys:下面表示已經經過了驗證,能夠創建通訊了)
# salt-key -L #再次查看(發現出如今了Accepted Keys:下面表示已經經過了驗證,能夠創建通訊了)
#經過端口查看,返現有一臺機器與master端的端口創建了鏈接。
注:
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 'zwidc_kvm_192.168.1.104' test.ping #測試服務器端是否能控制客戶端。
# salt 'zwidc_kvm_192.168.1.104' cmd.run "hostname" #讓客戶端執行一個命令。
# man salt 或者 # salt -h 均可以查看salt命令使用方法:
# 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 -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-call命令的output和log相關參數與salt命令同樣,就不記錄了,對一些不一樣的參數作下記錄。
# salt-call -h
Usage: salt-call [options] <function> [arguments]
Options:
--version: 查看saltstack程序的版本號。
--versions-report: 查看saltstack程序以及依賴包的版本號。
-h, --help:查看幫助信息。
--saltfile=SALTFILE: 指定配置文件。
-c CONFIG_DIR, --config-dir=CONFIG_DIR:指定配置文件目錄(默認是/etc/salt/)
--hard-crash: 捕捉到original異常不退出(默認關閉)。
-g, --grains: 返回的信息生成grains。
-m MODULE_DIRS, --module-dirs=MODULE_DIRS: 指定自定義模塊目錄。
-d, --doc, --documentation: 查看指定模塊或者全部模塊文檔。
--master=MASTER: 指定saltstack master。若是省略此選項,將使用minion config中的主選項。若是設置了多主機,則首先列出的主機將被使用。
--return=RETURNER:設置salt-call將返回數據傳遞給一個或多個returner接口。
--local:在本地運行salt-call,默認也是在本地運行。
--file-root=FILE_ROOT:指定fire基礎根目錄。
--pillar-root=PILLAR_ROOT: 指定pillar基礎根目錄。
--retcode-passthrough:顯示salt-call命令返回狀態。
--metadata :打印執行元數據以及返回。 這將打印輸出器數據,返回碼等。
--id=ID:指定一個minion ID.
--skip-grains:不加載grains信息。
--refresh-grains-cache:強制刷新grains信息。
-t AUTH_TIMEOUT, --timeout=AUTH_TIMEOUT:更改運行命令的超時時間,默認 60秒。
上面說到的test.ping和cmd.run 都是內置的用法,其實也就是python自帶的模塊功能,那麼如何知道咱們如今的salt可使用哪些方法呢?
# salt '*' -d|grep :\'|more #就能夠以列表的形式查看全部可使用的內置方法。爲啥要加過濾呢,由於方法下面還有對應的舉例。
# salt 'agent1.salt' sys.list_functions #上面的方法仍是比較粗糙,若是你已經知道了用法,能夠用sys.list_functions將全部咱們可使用的函數列出來,固然就指定一個節點就能夠了,指定'*'顯示結果也是重複。
我如今已經把全部的能夠用的模塊的函數都查出來了,若是我只想看某個模塊所擁有的函數方法呢?
# salt 'agent1.salt' sys.list_functions test #如我能夠查看test模塊有哪些函數方法能夠用。
若是我想查看某個模塊,或者某個模塊裏面某個函數的用法呢?
# salt 'agent1.salt' sys.doc test #查看test全部的方法及用法。
# salt 'agent1.salt' sys.doc test.ping #test.ping具體用法查看。
saltstack大部分配置都已經指定了默認值,只須要根據實際需求進行修改就行。
# vim /etc/salt/master
配置項及默認值 | 註釋 |
主配置設置: | |
default_include: master.d/*.conf | 指定include的目錄和文件 |
interface: 0.0.0.0 | 端口監聽地址 |
ipv6: FALSE | IPV6地址是否監聽 |
publish_port: | ZeroMQ消息發佈端口 |
user: root | saltstack運行的用戶 |
max_open_files: 100000 | 最大文件打開限制不能高於硬限制,每一個鏈接至少要使用一個文件描述符。 |
worker_threads: 5 | saltstack工做的線程數目,不能低於3 |
ret_port:4506 | saltstack的消息接聽端口 |
pidfile: /var/run/salt-master.pid | salt-master的進程pid文件位置 |
root_dir: / | salt-stack工做的根目錄,改變它可使salt從另一個目錄開始運行,比如chroot |
pki_dir: /etc/salt/pki/master | 公鑰存儲目錄 |
cachedir: /var/cache/salt/master | jobs和cache的緩存目錄 |
extension_modules: <no default> | 自定義模塊的目錄 |
module_dirs: <no default> | 自定義模塊的同步目錄 |
verify_env: True | 服務啓動時進行權限設置與驗證 |
keep_jobs: 24 | 設置jobs緩存的過時時間,單位是小時 |
timeout: 5 | 設置salt命令和api的默認超時值。 默認值爲5秒。 |
loop_interval: 60 | saltstack進程檢測週期,清理做業緩存並執行調度程序等。單位秒 |
output: nested | 設置salt命令使用的默認輸出器。 |
show_timeout: True | 開啓minion timeout提示 |
color: True | 開啓output顏色提示 |
strip_colors: False | 不要從嵌套結果和狀態輸出中剝離彩色輸出(默認狀況下爲true)。 |
sock_dir: /var/run/salt/master | 設置用於保存unix套接字的目錄 |
enable_gpu_grains: False | 設置grains收集主控制器的GPU信息 |
job_cache: True | jobs緩存,對於大型部署(超過5000次)多是負擔,不建議開啓。 |
minion_data_cache: True | 開啓minion的grains和pillar數據的緩存 |
event_return: mysql | 設置return存儲 |
event_return_queue: 0 | 啓用event_returns可能會對存儲系統形成重大負擔。默認狀況不排隊。 |
max_event_size: 1048576 | 容許消息的最大大小,該值以字節表示。 |
ping_on_rotate: False | 建議經過使用'key'標籤監聽'aes_key_rotate'事件來處理此事件,並適當地執行。 |
preserve_minion_cache: False | 刪除key時是否刪除cache數據 |
con_cache: False | 此高速緩存並大大提升了max_minions的性能。 |
安全設定: | |
open_mode: False | Ture的話,就會關閉身份驗證,這僅適用於高度安全的環境 |
auto_accept: False | 設置自動簽證,默認是False不自動簽證 |
autosign_timeout: 120 | 自動簽證的超時時間,單位是秒 |
autosign_file: /etc/salt/autosign.conf | 定義自動簽名規則文件,支持正則表達式以及全局行 |
autoreject_file: /etc/salt/autoreject.conf | 定義自動拒絕簽證的規則文件,能夠覆蓋autosign_file定義的成員資格 |
permissive_pki_access: False | 設置pki文件訪問權限 |
client_acl: | 定義用戶模塊執行限制 |
client_acl_blacklist: | 定義模塊和用戶黑名單 |
sudo_acl: False | 關閉利用sudo後client_acl限制 |
external_auth: | 指定外部認證方式 |
token_expire: 43200 | token過時時間,單位是秒,默認是12小時 |
file_recv: False | 是否容許minions推送文件到master端 |
file_recv_max_size: 100 | 對能夠推送到主機的文件的大小設置一個硬限制。單位是MB 默認值:100 |
Salt-SSH配置: | |
roster_file: /etc/salt/roster | roster文件的路徑 |
ssh_minion_opts: | salt-ssh不使用本地配置。 能夠在名冊上(「minion_opts」)上以覆蓋方式覆蓋 |
主模塊管理 | |
runner_dirs: [] | 管理主模塊的加載方式。 |
cython_enable: False | 是否爲主模塊啓用Cython |
狀態系統設置 | |
state_top: top.sls | 設置state入口文件 |
master_tops: | 設置其餘的top方式 |
external_nodes: None | 容許Salt收集一般放在頂級文件中的數據是將返回ENC數據的可執行文件。 |
renderer: yaml_jinja | 設置呈現狀態數據的方式 |
jinja_trim_blocks: False | 若是這被設置爲True,則在刪除Jinja塊後的第一個換行符。默認爲False |
jinja_lstrip_blocks: False | 若是將此設置爲True,則前導空格和製表符將從行的開頭移除到塊。 默認爲False |
failhard: False | failhard選項會在狀態執行中檢測到第一個故障後當即中止,默認爲False |
state_verbose: True | |
state_output: full | 默認狀況下,打印全部數據。 |
state_aggregate: False | 自動聚合支持mod_aggregate的全部狀態或傳遞狀態模塊名稱列表以自動聚合這些類型。 |
state_events: False | 在狀態運行中的每一個功能完成執行時發送進度事件。 |
文件服務器設置 | |
file_roots: | 文件服務器的根目錄 |
hash_type: md5 | 文件檢驗的hash類型,支持md5,sha1,sha224,sha256,sha384和sha512。 |
file_buffer_size: 1048576 | 文件服務器中的緩衝區大小 |
file_ignore_regex: | 設置同步file忽略文件正則 |
file_ignore_glob: | |
fileserver_backend: | Salt支持一個模塊化的文件服務器後端系統,該系統容許master直接連接到第三方系統來收集和管理可用於客戶端的文件。 |
fileserver_followsymlinks: False | 設置fireserver容許文件連接 |
fileserver_ignoresymlinks: True | 忽略fireserver容許文件連接 |
fileserver_limit_traversal: False | 設置fireserver的遍歷限制 |
fileserver_events: False | 文件服務器能夠在每次更新文件服務器時觸發事件,默認狀況下禁用 |
gitfs_provider: gitpython | Gitfs驅動能夠由兩個python模塊之一提供:GitPython或pygit2。 若是使用pygit2,則還必須安裝libgit2和git。 |
gitfs_remotes: | fileserver gitfs_remotes地址 |
gitfs_ssl_verify: True | gitfs_ssl_verify選項指定在聯繫gitfs後端時是否忽略ssl證書錯誤。默認值True之外的任何值都是安全性問題 |
gitfs_root: somefolder/otherfolder | gitfs_root選項能夠從存儲庫中的子目錄中提供文件。 路徑是相對於存儲庫的根而定義的,默認爲存儲庫根。 |
Pillar設置 | |
pillar_roots: | 設置pillar_roots目錄 |
ext_pillar: | 設置ext_pillar方式 |
ext_pillar_first: False | ext_pillar_first選項容許在文件系統illar以前填充外部pillar源。 |
pillar_gitfs_ssl_verify: True | 開啓證書驗證,將此標誌設置爲除默認值True之外的任何值都是安全性問題 |
pillar_opts: False | 開啓pillar讀取opts參數 |
pillar_safe_render_error: True | 由於錯誤可能包含模板數據,將提供不應有的信息,如密碼。當設置爲true時,錯誤消息將僅顯示:呈現SLS'my.sls'失敗。 |
pillar_source_merging_strategy: smart | 配置不一樣來源之間的合併策略,它接受四個值:recurse,aggregate,overwrite或smart。 |
Syndic settings | |
order_masters: False | 設置開啓syndic |
syndic_master: masterofmaster | 若是這個master將運行一個salt syndic守護進程,設置syndic_master的地址 |
syndic_master_port: 4506 | 設置syndic_master的監聽端口 |
syndic_pidfile: /var/run/salt-syndic.pid | 設置syndic的pid文件 |
syndic_log_file: syndic.log | 設置syndic的日誌文件 |
對等發佈設置 | |
peer: | 對等設置 |
peer_run: | 此設置與對等設置相同,除了打開運行程序而不是模塊功能。 全部對等運行程序支持都默認關閉,必須在使用前啓用。 |
日誌設置 | |
log_file: /var/log/salt/master | naster日誌文件位置 |
log_level: warning | 日誌級別 |
log_level_logfile: warning | 日誌記錄級別 |
log_datefmt: '%H:%M:%S' | 日誌時間格式 |
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S' | 日誌文件的記錄的時間格式 |
log_fmt_console: | 設置console日誌格式 |
log_fmt_logfile: | 設置日誌記錄日誌格式 |
log_granular_levels: {} | 設置指定lib庫的日誌級別 |
節點組 | |
nodegroups: | 設置了一個節點組後面指定組以及組裏面有哪些主機,配置文件裏面有例子 |
範圍集羣設置 | |
range_server: range:80 | 提供集羣信息的範圍服務器(和可選端口) |
windows軟件回收設置 | |
win_repo: '/srv/salt/win/repo' | 回收主機的文件 |
win_repo_mastercachefile: | master的回購緩存文件的位置 |
win_gitrepos: | git存儲庫列表包含在本地的repo中 |
Returner設置 | |
return: mysql | minion返回的結果被什麼使用 |
博文來自:www.51niux.com
4.2 minion配置文件詳解
# vim /etc/salt/minion
配置文件及默認值 | 註釋 |
主配置文件設置 | |
default_include: minion.d/*.conf | include配置文件 |
master: salt | master端的地址 |
random_master: False | 設置多master隨機請求 |
master_shuffle: False | 若是master_type設置爲故障轉移這裏啓用 |
master_type: str | 配置爲故障轉移,經過將此值設置爲「str」來配置多個熱主機。 |
master_alive_interval: 30 | 設置了故障轉移,默認是30秒輪詢檢查一次,要徹底禁用間隔,請將值設置爲-1。 |
ipv6: False | 設置Ipv6地址監聽 |
retry_dns: 30 | 解析master主機名失敗以後30秒再嘗試,設置爲0爲不嘗試 |
master_port: 4506 | 設置主應答和認證服務器使用的端口。 |
user: root | 運行salt的用戶 |
sudo_user: saltdev | 設置sudo_user將致使salt將sudo下的全部執行模塊運行到sudo_user中給出的用戶。 |
pidfile: /var/run/salt-minion.pid | 守護進程的pid文件 |
root_dir: / | saltstack的工做目錄 |
pki_dir: /etc/salt/pki/minion | 存儲pki信息的目錄 |
id: | 明確地聲明這個使用的id,若是設置,id將是python調用返回的主機名。 |
append_domain: | 將域附加到主機名這對於socket.getfqdn()不會產生FQDN(例如Solaris)的系統 |
grains: | 設置grains信息 |
cachedir: /var/cache/salt/minion | minion的cache數據目錄 |
verify_env: True | 在啓動時驗證並設置配置目錄的權限。 |
cache_jobs: False | 是否開啓jobs的緩存 |
sock_dir: /var/run/salt/minion | minion的sock目錄 |
output: nested | 設置salt-call命令使用的默認輸出器。 默認值爲「nested」。 |
color: True | 默認輸出爲彩色。 要禁用彩色輸出,請將顏色值設置爲False。 |
strip_colors: False | 從嵌套結果和狀態輸出中剝離彩色輸出。 |
backup_mode: minion | 設置備份文件,惟一有效的設置是minion,默認禁用 |
acceptance_wait_time: 10 | 等待master接收minion的公鑰,10秒嘗試一次直到成功。 |
acceptance_wait_time_max: 0 | 等待公鑰認證的最大值。 若是設置爲零,從新鏈接嘗試之間的時間將保持不變。 |
rejected_retry: False | 設置若是master拒絕minion的公鑰,是否繼續嘗試而不是退出。 |
random_reauth_delay: 60 | 當主密鑰更改時,minion將嘗試從新認證,設置隨機數防止客戶端同時向master端請求。 |
auth_timeout: 60 | 設置等待認證的超時時間爲60秒,而後再從新發起請求直到成功鏈接爲止。 |
auth_tries: 7 | 嘗試驗證時可接受的SaltReqTimeoutError連續數。 |
auth_safemode: False | 在ping_interval期間SaltReqTimeoutError致使身份驗證失敗是否從新啓動子服務進程。 |
ping_interval: 0 | Ping Master確保鏈接活着(單位分鐘)。 |
loop_interval: 60 | 在評估調度程序和運行清理任務之間等待幾分鐘的時間。這默認爲60秒 |
grains_refresh_every: 1 | 按期檢查其grains,10分鐘是合理值,單位是分鐘。 |
grains_cache: False | 是否作grains的緩存 |
grains_cache_expiration: 300 | 啓用grains緩存以後這裏纔有做用,緩存過時時間,單位是秒 |
ipc_mode: ipc | Windows平臺缺乏posix IPC,必須依賴於較慢的基於TCP的進程間通訊。 |
tcp_pub_port: 4510 | tcp模式下minion的pub端口 |
tcp_pull_port: 4511 | tcp模式下minion的pull端口 |
max_event_size: 1048576 | 最大消息的大小,單位爲字節。 |
master_alive_interval: 30 | 輪詢檢測master是否從故障恢復的秒數。 |
minion模塊設置 | |
disable_modules: [cmd,test] | 禁用特定的模塊 |
disable_returners: [] | |
modules_max_memory: -1 | 爲導入的模塊指定最大大小單位是字節。此功能目前僅支持* nix操做系統須要psutil。 |
狀態管理設置 | |
renderer: yaml_jinja | 狀態管理系統執行全部狀態模板默認渲染器是yaml_jinja。 |
failhard: False | failhard選項會在狀態執行中檢測到第一個故障後當即中止。 默認爲False。 |
autoload_dynamic_modules: True | 在運行以前自動加載動態模塊 |
clean_dynamic_modules: True | 若是動態模塊不在服務器上面將會自動從服務器中刪除 |
environment: None | 設置minion的運行環境。用來作環境隔離用的。 |
state_top: top.sls | 設置state入口文件 |
文件目錄設置 | |
file_client: remote | 設置文件客戶端。 默認是remote遠程。能夠設置爲local從本地查找文件。 |
file_roots:/srv/salt |
本地文件的file服務目錄 |
fileserver_limit_traversal: False | Salt文件服務器是否將徹底遞歸到全部定義的環境中以嘗試查找文件。 |
hash_type: md5 | 文件檢驗hash類型 |
pillar_roots:/srv/pillar | 果file_client設置爲local,則會在本地搜索Salt pillar,這裏是其目錄 |
安全設定 | |
open_mode: False | Ture的話,就會關閉身份驗證,這僅適用於高度安全的環境 |
permissive_pki_access: False | 設置pki文件訪問權限 |
state_verbose: True | 設置可用於更改狀態系統數據打印到顯示器的方式。 默認狀況下打印全部數據。 |
state_output: full | |
state_output_diff: False | 是否忽略混亂日誌 |
state_output_profile: True | 更改每一個狀態運行時是否顯示配置文件信息。 |
master_finger: '' | 在主密鑰交換以前,主公鑰的指紋驗證salt主人的身份。這裏是master的指紋。 |
線程設置 | |
multiprocessing: True | 是否開啓多線程支持接,收到一個發佈時,會生成一個新進程,並在其中執行該命令。 |
日誌設置 | |
log_file: /var/log/salt/minion | minion的日誌文件位置 |
log_level: warning | 日誌級別 |
log_level_logfile: warning | 日誌記錄級別 |
log_datefmt: '%H:%M:%S' | 日誌時間格式 |
log_datefmt_logfile: '%Y-%m-%d %H:%M:%S' | 日誌文件的記錄的時間格式 |
log_fmt_console: | 設置console日誌格式 |
log_fmt_logfile: | 設置日誌記錄日誌格式 |
log_granular_levels: {} | 設置指定lib庫的日誌級別 |
zmq_monitor: False | 是否記錄的全部事件將包括字符串'ZeroMQ事件'。 |
長鏈接配置 | |
tcp_keepalive: True | 是否開啓tcp長鏈接 |
tcp_keepalive_idle: 300 | 默認300在5分鐘後發送第一個keepalive,在Linux上,OS默認(-1)一般爲7200秒 |
tcp_keepalive_cnt: -1 | 多少個丟失的探測器來考慮鏈接丟失。默認值-1使用操做系統默認值一般在Linux上爲9 |
tcp_keepalive_intvl: -1 | keepalives的檢測頻率。 默認值-1使用操做系統默認值,一般在Linux上爲75秒 |
Returner設置 | |
return: mysql | minion返回的結果被什麼使用 |