本文共 3213 字,大约阅读时间需要 10 分钟。
Salt是一个基础平台管理工具。SaltStack 采用 C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信。master监听4505和4506端口,4505为master和minion认证通信端口,4506为master用来发送命令或者接收minion的命令执行返回信息。
官网:docs.saltstack.com
SaltStack常用模块
pkg模块 是包管理,包括增删更新。
file模块 管理文件操作,包括同步文件、设置文件权限和所属用户组、删除文件等操作。cmd模块 是在Minion上执行命令或者脚本。user模块 管理系统账户操作。service模块 管理系统服务操作cron模块 管理cron服务操作Saltstack工作机制
• Master和Minion都以守护进程的方式运行
• Master监听配置文件里定义的ret_port(接收minion请求),和publish_port(发布消息)的端口
• 当Minion运行时,它会自动连接到配置文件里定义的Master地址ret_port端口进行连接认证
• 当Master和Minion可以正常通信后,就可以进行各种各样的配置管理工作了
操作篇
操作环境:
192.168.80.181 Master
salt-master salt-minion192.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:
'*':
vi /srv/salt/apache.sls
apache-service:
pkg.installed:注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。
重启服务
systemctl restart salt-master
执行命令
salt 'web01.saltstack.com' state.highstate
image.png
image.png
并且被控端已经运行了httpd服务
image.png
转载于:https://blog.51cto.com/14241151/2363181