Saltstack 安装配置 及 简单操作示例

Saltstack 介绍

通过部署 Saltstack环境,可以在成千上万台服务器上批量执行命令。对于不同的业务进行集中管理、分发文件、采集数据、软件包管理等,有利于运维人员提高工作效率,规范业务配置和操作。

Saltstack由 Master和 Minion构成, Master是服务端,表示一台服务器; Minion
是客户服务端,表示多台服务器。在 Master上发送命令给符合条件的 Minion, Minion
就会执行相应的命令, Master和 Minion之间是通过 Zeromq(消息队列)进行通信的。

Saltstack的 Master端监听4505与4506端口,4505为 Master和 Minion认证通信端口,4506为 Master用来发送命令或者接收 Minion的命令执行返回信息。

当客户端启动后,会主动连接Master端注册,然后一直保持该TCP连接,而Master通过这条TCP连接对客户端进行控制。如果连接断开, Master对客户端将不能进行控制。但是,当客户端检查到连接断开后,会定期向 Master端请求注册连接。

saltstack安装

本篇安装一台master服务器 (192.168.100.101)
以及两台 minion服务器 (192.168.100.102 192.168.100.103)

分别修改各自的主机名
vim /etc/hostname

master服务器: master.saltstack.com
minion服务器: web01.saltstack.com
               web02.saltstack.com

并配置主机文件 (三台都需要配置)
vim /etc/hosts

192.168.100.101 master.saltstack.com
192.168.100.102 web01.saltstack.com
192.168.100.103 web02.saltstack.com

配置完成 重启生效

------------在 master服务器上-----------
yum install epel-release -y     ##配置epel源

yum install salt-master -y    安装主服务器

vim /etc/salt/master

interface: 192.168.100.101      ##第15行,修改监听地址为本机地址

auto_accept: True     ##第215行,主服务器会自动认证被控端的认证,只要被控端在设置完主服务器的IP地址后启动服务,主服务器就会允许被控端自动认证,以避免以后每次都要运行salt-key来确认认证书信任。

file_roots:
  base:
    - /srv/sale
##第416行,去掉注释。开启saltstack文件根目录位置,注意这个目录默认没有创建,需要自己手动创建。

nodegroups:
  group1: 'web01.saltstack.com'
  group2: 'web02.saltstack.com'
##第710行,配置组分类

pillar_opts: True    ##第552行,开启pillar功能,同步文件功能

pillar_roots:
    base:
     - /srv/pillar  
##第529行,去掉注释,pillar的主目录,需要自己创建

接下来就是创建salt与pillar文件根目录
mkdir /srv/salt
mkdir /srv/pillar

systemctl start salt-master
systemctl enabled salt-master

-------------在 minion服务器上(两台一样) ------------------
yum install epel-release -y     ##配置epel源

yum install salt-minion -y    

vim /etc/salt/minion

master: 192.168.100.101     ##第16行,指定主服务器的IP

id: web01.saltstack.com    ##第78行,指定被控端主机名

systemctl start salt-minion

-----------安装完成----------------------

在主服务器端进行操作

salt '*' test.ping         ##测试连接

web01.saltstack.com:
  True
web02.saltstack.com:
  True
## 说明配置成功

* 代表所有服务器,如需指定某一台,换成该服务器的主机名

salt '*' cmd.run 'xxx'    ##远程执行命令

salt-key     ##查看在主服务器上已经被接受过的客户端

salt '*' grains.items   ##查看被控端上grains所有值(静态数据)
salt '*' pillar.items     ##查看被控端上pillar所有值(动态数据)

grains和 pillar都是采集被控端数据的,但是 grains的特性在每次启动后汇报,没有pillar灵活,要知道 pillar是随时可变的,只要在master端修改了,一般都会立刻生效。所以 grains更适合做一些静态的属性值的采集,例如设备的角色、磁盘个数等诸如此类非常固定的属性。那么我们就可以得到一个大致的判断,如果你想定义的属性值是经常变化的,就采用pillar:如果很固定、不易变,就采用 grains。

示例

通过saltstack远程安装apache

mkdir /srv/salt      ##配置文件中需要开启
vim /srv/salt/top.sls     ##创建入口文件,入口文件的作用是定义pillar 的数据覆盖被控主机的有效范围
base:
  '*':
    - apache

vim /srv/salt/apache.sls
apache:          ##这里是自定义的名称
  pkg.installed:        ##安装包
    - names:
      - httpd
      - httpd-devel
  service.running:
    - name: httpd
    - enable: True

systemctl restart salt-master

salt '*' state.highstate    ##执行并刷新state配置命令

这样就可远程安装apache服务了

猜你喜欢

转载自blog.51cto.com/13625924/2155001