自动化运维之saltstack
1.saltstack介绍
SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建,SaltStack整合了Puppet和Chef的功能,更适合大规模批量管理服务器,配置简单。
三大主要功能:远程执行、配置管理、云管理
运行方式:local(本地)、Master/Minion(传统方式)、Syndic(分布式)、Salt SSH
saltstack官方网站
2.SaltStack工作原理
Saltstack使用Python开发,是一个非常简单易用和轻量级的管理工具。由Master和Minion构成,通过ZeroMQ进行通信。
Saltstack的master端监听4505与4506端口,4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口;salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。当然,客户端若检查到断开后会定期的一直连接master端的。
salt-master服务启动后会开启两个端口:4505和4506,minion没有端口,通过“双向密钥交换”(可通过tree /etc/salt/pki命令查看)来实现安全管理。salt-master每执行一条命令,所有minion均可收到。
3. saltstack安装
saltstack支持多种操作系统,如centos、redhat、debian、ubuntu、FreeBSD等,以及windows(仅支持minion)
安装 epel--------提供2015版本的salt
centos 6 64位
rpm -Uvh
http://mirrors.yun-idc.com/epel/6Server/x86_64/epel-release-6-8.noarch.rpm
master与minion端都需要安装
安装完成后在master端执行 yum -y install salt-master
在minion端执行yum -y install salt-minion
安装完环境:
主机名 |
IP |
salt-master |
192.168.132.20 |
salt-minion01 |
192.168.132.11 |
salt-minion01 |
192.168.132.10 |
minion端配置使其指向master:
vim /etc/salt/minion
添加 master: 192.168.132.20 为master IP,实际生产环境最好为域名。
master端启动:/etc/init.d/salt-master start
开机自启动:chkconfig salt-master on
minion端启动:/etc/init.d/salt-minion start
开机自启动:chkconfig salt-minion on
安装完后查看salt信息
[root@salt-master app]# salt '*' test.versions_report
salt-minion02:
Salt: 2015.5.10
Python: 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Jinja2: 2.2.1
M2Crypto: 0.20.2
msgpack-python: 0.4.6
msgpack-pure: Not Installed
pycrypto: 2.0.1
libnacl: Not Installed
PyYAML: 3.10
ioflo: Not Installed
PyZMQ: 14.3.1
RAET: Not Installed
ZMQ: 3.2.5
Mako: Not Installed
Tornado: Not Installed
timelib: Not Installed
dateutil: 1.4.1
salt-minion01:
Salt: 2015.5.10
Python: 2.6.6 (r266:84292, Aug 18 2016, 15:13:37)
Jinja2: 2.2.1
M2Crypto: 0.20.2
msgpack-python: 0.4.6
msgpack-pure: Not Installed
pycrypto: 2.0.1
libnacl: Not Installed
PyYAML: 3.10
ioflo: Not Installed
PyZMQ: 14.3.1
RAET: Not Installed
ZMQ: 3.2.5
Mako: Not Installed
Tornado: Not Installed
timelib: Not Installed
dateutil: 1.4.1
3.1 salt-key
查询帮助 salt-key --help
常用参数
-a -A -r -R -d -D -Y
查看key salt-key
接收minion端的key: salt-key -A -y ---》接收所有的minion且无需交互。接收完成后查看:
[root@salt-master master]# salt-key
Accepted Keys:
salt-minion01
salt-minion02
Denied Keys:
Unaccepted Keys:
Rejected Keys:
测试
[root@salt-master ~]# salt '*' test.ping
salt-minion01:
True
salt-minion02:
True
4. saltstack认证原理
salt的数据传输是通过AES加密,master和minion之间在通信前,需要进行认证。通过认证的方式保证安全性,完成一次认证后,master就可以自由的控制minion来完成各项工作了。
1. minion在第一次启动时,会在/etc/salt/pki/minion下生成minion.pem(private key)和minion.pub(public key),然后将minion.pub发送给master。
2. master在第一次启动时,会在/etc/salt/pki/master下生成master.pem和master.pub。通过salt-key接收minion的public key,在master的/etc/salt/pki/master/minions目录下存放,以minion id命名的public key,同时minion会保存一份master public key在/etc/salt/pki/minion_master.pub
认证小结:
minion将自己的公钥发送给master
master认证后会将自己的公钥放置在minion端
由于这里是测试环境,master与minion端都关闭了防火墙及selinux。不然master可能无法接收minion端的key。
5. saltstack远程执行
远程执行是saltstack的核心功能之一。主要使用salt模块可以批量给选定的minion端执行相应的命令,并获得返回结果。
如 salt '*' test.ping *代表所有,test表示模块,ping表示模块下的方法。
salt '*' disk.usage 查看磁盘使用情况
saltstack可以使用cmd.run(非常重要) 模块远程执行shell命令
//让所有minion节点运行uptime命令
[root@salt-master ~]# salt '*' cmd.run 'uptime'
salt-minion02:
10:30:44 up 1 day, 11:53, 1 user, load average: 0.00, 0.00, 0.00
salt-minion01:
10:30:45 up 1 day, 11:53, 1 user, load average: 0.00, 0.00, 0.00
#saltstack提供了大量的命令模块可以使用
#cmd.run可以执行所有的命令,不建议在生产环境中频繁使用。
6. saltstack配置管理
salt通过状态模块来识别配置描述文件state状态文件,格式是YAML扩展名,后缀是.sls
6.1 YAML基础语法
YAML:
1. 缩进(层级关系) 2个空格,不能使用tab
2. 冒号 key:value ----》以冒号结尾,以冒号为路径的除外,其他必须有空格
3. 短横线
表示列表项,短横线加一个空格 - list1
- list2
6.2 配置文件
master端配置文件中有说明配置文件写在什么地方。
cat /etc/salt/master
# file_roots:
# base: ----》基础环境
# - /srv/salt/
# dev: ---》开发环境
# - /srv/salt/dev/services
# - /srv/salt/dev/states
# prod: -----》生产环境
# - /srv/salt/prod/services
# - /srv/salt/prod/states
这里启用测试环境
file_roots: ----》打头写
base: ---》缩进 2个空格
- /srv/salt ----》4个空格,文件路径
启用后重启master服务,创建目录 mkdir -p /srv/salt
在实际成产环境中可以根据业务分别创建不同的文件夹,然后在对应的里面写。
6.3 实例
这里在salt下创建app目录,然后在app目录中写配置文件。
[root@salt-master app]# pwd
/srv/salt/app
vim vsftpd.sls
[root@salt-master app]# cat vsftpd.sls
vsftpd_install:
pkg.installed: ------>pkg模块 开头两个空格
- names: ------》下面接多个list 开头4个空格
- vsftpd
- httpd
7. 状态管理
7.1 saltstack状态
配置文件写好后
执行 salt '*' state.sls app.vsftpd env=base 默认为base环境
minion端安装完成,如下,如已经安装则忽略。
[root@salt-master salt]# salt '*' cmd.run 'rpm -qa|grep vsftpd'
salt-minion01:
vsftpd-2.2.2-24.el6.x86_64
salt-minion02:
vsftpd-2.2.2-24.el6.x86_64
[root@salt-master salt]# salt '*' cmd.run 'rpm -qa|grep httpd'
salt-minion01:
httpd-tools-2.2.15-60.el6.centos.6.x86_64
httpd-2.2.15-60.el6.centos.6.x86_64
salt-minion02:
httpd-2.2.15-60.el6.centos.6.x86_64
httpd-tools-2.2.15-60.el6.centos.6.x86_64
如果要安装后服务启动可以继续编写配置文件,如下:
[root@salt-master app]# cat vsftpd.sls
vsftpd_install:
pkg.installed:
- names:
- vsftpd
- httpd
vsftpd_service:
service.running:
- name: vsftpd
- enable: True
执行salt '*' state.sls app.vsftpd
查看vsftp服务状态,已经启动
[root@salt-master app]# salt '*' cmd.run 'service vsftpd status'
salt-minion01:
vsftpd (pid 12399) is running...
salt-minion02:
vsftpd (pid 12721) is running...
在实际生产环境中执行后状态是不能回退的,所以可以在执行前,进行检查
如 salt '*' state.sls app.vsftpd test=True
转载于:https://blog.51cto.com/tuwei/2134654
自动化运维之saltstack相关推荐
- 自动化运维工具SaltStack详细部署
2019独角兽企业重金招聘Python工程师标准>>> 自动化运维工具SaltStack详细部署 2014-12-28 17:30:34 标签:saltstack 原创作品,允许转载 ...
- 自动化运维之SaltStack实践
自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...
- 自动化运维工具——SaltStack(上)
SaltStack 一.SaltStack简介 二.SaltStack部署 三.远程执行模块 四.apache自动安装配置 五.nginx 自动化安装 六.grains模块使用 1.grains默认模 ...
- 自动化运维工具Saltstack(一)
1.saltstack简介: 什么是saltstack? saltstack是基于python开发的一套C/S架构配置管理工具 使用SSL证书签方的方式进行认证管理 号称世界上最快的消息队列ZeroM ...
- 标杆徐2018 Linux自动化运维实战,标杆徐2018 Linux自动化运维系列⑦: SaltStack自动化配置管理实战...
结合企业自动化集群场景讲解,轻松玩转SaltStack自动化配置管理工具 第1章 SaltStack基础应用 SaltStack安装 SaltStack认证 Saltstack远程执行 SaltSta ...
- 自动化运维之SaltStack,批量安装httpd实战
SaltStack原理 SaltStack由Master和Minion构成,Master 是服务端, 表示一台服务器:Minion是客户服务端,表示多台服务器.在Master上发送命令给符合条件的Mi ...
- 自动化运维工具Saltstack详细介绍
Saltstack是一个新的基础设施管理工具.目前处于快速发展阶段,可以看做是pssh+弱化的Puppet的组合.间接的反映出了saltstack的两大功能:远程执行和配置管理. Saltstack使 ...
- 自动化运维之saltstack(二)states深入理解
深入了解SLS的可以参考这篇博文:http://www.ituring.com.cn/article/42238 个人觉得这篇文章翻译的不错,所以转载过来. Salt Sates 众多强大而有力的涉及 ...
- 企业级 ##自动化运维工具Saltstack扩展(salt-api)##
1.[server3]建立服务: [root@server3 ~]# yum install -y salt-api [root@server3 ~]# /etc/init.d/salt-minion ...
- 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...
导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的服务器自动化配置! 来自:公众号talkwithtrend 1.企业运维现状与发展趋势 随着企业信息化的不断发展,运维人员需要面对 ...
最新文章
- 女朋友分手那天,女朋友说闺蜜老公收入是我 5 倍!还不去这些公众号学习?...
- 三种云存储加密的方法
- Linux ssh命令无法使用
- To rename a docker image
- Linux 防火墙工具--iptables
- CentOS7 通过wget下载文件到指定目录
- [示例] 使用 TStopwatch 计时
- GaussDB(DWS)发生数据倾斜不要慌,一文教你轻松获取表倾斜率
- 学习是一件高尚而孤独的事情
- Kubernetes 中pod绑定node节点:固定节点nodeName和nodeSelector调度详解
- 《Android 应用案例开发大全(第3版)》——第1.3节Android开发环境的搭建
- c语言手机表白代码大全,C语言表白代码
- 图像处理系列——直方图之灰度直方图(Image Histogram)
- killer Linux驱动下载,The Linux Killer
- TLS Origination for Egress Traffic(0.8)
- 游戏画质提升1《X战警金刚狼前传》画质增强修改
- YUV数据格式与YUV_420_888
- “卓见杯”2020年河南省第二届CCPC大学生程序设计竞赛 J.二进制与、平方和
- 公众号开发教程:微信视频预览一半就要收费是怎么做的
- spring cloud nacos 配置多环境打包