Centos7上Saltstack 安裝配置詳解
一、saltstack簡介
Saltstack 比 Puppet 出來晚幾年,是基於Python 開發的,也是基於 C/S 架構,服務端 master 和客戶端 minions ;Saltstack 和 Puppet 很像,可以說 Saltstatck 整合了 Puppet 和 Chef 的功能,更加強大,更適合大規模批量管理伺服器,並且它比 Puppet 更容易配置。
三大功能: 遠端命令執行,配置管理(服務,檔案,cron,使用者,組),雲管理。
支援系統:大多數都支援,windows 上不支援安裝 master。
salt的具體步驟如下:
第一步: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、準備工作
準備兩臺機器,這兩臺機器都關閉 selinux,清空 iptables或firewall 規則並儲存。
centos7.3 192.168.0.23 master
centos7.3 192.168.0.27 minion
安裝epel源:
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、安裝與配置
1)服務端安裝與配置
yum install -y salt-master salt-minion
/etc/salt/master
/file_roots
#file_roots:
# base:
# - /srv/salt
去掉#註釋
file_roots:
base:
- /srv/salt
/pillar_roots
#pillar_roots:
# base:
# - /srv/pillar
去掉註釋:
pillar_roots:
base:
- /srv/pillar
2)客戶端安裝
yum install -y salt-minion
/etc/salt/minion
#master: server 修改為
master: 192.168.0.27
#id
修改為
id: mysql
3、啟動服務
1)服務端
systemmctl start salt-master && systemmctl enable salt-master
systemmctl start salt-minion && systemmctl enable salt-minion
2)客戶端
systemmctl start salt-minion && systemmctl enable salt-minion
3、master配置檔案詳解
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返回的結果被什麼使用 |
4、 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返回的結果被什麼使用 |
三、配置認證
1)在服務端上操作
salt-key -L
說明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令檢視到已經簽名的客戶端。此時我們在客戶端的 /etc/salt/pki/minion 目錄下面會多出一個minion_master.pub 檔案。
2)測試驗證
示例1: salt '*' test.ping //檢測通訊是否正常,也可以指定其中一個 'slaver.test.com'
示例2: salt '*' cmd.run 'df -h' //遠端執行命令
說明: 這裡的 * 必須是在 master 上已經被接受過的客戶端,可以通過 salt-key 查到,通常是我們已經設定的 id 值。關於這部分內容,它支援通配、列表以及正則。 比如兩臺客戶端 web10、web11, 那我們可以寫成 salt 'web*' salt 'web1[02]' salt -L 'web10,web11' salt -E 'web(10|11)' 等形式,使用列表,即多個機器用逗號分隔,而且需要加-L,使用正則必須要帶-E選項。 它還支援 grains 和 pillar,分別加 -G 和 -I 選項,下面會介紹到。
salt-key命令用法:
-a 後面跟主機名,認證指定主機
-A 認證所有主機
-r 跟主機名,拒絕指定主機
-R 拒絕所有主機
-d 跟主機名,刪除指定主機認證
-D 刪除全部主機認證
-y 省略掉互動,相當於直接按了y
解決這種錯誤,需要刪除minion端的key,重新認證。
# rm -rf /etc/salt/pki/minion/minion_master.pub
# service restart salt-minion //重啟minion端
四、grains 和 pillar
下面來介紹 grains 和 pillar
1、grains
grains 是在 minion(客戶端)啟動時收集到的一些資訊,比如作業系統型別、網絡卡ip等。
使用命令:
[[email protected] ~]# salt 'slaver.test.com' grains.ls //列出所有的 grains 專案名字
[[email protected] ~]# salt 'slaver.test.com' grains.items //列出所有的 grains 專案名以及值
grains的資訊並不是動態的,並不會時時變更,它只是在 minion 啟動時收集到的。grains 也可以做配置管理。
下面我們來自定義 grains
1)客戶端上配置
[[email protected] ~]# vim /etc/salt/grains //新增如下,注意冒號後有空格
role: nginx
env: test
myname: tpp
或者
[[email protected] ~]# vim /etc/salt/minion //在最下面新增或更改
grains:
role:
- nginx
env:
- test
myname:
- tpp
重啟minion服務
systemctl restart salt-minion
2)服務端獲取 grains
[[email protected] ~]# salt 'slaver.test.com' grains.item role env myname //列出多個
[[email protected] ~]# salt 'slaver.test.com' grains.get myname //列出單個
注意:grains 在遠端執行命令時很方便。我們可以按照 grains 的一些指標來操作。比如把所有的 web 伺服器的 grains 的 role 設定為 nginx,那這樣我們就可以批量對 nginx 的伺服器進行操作了:
[[email protected] ~]# salt -G role:nginx cmd.run 'hostname'
[[email protected] ~]# salt -G os:CentOS cmd.run 'hostname'
2、pillar
pillar 和 grains 不一樣,是在 master 上定義的,並且是針對 minion 定義的一些資訊。像一些比較重要的資料(密碼)可以存在 pillar 裡,還可以定義變數等。
檢視指定minion的 pillar 值:
[[email protected] ~]# salt 'slaver.test.com' pillar.items
1)服務端自定義配置 pillar
[[email protected] ~]# vim /etc/salt/master //找到如下內容,去掉#號
pillar_roots:
base:
- /srv/pillar
[[email protected] ~]# mkdir /srv/pillar
[[email protected] ~]# vim /srv/pillar/test.sls //自定義配置檔案,內容如下
conf: /etc/123.conf
myname: tpp
[[email protected] ~]# vim /srv/pillar/top.sls //總入口檔案,內容如下
base:
'slaver.test.com':
- test
重啟master
[[email protected] ~]# /etc/init.d/salt-master restart
注意:當更改完 pillar 配置檔案後,我們可以通過重新整理 pillar 配置來獲取新的 pillar 狀態:
[[email protected] ~]# salt '*' saltutil.refresh_pillar
2)驗證:
[[email protected] ~]# salt 'slaver.test.com' pillar.items
[[email protected] ~]# salt 'slaver.test.com' pillar.item conf
[[email protected] ~]# salt 'slaver.test.com' pillar.item myname
pillar 同樣可以用來作為 salt 的匹配物件。比如:
[[email protected] ~]# salt -I 'conf:/etc/123.conf' test.ping
[[email protected] ~]# salt -I 'conf:/etc/123.conf' cmd.run 'w'
五、配置管理安裝Apach
下面進行的演示是遠端通過 yum 方式安裝 Apache。步驟如下:
1、配置
[[email protected] ~]# vim /etc/salt/master //開啟如下內容的註釋
file_roots:
base:
- /srv/salt
注意:環境: base、dev(開發環境)、test(測試環境)、prod(生產環境)。
[[email protected] ~]# mkdir /srv/salt
[[email protected] ~]# vim /srv/salt/top.sls
base:
'slaver.test.com':
- apache
注意:若換成 '*',則表示在所有的客戶端執行 apache 模組。
[[email protected] ~]# vim /srv/salt/apache.sls
apache-service:
pkg.installed:
- names: //如果只有一個服務,那麼就可以寫成 –name: httpd 不用再換一行
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
注意:apache-service 是自定義的 id 名。pkg.installed 為包安裝函式,下面是要安裝的包的名字。service.running 也是一個函式,來保證指定的服務啟動,enable 表示開機啟動。
2、執行命令
[[email protected] ~]# salt 'slaver.test.com' state.highstate //執行時間比較長,因為要安裝httpd
如上圖所示,說明 Apache 遠端安裝已成功。
六、檔案目錄管理
1、檔案管理
1)服務端配置
接著編輯之前的 top.sls 檔案
[[email protected] ~]# vim /srv/salt/top.sls //修改為如下
base:
'slaver.test.com':
- filetest
新建 filetest.sls 檔案
[[email protected] ~]# vim /srv/salt/filetest.sls
file-test:
file.managed:
- name: /tmp/filetest.txt
- source: salt://test/123/1.txt
- user: root
- group: root
- mode: 644
注意:第一行的 file-test 為自定的名字,表示該配置段的名字,可以在別的配置段中引用它;source指定檔案從哪裡拷貝,這裡的 test 目錄相當於是 /srv/salt/test 目錄;name指定遠端客戶端要生成的檔案。
新建所要測試的原始檔
[[email protected] ~]# mkdir -p /srv/salt/test/123/
[[email protected] ~]# vim /srv/salt/test/123/1.txt
msiyuetian.blog.iyunv.com
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
2)客戶端驗證
2、目錄管理
1)服務端配置
接著編輯之前的 top.sls 檔案
[[email protected] ~]# vim /srv/salt/top.sls //修改為如下
base:
'slaver.test.com':
- filedir
新建 filedir.sls 檔案
[[email protected] ~]# vim /srv/salt/filedir.sls
file-dir:
file.recurse:
- name: /tmp/testdir
- source: salt://test1/234
- user: root
- file_mode: 644
- dir_mode: 755
- mkdir: True
- clean: True
注意:clean: True 源刪除檔案或目錄,目標也會跟著刪除,否則不會刪除。可以預設設定為 False。
新建所要測試的源目錄
[[email protected] ~]# mkdir -p /srv/salt/test1/234
[[email protected] ~]# vim /srv/salt/test1/234/2.txt
msiyuetian.blog.iyunv.com
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
2)客戶端驗證
3)測試增刪功能
在服務端新建 mydir 目錄以及 testdir.add 檔案,刪除 2.txt 檔案:
[[email protected] ~]# mkdir /srv/salt/test1/234/mydir
[[email protected] ~]# touch /srv/salt/test1/234/mydir/111.txt
[[email protected] ~]# touch /srv/salt/test1/234/testdir.add
[[email protected] ~]# rm -rf /srv/salt/test1/234/2.txt
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
客戶端驗證
注意:由上圖可知,成功在客戶端 /tmp/testdir/ 目錄下建立了 mydir 目錄以及 testdir.add 檔案,並刪除 2.txt 檔案。這裡值得注意的是要成功建立 mydir 目錄,前提是 mydir 目錄下要有檔案,如這裡的111.txt 檔案,如若沒有,客戶端是不會建立 mydir 目錄的。
七、遠端執行
前面提到遠端執行命令 test.ping,cmd.run,點前面的是模組,點後面的是函式;這樣總歸是不太規範化,下面詳細介紹怎麼遠端執行命令和指令碼。
1、遠端執行命令
1)服務端配置
接著編輯之前的 top.sls 檔案
[[email protected] ~]# vim /srv/salt/top.sls //修改為如下
base:
'slaver.test.com':
- cmdtest
新建 cmdtest.sls 檔案
[[email protected] ~]# vim /srv/salt/cmdtest.sls
cmd-test: cmd.run:
- onlyif: test -f /tmp/123.txt
- names:
- touch /tmp/cmdtest.txt
- mkdir /tmp/cmdtest
- user: root
注意:條件 onlyif 表示若 /tmp/123.txt 檔案存在,則執行後面的命令;可以使用 unless,兩者正好相反。
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
2)客戶端驗證
2、遠端執行指令碼
1)服務端配置
接著編輯之前的 top.sls 檔案
[[email protected] ~]# vim /srv/salt/top.sls //修改為如下
base:
'slaver.test.com':
- shelltest
新建 shelltest.sls 檔案
[[email protected] ~]# vim /srv/salt/shelltest.sls
shell-test:
cmd.script:
- source: salt://test/1.sh
- user: root
新建 1.sh 指令碼檔案
[[email protected] ~]# vim /srv/salt/test/1.sh
#!/bin/bash
touch /tmp/shelltest.txt
if [ -d /tmp/shelltest ]
then
rm -rf /tmp/shelltest
else
mkdir /tmp/shelltest
fi
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
2)客戶端驗證
注意:通過上面的例子,我們實現了遠端執行指令碼;如果我們想一鍵遠端安裝 LAMP 或者 LNMP,那麼只需把本例中的 1.sh 指令碼替換成 一鍵安裝的指令碼就行。
八、管理任務計劃
1、建立 cron
1)服務端配置
編輯 top.sls 檔案
[[email protected] ~]# vim /srv/salt/top.sls //修改為如下
base:
'slaver.test.com':
- crontest
編輯 crontest.sls 檔案
[[email protected] ~]# vim /srv/salt/crontest.sls
cron-test:
cron.present:
- name: /bin/touch /tmp/111.txt
- user: root
- minute: '*'
- hour: 20
- daymonth: 1-10
- month: '3,5'
- dayweek: '*'
注意,*需要用單引號引起來。當然我們還可以使用 file.managed 模組來管理 cron,因為系統的 cron都是以配置檔案的形式存在的。
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
2)客戶端驗證
2、刪除 cron
1)服務端配置
我們只需修改 crontest.sls 檔案
[[email protected] ~]# vim /srv/salt/crontest.sls
把 cron.present: 改成 cron.absent:
注意:兩者不能共存,要想刪除一個 cron,那之前的 present 就得替換掉或者刪除掉。
執行命令:
[[email protected] ~]# salt 'slaver.test.com' state.highstate
2)客戶端驗證
[[email protected] ~]# crontab -l //可檢視到該任務計劃已刪除
九、Saltstack 常用命令
1、拷貝檔案到客戶端
[[email protected] ~]# salt 'slaver.test.com' cp.get_file salt://apache.sls /tmp/cp.txt
slaver.test.com:
/tmp/cp.txt
2、拷貝目錄到客戶端
[[email protected] ~]# salt 'slaver.test.com' cp.get_dir salt://test /tmp
slaver.test.com:
- /tmp/test/1.sh
- /tmp/test/123/1.txt
3、顯示存活的客戶端
[[email protected] ~]# salt-run manage.up
4、命令下執行服務端的指令碼
[[email protected] ~]# vim /srv/salt/test/shell.sh
#! /bin/bash
echo "msiyuetian.blog.iyunv.com" > /tmp/shell.txt
[[email protected] ~]# salt 'slaver.test.com' cmd.script salt://test/shell.sh
客戶端檢視
參考文件
相關推薦
Centos7上Saltstack 安裝配置詳解
一、saltstack簡介 Saltstack 比 Puppet 出來晚幾年,是基於Python 開發的,也是基於 C/S 架構,服務端 master 和客戶端 minions ;Saltstack 和 Puppet 很像,可以說 Saltstatck 整合了 Pupp
saltstack 安裝配置詳解
saltstackSaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與python第三方模塊(Pyzmq、PyCrypto、Pyjinji
Centos7之pacemaker高可用安裝配置詳解
申明: centos7的pacemaker與之前6使用的方法不一致,即使用centos6.x的方法在centos7.x上面配置pacemaker不能成功。 因此openstack 上面的centos7.1如果使用官方文件直接配置高可用HA也是無法成功的。(吐槽:opens
NFS服務器原理和安裝配置詳解附案例演練
隨機選擇 span 通訊 操作系統 不同 網絡 定義 重新啟動 exportfs NFS服務器原理和安裝配置詳解附案例演練 1、什麽是NFS服務器 NFS就是Network File System的縮寫,它最大的功能就是可以通過網絡,讓不同的機器、不同的操作系統可以共享
使用LVS實現負載均衡原理及安裝配置詳解
配置 png 負載均衡 iptables .cn 詳解 文章 配置詳解 logs LVS是一個開源軟件,由章文嵩博士於1998年5月創立,可以實現Linux平臺下的簡單負載均衡。LVS是Linux Virtual Server的簡寫,是一個虛擬的服務器集群系統。LVS是基於
CentOS 7.4 Tengine安裝配置詳解(一)
tengine nginx 一、安裝配置Tengine:Tengine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等得到了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易
CentOS 7.4 Tengine安裝配置詳解(二)
tengine、虛擬主機、IP、訪問控制三、配置虛擬主機:1、配置基於端口的虛擬主機:(1)在http{}配置段中新增如下server:server {listen 8000;server_name localhost;access_log /usr/local/tengine/logs/localhost8
CentOS 7.4 Tengine安裝配置詳解(三)
location、echo、fancy九、根據HTTP響應狀態碼自定義錯誤頁:1、未配置前訪問一個不存在的頁面:http://192.168.1.222/abc/def.html,按F12後刷新頁面2、在server{}配置段中新增如下location:server {listen 80;server_nam
CentOS 7.4 Tengine安裝配置詳解(五)
tengine nginx https 十四、配置Tengine支持HTTPS1、演示環境:IP操作系統角色 192.168.1.222 CentOS 7.4 Tengine服務器 192.168.1.145 CentOS 6.9 自建CA服務器備註:Teng
CentOS 7.4 Tengine安裝配置詳解(六)
tengine 反向代理 十五、反向代理:1、演示環境:IP操作系統節點角色192.168.1.222CentOS 7.4node1Tengine服務器192.168.1.144CentOS 6.9node2Apache服務器2、node2安裝Apache服務,並創建測試頁:# yum -y inst
CentOS 7.4 Tengine安裝配置詳解(七)
tengine cache purge 十六、緩存及緩存清理1、修改node1配置文件nginx.conf:(1)在http配置段中增加如下代碼:proxy_cache_path /usr/local/tengine/cache levels=1:1:2 keys_zone=mycache:200
使用LVS負載均衡搭建web群集的原理及安裝配置詳解
chmod 特點 Go 內核空間 col rpc mac地址 網絡文件系統 IT 一、負載均衡LVS基本介紹 LVS是 Linux Virtual Server 的簡稱,也就是Linux虛擬服務器。這是一個由章文嵩博士發起的一個開源項目,它的官方網站是 http://www
nginx的安裝配置詳解
屬於 nod 客戶端瀏覽器 work http狀態碼 curl -i time dom connect title: nginx的安裝配置詳解tags: nginx,虛擬服務器,curl nginx的安裝配置詳解 1. 介紹各個常用的服務端口 21 ftp ;22 ss
NGINX源碼安裝配置詳解(./configure),最全解析
unzip roo without rpc服務 所有 googl 版本 並且 大文件 NGINX ./configure詳解 在"./configure"配置中,"--with"表示啟用模塊,也就是說這些模塊在編譯時不會自動構建&qu
httpd/apache編譯安裝配置詳解
apachectl 訪問 這一 block combined enable config yum 開發環境 一.httpd介紹 1.httpd是http協議的一個經典實現,也是apache組織中的一個頂級項目,其官方站點為httpd.apache.org。 2.httpd的
[自動化] Saltstack服務配置詳解
txt hostname 文件操作 roo python 安裝包 目錄管理 關閉selinux 服務配置 Saltstack 簡介 Saltstack 是一個服務器基礎設施管理工具,它具有配置管理、遠程執行、監控等功能。Saltstack由Python語言編寫,基於 C/S
【go 語言環境安裝】goland語言環境安裝配置詳解
1、下載go 下載地址: https://golang.google.cn/dl/ 開啟網址,由於我的電腦是win64,所以下載第一個。 2、安裝go 2.1、UNIX/Linux/Mac OS X, 和 FreeBSD 安裝 以下介紹了在UNIX/Linux/Mac OS
python中呼叫R語言通過rpy2 進行互動安裝配置詳解(R_USER、R_HOME配置)
python中呼叫R語言通過rpy2 進行詳解 文章目錄 python中呼叫R語言通過rpy2 進行詳解 1.R語言的安裝: 2.Rpy2工具的安裝和配置 3.pycharm中使用R語言配置
NTP時間伺服器安裝配置詳解
簡介 時間服務NTP:Network Time Protocol 作用:用來給其他主機提供時間同步服務,在搭建伺服器叢集的時候,需要保證各個節點的時間是一致的,時間伺服器不失為一個好的選擇。 準備工作 關閉防火牆、關閉selinux 系統版本:CentOS7.x