一.部署相关说明:

Saltstack服务端:master

Saltstack客户端:minion

Saltstack masterminion均为最新稳定版本:2015.8.1

安装master的系统环境:CentOS6.4x86_64

安装minion使用salt-ssh进行批量部署在CentOS5CentOS6等平台上

本次安装masterminion都是按照官方文档的安装步骤

文档链接:https://docs.saltstack.com/en/latest/topics/index.html

以下将介绍使用salt-ssh批量部署minion

 

二.部署前准备:

2.1创建相关目录

# mkdir -p /srv/salt/minions/{5,6}       ##56目录存在CentOS5CentOS6需要的文件

2.2准备yum安装所需的repo及相关key文件

按照官方文档将安装minion需要的GPG keyrepo配置文件分别放入56这两个目录

因为CentOS5CentOS6平台安装的GPG keyrepo文件都不一样所以单放两个目录

批量安装使用写好的state文件让minion端通过salt协议从master上拷贝到相应目录中

wKiom1ZznbjjnybuAAE3z5qz_gs927.jpg

 

2.3 saltstack GPG keysaltstack repo文件获取

CentOS5

wget https://repo.saltstack.com/yum/rhel5/SALTSTACK-EL5-GPG-KEY.pub

:为了在state文件里使用方便,将CentOS5key文件重命名为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.4minions目录放入minion的配置,修改内容如下:

mastersalt.hj.com               ## master主机名或ip地址

id: {{ grains['fqdn'] }}              ## minion_id使用minion的主机名

 

2.5/srv/salt/目录下创建安装minionstate文件

# 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 大部分的功能,如 grainsmodulesstate 等,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           ##密码

 port22                   ##如果默认端口可以省略

test2:

 host: 192.168.1.3

 

# salt-ssh '*' test.ping        ##测试能否远程连接客户端

Saltstack批量部署客户端_第1张图片

# salt-ssh 'web1'  disk.usage   ##可以调用salt的模块对指定ID进行操作

Saltstack批量部署客户端_第2张图片

 

:使用salt-ssh在第一次成功与客户端连接后,会把自己的公钥复制到远程客户端上

下次便可以将roster中的用户名密码删除掉保留host主机的信息就可以。图中的error报错提示是CentOS5版本的python版本低,安装python26就可以了

wKioL1ZznUrBk7IhAABXD1rCZGM038.jpg

 

 salt-ssh 使用-r 可以调用shell命令

Saltstack批量部署客户端_第3张图片

 

四.使用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'   ##所有minionmaster的解析

注:如果内网有DNS,可以在内网DNS上配置域名解析更方便

 

# salt-ssh '*'  -r 'grep HOSTNAME /etc/sysconfig/network'  ##minion的主机名和ip信息添加到masterhost文件中

 

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端在线情况