一、SaltStack介紹
1.1 saltstack簡介:
saltstack是基於python開發的一套C/S架構配置管理工具,它的底層使用ZeroMQ消息隊列pub/sub方式通信,使用SSL證書簽發的方式進行認證管理。ZeroMQ使SaltStack能快速在成千上萬台機器上進行各種操作,之前已經介紹過了puppet mco的框架,比較類似。而且采用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端口進行連接認證。
如下圖(salt-master端的4505和4506端口,被兩個客戶端(192.168.1.102,192.168.1.104)所連接。):
1.2salt的具體步驟如下:
第一步: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執行結果,將結果輸出到終端。
二、SaltStack安裝
1.1 saltstack軟件依賴
saltstack對於python版本和python模塊有一定的要求。
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包裝庫 |
1.2saltstack的安裝(yum安裝)
官網地址:https://docs.saltstack.com
Centos服務器安裝地址:https://repo.saltstack.com/#rhel
第一步:指定官網yum源:
如果是Centos7系統: yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el7.noarch.rpm
如果是Centos6系統: yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-1.el6.noarch.rpm
或者直接編寫一個源文件:
# 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
第二步:master端的安裝:
#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
第三步:minion的安裝
#yum install salt-minion -y
1.3master端的操作
這里先保持默認配置直接啟動服務,后面再涉及到配置文件的修改。
# service salt-master restart
1.4客戶端的操作
# 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服務
1.5master服務端設置
# 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
1.6master服務端測試
# salt 'zwidc_kvm_192.168.1.104' test.ping #測試服務器端是否能控制客戶端。
# salt 'zwidc_kvm_192.168.1.104' cmd.run "hostname" #讓客戶端執行一個命令。
三、SaltStack命令詳解
3.1salt命令詳解
# 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。
3.2salt-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的指紋信息。
3.3客戶端salt-call(就相當於要把遠程執行的命令,換到客戶端本地自己本地執行了。)
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秒。
3.4還需要重點掌握的命令
上面說到的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配置文件詳解
4.1master配置文件詳解
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返回的結果被什么使用 |