Saltstack服務端:masterphp
Saltstack客戶端:minionhtml
Saltstack master和minion均爲最新穩定版本:2015.8.1python
安裝master的系統環境:CentOS6.4x86_64web
安裝minion使用salt-ssh進行批量部署在CentOS5、CentOS6等平臺上shell
本次安裝master和minion都是按照官方文檔的安裝步驟vim
文檔連接:https://docs.saltstack.com/en/latest/topics/index.htmlcentos
如下將介紹使用salt-ssh批量部署minion架構
# mkdir -p /srv/salt/minions/{5,6} ##5和6目錄存在CentOS5和CentOS6須要的文件less
按照官方文檔將安裝minion須要的GPG key和repo配置文件分別放入5和6這兩個目錄ssh
由於CentOS5和CentOS6平臺安裝的GPG key和repo文件都不同因此單放兩個目錄
批量安裝使用寫好的state文件讓minion端經過salt協議從master上拷貝到相應目錄中
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
master:salt.hj.com ## master主機名或ip地址
id: {{ grains['fqdn'] }} ## minion_id使用minion的主機名
# 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功能正式使用是在2014.7.0的版本中開始的,它是依賴ssh 來進行遠程命令執行的工具,支持 salt 大部分的功能,如 grains、modules、state 等,salt-ssh 並無繼承原來的通信架構 (ZeroMQ),因此執行速度不如salt執行的快;salt-ssh好處就是不須要在客戶端安裝 minion,也不須要安裝 master(直接安裝 salt-ssh 這個包便可),做爲salt的補充在初次批量安裝minion或某些不能安裝minion的特殊場景下仍是很是好用的
# yum install salt-ssh
# salt-ssh ‘*’ [options ] sys.doc 查看詳細模塊用法
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 '*' 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!
由於本次批量安裝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文件中
批量重啓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端在線狀況