Salt是一个基础平台管理工具。SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间经过ZeroMQ消息队列通讯。master监听4505和4506端口,4505为master和minion认证通讯端口,4506为master用来发送命令或者接收minion的命令执行返回信息。node
官网:docs.saltstack.comweb
SaltStack经常使用模块apache
pkg模块 | 是包管理,包括增删更新。 |
file模块 | 管理文件操做,包括同步文件、设置文件权限和所属用户组、删除文件等操做。 |
cmd模块 | 是在Minion上执行命令或者脚本。 |
user模块 | 管理系统帐户操做。 |
service模块 | 管理系统服务操做 |
cron模块 | 管理cron服务操做 |
Saltstack工做机制bash
• Master和Minion都以守护进程的方式运行服务器
• Master监听配置文件里定义的ret_port(接收minion请求),和publish_port(发布消息)的端口网络
• 当Minion运行时,它会自动链接到配置文件里定义的Master地址ret_port端口进行链接认证app
• 当Master和Minion能够正常通讯后,就能够进行各类各样的配置管理工做了ide
操做篇函数
操做环境:工具
192.168.80.181 | Master | salt-master salt-minion |
192.168.80.182 | Minion | salt-minion |
192.168.80.183 | Minion | salt-minion |
注:三台都是NAT模式
----
1 修改主机名
hostnamectl set-hostname master.saltstack.com
hostnamectl set-hostname web01.saltstack.com
hostnamectl set-hostname web02.saltstack.com
init 6 重启生效
2 修改/etc/hosts文件(3台都作)
192.168.80.181 master.saltstack.com
192.168.80.182 web01.saltstack.com
192.168.80.183 web02.saltstack.com
3 安装
systemctl stop firewalld && setenforce 0
yum install -y epel-release
服务器:
yum -y install salt-master salt-minion
客户端:
yum -y install salt-minion
4 服务端和客户端配置
vi /etc/salt/minion
修改配置以下:
16行 master: 192.168.80.181 //指定主控端IP
78行 id: web01.saltstack.com //指定被控端主机名
注:改为相应的主机名
5 启动被控端服务
systemctl start salt-minion
systemctl start salt-master
6 认证
salt-key -L 查看待认证的服务器
Accepted Keys:认证经过
Denied Keys:旧的的认证
Unaccepted Keys:等待认证
Rejected Keys:拒绝认证
手动添加认证:
认证的方式是salt-key -a 客户端id
salt-key -a web01
salt-key -a web02
salt-key -a master
说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可使用 salt-key 命令查看到已经签名的客户端。此时咱们在客户端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件。
salt-key -L
7 在主控端测试与被控端的通讯状态!
salt '*' test.ping
salt '*' cmd.run 'df -h' //远程执行命令
salt-key //查看在 master 上已经被接受过的客户端
注:
Saltstack几个重要的组件:
grains
grains 是在 minion(客户端)启动时收集到的一些信息,好比操做系统类型、网卡ip等静态信息。
grains的信息并非动态的,并不会时时变动,它只是在 minion 启动时收集到的
pillar
pillar 和 grains 不同,是在 master 上定义的,而且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)能够存在 pillar 里,还能够定义变量等。
State
他是saltstack的最核心功能,经过预先指定好的sls文件对被控主机进行管理:包/文件/网络配置/系统服务/系统用户等。
在master服务器:
vi /etc/salt/master
file_roots: //416行
base:
- /srv/salt //saltstack文件根目录位置,目录须要建立
nodegroups: //710行组分类
group1: 'web01.saltstack.com'
group2: 'web02.saltstack.com'
pillar_opts: True //552行,开启pillar功能
pillar_roots: //529行
base:
- /srv/pillar //pillar的主目录,须要建立
cat /etc/salt/master | grep -v ^$ | grep -v ^# //查看对主配置文件作的更改
systemctl restart salt-master
netstat -anpt | egrep '4505|4506'
查看被控主机上grains全部值:(每次minion在启动是都会获取客户端信息)
salt 'master' grains.ls // 列出全部的 grains 项目名字
salt 'web01.saltstack.com' grains.items (静态数据)
salt 'web01.saltstack.com' pillar.items (动态数据)
配置管理安装Apache
下面进行的演示是远程经过 yum 方式安装 Apache。步骤以下:
修改配置文件
注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。
vi /srv/salt/top.sls
base: '*': - apache
vi /srv/salt/apache.sls
apache-service: pkg.installed: - names: - httpd - httpd-devel service.running: - name: httpd - enable: True
注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。
重启服务
systemctl restart salt-master
执行命令
salt 'web01.saltstack.com' state.highstate
而且被控端已经运行了httpd服务