
要通過salt來更新所有伺服器,你隻需運作以下指令即可
salt '*' pkg.upgrade
<a target="_blank"></a>
salt采用伺服器-用戶端模式,伺服器端稱為領主,而用戶端則稱為下屬。
[root@salt-master~]# yum install salt-master
salt配置檔案位于/etc/salt和/srv/salt。salt雖然可以開箱即用,但我還是建議你将日志配置得更詳細點,以友善日後排除故障。
[root@salt-master ~]# vim /etc/salt/master
# 預設是warning,修改如下
log_level: debug
log_level_logfile: debug
[root@salt-master ~]# systemctl start salt-master
[root@salt-minion~]#yum install salt-minion
# 添加你的salt領主的主機名
[root@salt-minion~]#vim /etc/salt/minion
master: salt-master.com
# 啟動下屬
[root@salt-minion~] systemctl start salt-minion
在啟動時,下屬客戶機會生成一個密鑰和一個id。然後,它會連接配接到salt領主伺服器并驗證自己的身份。salt領主伺服器在允許下屬客戶機下載下傳配置之前,必須接受下屬的密鑰。
# 列出所有密鑰
[root@salt-master~] salt-key -l
accepted keys:
unaccepted keys:
minion.com
rejected keys:
# 使用id 'minion.com'指令接受密鑰
[root@salt-master~]salt-key -a minion.com
在接受下屬客戶機的密鑰後,你可以使用‘salt’指令來立即擷取資訊。
# 檢查下屬是否啟動并運作
[root@salt-master~] salt 'minion.com' test.ping
minion.com:
true
# 在下屬客戶機上運作shell指令
[root@salt-master~]# salt 'minion.com' cmd.run 'ls -l'
total 2988
-rw-r--r--. 1 root root 1024 jul 31 08:24 1g.img
-rw-------. 1 root root 940 jul 14 15:04 anaconda-ks.cfg
-rw-r--r--. 1 root root 1024 aug 14 17:21 test
# 安裝/更新所有伺服器上的軟體
[root@salt-master ~]# salt '*' pkg.install git
salt指令需要一些元件來發送資訊,其中之一是下屬客戶機的id,而另一個是下屬客戶機上要調用的函數。
在第一個執行個體中,我使用‘test’子產品的‘ping’函數來檢查系統是否啟動。該函數并不是真的實施一次ping,它僅僅是在下屬客戶機作出回應時傳回‘真’。
‘cmd.run’用于執行遠端指令,而‘pkg’子產品包含了包管理的函數。本文結尾提供了全部内模組化塊的清單。
salt使用一個名為顆粒(grains)的界面來擷取系統資訊。你可以使用顆粒在指定屬性的系統上運作指令。
[root@vps4544 ~]# salt -g 'os:centos' test.ping
minion:
為了使軟體配置自動化,你需要使用狀态系統,并建立狀态檔案。這些檔案使用yaml格式和python字典、清單、字元串以及編号來構成資料結構。将這些檔案從頭到尾研讀一遍,這将有助于你更好地了解它的配置。
[root@salt-master~]# vim /srv/salt/vim.sls
vim-enhanced:
pkg.installed
/etc/vimrc:
file.managed:
- source: salt://vimrc
- user: root
- group: root
- mode: 644
該檔案的第一和第三行稱為狀态id,它們必須包含有需要管理的包或檔案的确切名稱或路徑。在狀态id之後是狀态和函數聲明,‘pkg’和‘file’是狀态聲明,而‘installed’和‘managed’是函數聲明。函數接受參數,使用者、組、模式和源都是函數‘managed’的參數。
要将該配置應用到下屬用戶端,請移動你的‘vimrc’檔案到‘/src/salt’,然後運作以下指令。
[root@salt-master~]# salt 'minion.com' state.sls vim
----------
id: vim-enhanced
function: pkg.installed
result: true
comment: the following packages were installed/updated: vim-enhanced.
started: 09:36:23.438571
duration: 94045.954 ms
changes:
new:
7.4.160-1.el7
old:
summary
------------
succeeded: 1 (changed=1)
failed: 0
total states run: 1
你也可以添加依賴關系到你的配置中。
[root@salt-master~]# vim /srv/salt/ssh.sls
openssh-server:
/etc/ssh/sshd_config:
- mode: 600
- source: salt://ssh/sshd_config
sshd:
service.running:
- require:
- pkg: openssh-server
這裡的‘require’聲明是必須的,它在‘service’和‘pkg’狀态之間建立依賴關系。該聲明将首先檢查包是否安裝,然後運作服務。
但是,我更偏向于使用‘watch’聲明,因為它也可以檢查檔案是否修改和重新開機服務。
- source: salt://sshd_config
- watch:
- file: /etc/ssh/sshd_config
[root@vps4544 ssh]# salt 'minion.com' state.sls ssh
seven.leog.in:
id: openssh-server
comment: package openssh-server is already installed.
started: 13:01:55.824367
duration: 1.156 ms
id: /etc/ssh/sshd_config
function: file.managed
comment: file /etc/ssh/sshd_config updated
started: 13:01:55.825731
duration: 334.539 ms
diff:
---
+++
@@ -14,7 +14,7 @@
# selinux about this change.
# semanage port -a -t ssh_port_t -p tcp #portnumber
#
-port 22
+port 422
#addressfamily any
#listenaddress 0.0.0.0
#listenaddress ::
id: sshd
function: service.running
comment: service restarted
started: 13:01:56.473121
duration: 407.214 ms
succeeded: 4 (changed=2)
total states run: 4
在單一目錄中維護所有的配置檔案是一項複雜的大工程,是以,你可以建立子目錄并在其中添加配置檔案init.sls檔案。
[root@salt-master~]# mkdir /srv/salt/ssh
[root@salt-master~]# vim /srv/salt/ssh/init.sls
[root@vps4544 ssh]# cp /etc/ssh/sshd_config /srv/salt/ssh/
top檔案(top.sls)是用來定義你的環境的檔案,它允許你映射下屬客戶機到包,預設環境是‘base’。你需要定義在基本環境下,哪個包會被安裝到哪台伺服器。
如果對于一台特定的下屬客戶機而言,有多個環境,并且有多于一個的定義,那麼預設情況下,基本環境将取代其它環境。
要定義環境,你需要将它添加到領主配置檔案的‘file_roots’指針。
file_roots:
base:
- /srv/salt
dev:
- /srv/salt/dev
現在,添加一個top.sls檔案到/src/salt。
[root@salt-master ~]# vim /srv/salt/top.sls
'*':
- vim
'minion.com':
- ssh
應用top檔案配置
[root@salt-master~]# salt '*' state.highstate
comment: package vim-enhanced is already installed.
started: 13:10:55
duration: 1678.779 ms
started: 13:10:55.
duration: 2.156 ms
下屬客戶機将下載下傳top檔案并搜尋用于它的配置,領主伺服器也會将配置應用到所有下屬客戶機。
這僅僅是一個salt的簡明教程,如果你想要深入學習并了解,你可以通路下面的連結。如果你已經在使用salt,那麼請告訴我你的建議和意見吧。
閱讀連結
顆粒
salt和puppet的充分比較
内建執行子產品的完全清單
----------------------------------------------------------------------------------------------------------------------------
原文釋出時間:2015-02-22
本文來自雲栖合作夥伴“linux中國”