salt stack 運維工具——自動化(二)

基於完成安裝的salt master和minion( http://mengsir.blog.51cto.com/2992083/1376071 ),接下來配置它強大的的管理功能。
nginx

需求:分發 從服務器運行指令,例如:能夠指定某客戶端或者全部客戶端運行安裝nginx。vim

Master 與 Minion 認證服務器

1.minion 在第一次啓動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion 裏面  設置)下自動生成 minion.pem(private key)和 minion.pub(public key),而後將 minion.pub  發送給 master。 ide

2.master 在接收到minion的public key後,經過salt-key命令accept minion public key,  這樣在 master 的/etc/salt/pki/master/minions 下的將會存放以 minion id 命名的 public  key, 而後 master 就能對 minion 發送指令了。工具

KEY 管理測試

 Salt 在 master 和 minion 數據交換過程當中使用 AES 加密, 爲了保證發送給 minion 的指令不  會被篡改,master 和 minion 之間認證採用信任的接受(trusted, accepted )的 key.  在發送命令到 minion 以前,minion 的 key 須要先被 master 所接受(accepted). 運行  salt-key 能夠列出當前 key 的狀態ui

1. 修改 master 配置, vim /etc/salt/master 去掉前面 #號加密

wKioL1Mi1lKhpk46AAEU9xbCyiw646.jpg

2. 告訴master 的salt,配置管理文件在哪裏,根據你是如何安裝salt,有時須要自動建立 /srv/salt目錄,而後須要建立一個top.sls 文件,這個也是入口文件,能夠用於做爲其餘服務器的基礎配置文件。spa

vim /srv/salt/top.sls
dev:
  'minion.hello.com':
    - nginx

wKioL1Mi16ugt0qGAADazsjAP1c573.jpg

3. 在/srv/salt/ 目錄下,建立 dev目錄,dev 目錄下建立 nginx(這些目錄和文件名,隨意定義,清晰的表示本身安裝什麼服務便可)3d

cd /srv/salt
mkdir dev
cd dev
mkdir nginx

4. 在/srv/salt/dev/nginx 目錄下,指定配置文件內容nginx.sls ( 縮進爲2個空格,冒號後面1個空格)

nginx:
  pkg:
    - installed
  service:
    - running
    - enable: Ture
    - watch:
      - file: /etc/nginx/nginx.conf
      - file: /etc/nginx/conf.d/default.conf
    - require:
      - pkg: nginx
/etc/nginx/nginx.conf:
  file.managed:
    - source: salt://nginx/nginx.conf
    - mode: 664
    - user: root
    - group: root
/etc/nginx/conf.d/default.conf:
  file.managed:
    - source: salt://nginx/default.conf
    - mode: 664
    - user: root
    - group: root

解釋說明:

第一行:告訴管理工具,這是一個id說明,如我這是管理nginx配置的,我就寫nginx
第二行:告訴管理工具,這個軟件須要被安裝,若是沒安裝就會執行yum安裝
第三行:須要安裝的軟件名稱
第四行:告訴管理工具,這是服務管理
第五行:告訴管理工具,這個服務需保證是運行狀態
第六行:告訴管理工具,這個服務設置開機啓動
第七-九行:觀察file文件改動,有改動就重啓服務
第十二行:文件標識
第十三行:文件管理
第十四行:指定數據源在哪裏,即服務端的源,當這個文件被改動時,就會觸發包管理工具,更改上面file指定的文件,能夠
當作是同步更新。
第十五行:指定file文件的權限
第十六行:指定文件的所屬用戶
第十七行:指定文件的所屬組
第十八行-第二十三行,請參考 十二——十七行

5. 而後把master上nginx目錄下的 nginx.conf  和 default.conf 複製到salt 的nginx目錄下(/srv/salt/nginx)

如今進行測試吧:

rpm -qa | grep nginx

wKioL1MmcevDa7-XAABqKDAE1Dw760.jpg

如今咱們在服務端進行推送管理:

salt 'minion.hello.com' state.highstate

wKiom1MmcpPAssqCAAKfJDyL6U8385.jpg

wKioL1MmeDyzCje4AAD6sji82UA893.jpg

而後再客戶端驗證

wKiom1Mmc4zAIcwBAABzE34gJ8U292.jpg

到這裏就完成master 指定客戶端安裝nginx服務。若是有幾百臺機器同時須要安裝,豈不是很方便。

相關文章
相關標籤/搜索