saltstack是一个新的基础平台管理工具,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。
1、 saltstack是使用python语言开发的;
2、 轻量级的管理工具,批量执行命令;
3、常用模块:pkg(包)、file(文件)、cmd(执行命令或脚本)、user、 service、cron
4、saltstack数据系统
Grains (静态数据)
pillar (动态数据)
远程执行
配置管理
1.他速度快,基于消息队列+线程,跑完多台设备,都是毫秒级别的
2.非常灵活,源码是python,方便理解和自定义模块(python 语言相对于其他的perl、ruby等还是很好理解的)
命令简单,功能强大
部署minion端较为不便
grains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip等静态信息。
grains的信息并不是动态的,并不会时时变更,它只是在 minion 启动时收集到的
pillar 和 grains 不一样,是在 master 上定义的,并且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)可以存在 pillar 里,还可以定义变量等。可以理解为动态数据
他是saltstack的最核心功能,通过预先指定好的sls文件对被控主机进行管理:包/文件/网络配置/系统服务/系统用户等。
master 管理端
web 被管理端
yum install -y epel-release
yum -y install salt-master
vi /etc/salt/master
修改如下:
15行 interface: 192.168.175.132 //监听本地地址
215行 auto_accept: True //避免运行salt-key来确认证书认证
416行 file_roots:
base: #注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。
- /srv/salt //saltstack文件根目录位置,目录需要创建
710行组分类:
nodegroups: #定义被管理节点服务器名称
group1: 'web01.saltstack.com' #指定主机名
group2: 'web02.saltstack.com'
552行 pillar_opts: True //开启pillar动态数据功能,同步文件功能
529行
pillar_roots:
base:
- /srv/pillar //pillar的主目录站点,需要创建,站点不要开多,相同的开一个就行
cat /etc/salt/master | grep -v ^$ | grep -v ^# //查看对主配置文件做的更改
mkdir /srv/salt
mkdir /srv/pillar
systemctl start salt-master
systemctl enable salt-master
netstat -anpt | egrep '4505|4506'
在两台被管理端上分别配置:
yum -y install salt-minion
vi /etc/salt/minion
修改配置如下:
16行 master: 192.168.175.132 //指定主控端IP
78行 id: web01.saltstack.com //指定被控端即自己主机名
systemctl start salt-minion
salt '*' test.ping #*代表所有主机
web01.saltstack.com:
True
web02.saltstack.com:
True
salt '*' cmd.run 'df -h' //远程执行命令
查看被控主机上grains所有值:(每次minion在启动时获取到的客户端信息)
salt ‘web01.saltstack.com’ grains.items (静态数据)
salt ‘web01.saltstack.com’ pillar.items (动态数据)
salt-key
Accepted Keys 允许
Denied Keys 被限制
Unaccepted Kyes 没有通过
Rejected Keys 拒绝
下面进行的演示是远程通过 yum 方式安装 Apache。步骤如下:
vi /etc/salt/master // 打开如下内容的注释
file_roots:
base:
- /srv/salt/
注意:环境: base、dev(开发环境)、test(测试环境)、prod(生产环境)。
mkdir /srv/salt
vi /srv/salt/top.sls
base:
'*': #指定所有主机
- apache #指定执行操作文件apache
注意:'*',则表示在所有的被控客户端执行 apache 模块。
vi /srv/salt/apache.sls
apache-service: #apache-service 是自定义的 id 名。
pkg.installed: #要安装的包
- names: // 如果只有一个服务,那么就可以写成 –name: httpd 不用再换一行
- httpd #安装的包名字
- httpd-devel #安装的包名字
service.running: #要执行的服务
- name: httpd
- enable: True
注意:apache-service 是自定义的 id 名。pkg.installed 为包安装函数,下面是要安装的包的名字。service.running 也是一个函数,来保证指定的服务启动,enable 表示开机启动。
systemctl restart salt-master
salt '*' state.highstate