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相关推荐

  1. 自动化运维工具SaltStack详细部署

    2019独角兽企业重金招聘Python工程师标准>>> 自动化运维工具SaltStack详细部署 2014-12-28 17:30:34 标签:saltstack 原创作品,允许转载 ...

  2. 自动化运维之SaltStack实践

    自动化运维之SaltStack实践 1.1.环境 linux-node1(master服务端) 192.168.0.15 linux-node2(minion客户端) 192.168.0.16 1.2 ...

  3. 自动化运维工具——SaltStack(上)

    SaltStack 一.SaltStack简介 二.SaltStack部署 三.远程执行模块 四.apache自动安装配置 五.nginx 自动化安装 六.grains模块使用 1.grains默认模 ...

  4. 自动化运维工具Saltstack(一)

    1.saltstack简介: 什么是saltstack? saltstack是基于python开发的一套C/S架构配置管理工具 使用SSL证书签方的方式进行认证管理 号称世界上最快的消息队列ZeroM ...

  5. 标杆徐2018 Linux自动化运维实战,标杆徐2018 Linux自动化运维系列⑦: SaltStack自动化配置管理实战...

    结合企业自动化集群场景讲解,轻松玩转SaltStack自动化配置管理工具 第1章 SaltStack基础应用 SaltStack安装 SaltStack认证 Saltstack远程执行 SaltSta ...

  6. 自动化运维之SaltStack,批量安装httpd实战

    SaltStack原理 SaltStack由Master和Minion构成,Master 是服务端, 表示一台服务器:Minion是客户服务端,表示多台服务器.在Master上发送命令给符合条件的Mi ...

  7. 自动化运维工具Saltstack详细介绍

    Saltstack是一个新的基础设施管理工具.目前处于快速发展阶段,可以看做是pssh+弱化的Puppet的组合.间接的反映出了saltstack的两大功能:远程执行和配置管理. Saltstack使 ...

  8. 自动化运维之saltstack(二)states深入理解

    深入了解SLS的可以参考这篇博文:http://www.ituring.com.cn/article/42238 个人觉得这篇文章翻译的不错,所以转载过来. Salt Sates 众多强大而有力的涉及 ...

  9. 企业级 ##自动化运维工具Saltstack扩展(salt-api)##

    1.[server3]建立服务: [root@server3 ~]# yum install -y salt-api [root@server3 ~]# /etc/init.d/salt-minion ...

  10. 企业级自动化运维方案设计及Saltstack、Ansible等5种工具比较分析--云平台技术栈08...

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的服务器自动化配置! 来自:公众号talkwithtrend 1.企业运维现状与发展趋势 随着企业信息化的不断发展,运维人员需要面对 ...

最新文章

  1. 女朋友分手那天,女朋友说闺蜜老公收入是我 5 倍!还不去这些公众号学习?...
  2. 三种云存储加密的方法
  3. Linux ssh命令无法使用
  4. To rename a docker image
  5. Linux 防火墙工具--iptables
  6. CentOS7 通过wget下载文件到指定目录
  7. [示例] 使用 TStopwatch 计时
  8. GaussDB(DWS)发生数据倾斜不要慌,一文教你轻松获取表倾斜率
  9. 学习是一件高尚而孤独的事情
  10. Kubernetes 中pod绑定node节点:固定节点nodeName和nodeSelector调度详解
  11. 《Android 应用案例开发大全(第3版)》——第1.3节Android开发环境的搭建
  12. c语言手机表白代码大全,C语言表白代码
  13. 图像处理系列——直方图之灰度直方图(Image Histogram)
  14. killer Linux驱动下载,The Linux Killer
  15. TLS Origination for Egress Traffic(0.8)
  16. 游戏画质提升1《X战警金刚狼前传》画质增强修改
  17. YUV数据格式与YUV_420_888
  18. “卓见杯”2020年河南省第二届CCPC大学生程序设计竞赛 J.二进制与、平方和
  19. 公众号开发教程:微信视频预览一半就要收费是怎么做的
  20. spring cloud nacos 配置多环境打包

热门文章

  1. 做一个管理者/技术负责人的学习之路--001
  2. 微信小程序自定义组件(Toast)
  3. PHPMailer如何获取企业微信授权码
  4. Go 遍历map时的key随机化问题及解决方法
  5. Linux用php上传表单文件,文件太大提示[413 Request Entity Too Large]
  6. 全网首发:JDK绘制文字:八、绘制函数简要分析
  7. FireFox 32不支持64位的NPAPI dll插件
  8. 自己都看到满眼问题,还要请专业测试?
  9. 机场也应该取个好听的名
  10. WINDOWS下,找包含特殊字串的文件的解决办法