一.部署相關說明:
Saltstack服務端:master
Saltstack客戶端:minion
Saltstack master和minion均爲最新穩定版本:2015.8.1
安裝master的系統環境:CentOS6.4x86_64
安裝minion使用salt-ssh進行批量部署在CentOS5、CentOS6等平臺上
本次安裝master和minion都是按照官方文檔的安裝步驟
文檔鏈接:https://docs.saltstack.com/en/latest/topics/index.html
以下將介紹使用salt-ssh批量部署minion
二.部署前準備:
2.1創建相關目錄
# mkdir -p /srv/salt/minions/{5,6} ##5和6目錄存在CentOS5和CentOS6需要的文件
2.2準備yum安裝所需的repo及相關key文件
按照官方文檔將安裝minion需要的GPG key和repo配置文件分別放入5和6這兩個目錄
因爲CentOS5和CentOS6平臺安裝的GPG key和repo文件都不一樣所以單放兩個目錄
批量安裝使用寫好的state文件讓minion端通過salt協議從master上拷貝到相應目錄中
2.3 saltstack GPG key和saltstack repo文件獲取
CentOS5
wget https://repo.saltstack.com/yum/rhel5/SALTSTACK-EL5-GPG-KEY.pub
注:爲了在state文件裏使用方便,將CentOS5的key文件重命名爲SALTSTACK-GPG-KEY.pub
CentOS6
wget https://repo.saltstack.com/yum/rhel6/SALTSTACK-GPG-KEY.pub
CentOS5 saltstack.repo:
####################
# Enable SaltStack's package repository
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS 5
baseurl=https://repo.saltstack.com/yum/rhel5
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/rhel5/SALTSTACK-EL5-GPG-KEY.pub
CentOS6 saltstack.repo:
####################
# Enable SaltStack's package repository
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS 6
baseurl=https://repo.saltstack.com/yum/rhel6
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/rhel6/SALTSTACK-GPG-KEY.pub
2.4在minions目錄放入minion的配置,修改內容如下:
master:salt.hj.com ## master主機名或ip地址
id: {{ grains['fqdn'] }} ## minion_id使用minion的主機名
2.5在/srv/salt/目錄下創建安裝minion的state文件
# vim /srv/salt/minion_install
rpm_add:
file.managed:
-name: /tmp/SALTSTACK-GPG-KEY.pub
-source: salt://minions/{{ grains['osmajorrelease'] }}/SALTSTACK-GPG-KEY.pub
cmd.run:
- cwd: /tmp
-name: rpm --import SALTSTACK-GPG-KEY.pub
-name: rm -rf SALTSTACK-GPG-KEY.pub
salt_repo:
file.managed:
-name: /etc/yum.repos.d/saltstack.repo
-unless: test -e /etc/yum.repos.d/saltstack.repo
-source: salt://minions/{{ grains['osmajorrelease'] }}/saltstack.repo
salt_pkg:
cmd.run:
-name: yum clean expire-cache
pkg.installed:
-name: salt-minion
-require:
- file: salt_repo
salt_conf:
file.managed:
-name: /etc/salt/minion
-source: salt://minions/minion
-backup: minion
-template: jinja
-require:
- pkg: salt_pkg
salt_service:
service.running:
-name: salt-minion
- enable: True
- watch:
- file: /etc/salt/minion
三.salt-ssh的安裝配置
3.1salt-ssh介紹
salt-ssh功能正式使用是在2014.7.0的版本中開始的,它是依賴ssh 來進行遠程命令執行的工具,支持 salt 大部分的功能,如 grains、modules、state 等,salt-ssh 並沒有繼承原來的通訊架構 (ZeroMQ),所以執行速度不如salt執行的快;salt-ssh好處就是不需要在客戶端安裝 minion,也不需要安裝 master(直接安裝 salt-ssh 這個包即可),作爲salt的補充在初次批量安裝minion或某些不能安裝minion的特殊場景下還是非常好用的
3.2salt-ssh安裝
# yum install salt-ssh
# salt-ssh ‘*’ [options ] sys.doc 查看詳細模塊用法
3.3salt-ssh配置使用
salt-ssh 需要配合roster使用,配置roster,默認路徑/etc/salt/roster
# vim /etc/salt/roster
test1: ## 自定義ID名字,強烈建議使用ip地址
host: 192.168.1.2 ##遠程主機IP地址
user: fred ##用戶名
passwd: foobarbaz ##密碼
port:22 ##如果默認端口可以省略
test2:
host: 192.168.1.3
# salt-ssh '*' test.ping ##測試能否遠程連接客戶端
# salt-ssh 'web1' disk.usage ##可以調用salt的模塊對指定ID進行操作
注:使用salt-ssh在第一次成功與客戶端連接後,會把自己的公鑰複製到遠程客戶端上
下次便可以將roster中的用戶名密碼刪除掉保留host主機的信息就可以。圖中的error報錯提示是CentOS5版本的python版本低,安裝python26就可以了
salt-ssh 使用-r 可以調用shell命令
四.使用salt-ssh批量安裝minion
4.1salt-minion批量安裝
# salt-ssh '*' state.sls minion_install
注:測試中在安裝minion的時候發現CentOS6.4的版本中如果在安裝前沒有yum update是裝不上的,趕巧在CentOS官網中bug中看到相同的錯誤(測試中發現6.4有這個問題),鏈接如下:
https://bugs.centos.org/view.php?id=9212
使用yum update更新後是可以安裝的,更新後系統爲CentOS6.7!
4.2主機名的配置(如果是用IP作爲ID的話可以省略)
因爲本次批量安裝miminion後計劃是用主機名做爲ID表示進行通訊,上面的state文件都有體現。所以可以使用salt-ssh 批量添加host文件中
# salt-ssh '*' -r 'echo “10.0.2.98salt.hj.com">>/etc/hosts' ##所有minion對master的解析
注:如果內網有DNS,可以在內網DNS上配置域名解析更方便
# salt-ssh '*' -r 'grep HOSTNAME /etc/sysconfig/network' ##將minion的主機名和ip信息添加到master的host文件中
4.3 服務批量重啓與key接收測試
批量重啓minion服務後master接收minion端發來的key
# salt-ssh '*' -r '/etc/init.d/salt-minion restart'
# salt-key ##查看key的接收情況,默認會在未接受的key中
# salt-key -A ##接收所有key
# salt ‘*’ test.ping ##測試minion端在線情況