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
# mkdir -p /srv/salt/minions/{5,6} ##5和6目录存在CentOS5和CentOS6需要的文件
按照官方文档将安装minion需要的GPG key和repo配置文件分别放入5和6这两个目录
因为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端在线情况