简述
saltstack
saltstack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。
saltstack是使用python语言开发的,同时也支持restAPI方便二次开发以及和它平台集成,同时官方也发布了一个Web管理界面halite。
优点:
- 首先,他速度快,基于消息队列+线程,跑完多台设备,都是毫秒级别的
- 其次,非常灵活,源码是python,方便理解和自定义模块(python 语言相对于其他的perl、ruby等还是很好理解的)
- 命令简单,功能强大
saltstack运行方式
- Local
- Master/Minion
- Salt SSH
本文使用Master/Minion运行方式。
saltstack三大功能
- 远程执行
- 配置管理
- 云管理
saltstack数据系统
- Grains (静态数据)
- pillar (动态数据)
saltstack配置管理
- SLS(YAML、Jinja)
- Highstate
- States Module
实现环境
准备三台机器,这三台机器都关闭 selinux,清空防火墙规则。
- saltstack ==> 172.16.0.19 (服务端)
- client1 ==> 172.16.0.20 (客户端)
- client2 ==> 172.16.0.21 (客户端)
查看版本和内核
[root@saltstack ~]# cat /etc/redhat-release
CentOS Linux release 7.3.1611 (Core)
[root@saltstack ~]# uname -rm
3.10.0-514.6.1.el7.x86_64 x86_64
分别设置 hostname,设置完毕xshell注销重新连接一下
[root@saltstack ~]# hostnamectl set-hostname saltstack
[root@client1 ~]# hostnamectl set-hostname client1
[root@client2 ~]# hostnamectl set-hostname client2
编辑 hosts 文件
每台都设置,若机器太多,可以通过搭建 DNS,则不用在每台机器上设置这个
[root@saltstack ~]# vi /etc/hosts
添加下面内容
172.16.0.19 saltstack
172.16.0.20 client1
172.16.0.21 client2
开始安装
分别为三台机器添加阿里云epel源
[root@saltstack ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
[root@saltstack ~]# mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
[root@saltstack ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
服务端安装
[root@saltstack ~]# yum -y install salt-master salt-minion
客户端安装
[root@client1 ~]# yum -y install salt-minion
客户端安装
[root@client2 ~]# yum -y install salt-minion
配置master
服务端和客户端都要配置
[root@saltstack ~]# vi /etc/salt/minion +16
以下两种方式都可以,选择其中一种即可
# master改为服务端的主机名
master: saltstack
# master改为服务端的IP
master: 172.16.0.19
分别修改三台机器minion文件中的的id为自己的主机名
[root@client1 ~]# vi /etc/salt/minion +78
id: client1
[root@client2 ~]# vi /etc/salt/minion +78
id: client2
启动saltstack服务
服务端
[root@saltstack ~]# systemctl enable salt-master
[root@saltstack ~]# systemctl enable salt-minion
[root@saltstack ~]# systemctl start salt-master
[root@saltstack ~]# systemctl start salt-minion
客户端
[root@client1 ~]# systemctl enable salt-minion
[root@client1 ~]# systemctl start salt-minion
配置认证
服务端操作
[root@saltstack ~]# salt-key -a client1
The following keys are going to be accepted:
Unaccepted Keys:
client1
Proceed? [n/Y] y
Key for minion client1 accepted.
[root@saltstack ~]# salt-key -a client2
The following keys are going to be accepted:
Unaccepted Keys:
client2
Proceed? [n/Y] y
Key for minion client2 accepted.
[root@saltstack ~]# salt-key -a saltstack
The following keys are going to be accepted:
Unaccepted Keys:
saltstack
Proceed? [n/Y] y
Key for minion saltstack accepted.
[root@saltstack ~]# salt-key
Accepted Keys:
client1
client2
saltstack
Denied Keys:
Unaccepted Keys:
Rejected Keys:
说明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令查看到已经签名的客户端。此时我们在客户端的 /etc/salt/pki/minion 目录下面会多出一个minion_master.pub 文件。
测试验证
示例1: salt '*' test.ping //检测通讯是否正常,也可以指定其中一个 'client1'
[root@saltstack ~]# salt '*' test.ping
saltstack:
True
client2:
True
client1:
True
[root@saltstack ~]# salt 'client1' test.ping
client1:
True
示例2: salt '*' cmd.run 'df -h' //远程执行命令
[root@saltstack ~]# salt '*' cmd.run 'df -hT'
client2:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 17G 13G 4.2G 76% /
devtmpfs devtmpfs 97M 0 97M 0% /dev
tmpfs tmpfs 111M 12K 111M 1% /dev/shm
tmpfs tmpfs 111M 8.8M 102M 8% /run
tmpfs tmpfs 111M 0 111M 0% /sys/fs/cgroup
/dev/sda1 xfs 297M 202M 96M 68% /boot
tmpfs tmpfs 23M 0 23M 0% /run/user/0
saltstack:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 17G 6.8G 11G 40% /
devtmpfs devtmpfs 475M 0 475M 0% /dev
tmpfs tmpfs 489M 16K 489M 1% /dev/shm
tmpfs tmpfs 489M 14M 476M 3% /run
tmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 xfs 297M 202M 96M 68% /boot
tmpfs tmpfs 98M 0 98M 0% /run/user/0
tmpfs tmpfs 98M 0 98M 0% /run/user/994
client1:
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 xfs 17G 13G 4.1G 77% /
devtmpfs devtmpfs 97M 0 97M 0% /dev
tmpfs tmpfs 111M 12K 111M 1% /dev/shm
tmpfs tmpfs 111M 13M 98M 12% /run
tmpfs tmpfs 111M 0 111M 0% /sys/fs/cgroup
/dev/sda1 xfs 297M 202M 96M 68% /boot
tmpfs tmpfs 23M 0 23M 0% /run/user/0
说明: 这里的 * 必须是在 master 上已经被接受过的客户端,可以通过 salt-key 查到,通常是我们已经设定的 id 值。关于这部分内容,它支持通配、列表以及正则。 比如两台客户端 client1、client2, 那我们可以写成 salt 'client*' salt 'client[2]' sa