遠程操作:
salt ‘*’ cmd.run "uptime"
一 實例操作:
1 說明:yum安裝apache 並且在master端同步httpd.conf文件,而且當這個文件修改時重啓apache
2 結構目錄
[root@slave salt]# tree
.
├── apache
│ ├── apache.sls
│ └── httpd.conf
├── top.sls
top.sls:是salt的入口 執行的第一個文件
apache.sls:具體的操作寫在這裏
httpd.conf:需要同步到客戶端的apache主配置文件
[root@slave salt]# cat top.sls base: ##base語法告訴Salt這是基礎配置文件 '*': ## 被執行的對象 *表示所有的客戶端 可以在這單獨寫某一個客戶端的ID 如slave-142 - apache.apache ## 第一個apache是在/srv/salt/ 的目錄 第二個其實是apache.sls 但是這裏可以直接寫成apache 'slave-142': ## 單指一臺期機器 - ntp.sls
[root@slave salt]# cat apache/apache.sls apache: ##ID標識 可以隨意取 pkg: ##安裝包管理 - name: httpd - installed ##執行安裝操作 service: ##服務管理 - name: httpd - running ##保證上述的httpd服務啓動 - reload: True ##觀察watch制定的文件 要是文件有修改 重啓 - enable: True ##服務開啓啓動 - watch: - file: /etc/httpd/conf/httpd.conf ##客戶端的配置文件
/etc/httpd/conf/httpd.conf: ##客戶端的配置文件 file.managed: ##文件管理 - source: salt://apache/httpd.conf ##服務器端本地的文件和路徑 salt//這個配置在master中配置 默認是在/srv/salt/ 需要開啓注視 - user: root - group: root - mode: 644 - backup: minion ##執行操作前備份
執行操作:
由於之前我過操作 httpd已經成功安裝 這次測試的是修改了httpd.conf文件
[root@slave salt]# salt '*' state.highstate 68: ---------- ID: apache Function: pkg.installed Name: httpd Result: True Comment: Package httpd is already installed Changes: ---------- ID: /etc/httpd/conf/httpd.conf Function: file.managed Result: True Comment: File /etc/httpd/conf/httpd.conf updated Changes: ---------- diff: --- +++ @@ -1007,5 +1007,5 @@ # ErrorLog logs/dummy-host.example.com-error_log # CustomLog logs/dummy-host.example.com-access_log common #</VirtualHost> -####hihi test### 修改的時候去掉了這行 -###test # 修改的時候去掉了這行 +####20140414 test### 新添加行 +###test 2014 #新添加行 ---------- ID: apache Function: service.running Name: httpd Result: True Comment: Service reloaded Changes: ---------- httpd: True Summary ------------ Succeeded: 3 Failed: 0 ------------ Total: 3
當你在一個sls中寫有多個操作但是要只操作一個 salt '*' state.highstate exclude="[{'id':'httpd'}]" -t 60
當不需要操作所有的客戶端 可以 salt 'slave-143' state.highstate 只操作一臺機器
當只想操作一個sls文件 salt 'slave-143' state.sls httpd ##對143這個客戶端執行httpd.sls文件操作