saltstack快速入门
SALTSTACK是什么?
Salt是一种和以往不同的基础设施管理方法,它是建立在大规模系统高速通讯能力可以大幅提升的想法上。这种方法使得Salt成为一个强大的能够解决基础设施中许多特定问题的多任务系统。远程执行引擎是Salt的核心,它能够为多组系统创建高速、安全的双向通讯网络。基于这个通许系统,Salt提供了一个非常快速、灵活并且容易使用的配置管理系统,称之为“Salt States”。通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
- local 本地
- master/minion 主人批量管理方式
- salt ssh ssh方式
saltstack的特点:
- 部署简单、方便;
- 主从集中化管理;
- 配置简单、功能强大、扩展性强;
- 主控端(master)和被控端(minion)基于证书认证,安全可靠;
- 支持API及自定义模块,可通过Python轻松扩展。
saltstack主要功能:
- 远程执行命令
- 配置管理
- 云管理 支持各种云平台
安装SALT
测试环境配置
| 系统版本 | IP | 主机名 |
| CentOS Linux release 7.2.1511 (Core) | 192.16.14.58 | master-node-01 |
| CentOS Linux release 7.2.1511 (Core) | 192.168.14.30 | minion-node-01 |
我在centos7.2环境下
参考:
https://docs.saltstack.com/en/latest/topics/installation/index.html#quick-install1
配置好salt源,直接用yum安装
安装的版本是SALT 2016.11.5

1.安装master
master-node上安装
yum install salt-master
安装salt-master会自动把salt-minion安装上。
2.安装minion
minion-node上安装
yum install salt-minion
3.master-node开机自启master,minion-node开机自启minion
systemctl enable salt-master systemctl enable salt-minion
4.启动salt-master和salt-minion
master-node主机上执行:
systemctl start salt-master minion-node上执行
systemctl start salt-minion
5.做上host解析(测试环境)有dns可以做dns解析
HOST文件如下
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.14.50 master-node-01
192.168.14.37 minion-node-01
master和minion的hosts文件都是一样
6.防火墙,(做测试我关掉了 )
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT
iptables -I INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT
master可以有多个,minion一样也是可以有多个
安装salt-master会默认把salt-minion安装上
master可以理解为主人,minion可以理解为奴才
修改配置文件
在master-node和minion-node上都修改/etc/salt/minion中16行的位置
去掉注释master哪行改为如下内容:
master: 192.168.14.50
告诉主人是谁,master后面也可以是域名
修改了配置文件,记得重启服务
认证
认证一般都是在master上操作,可以简单理解是否管理这太机器
minion第一启动会产生认证文件,会把公钥发送给master
认证目录:/etc/salt/pki/minion
master第一次启动也会产生相应的认证文件
认证目录:/etc/salt/pki/master
在master上可以利用tree命令查看关系
[root@master-node-01 ~]# cd /etc/salt/pki/master/
[root@master-node-01 master]# tree
.
├── master.pem
├── master.pub
├── minions
├── minions_autosign
├── minions_denied
├── minions_pre
│ ├── master-node-01
│ └── minion-node-01
└── minions_rejected
master上操作
master需要管理那些minion,这时候就需要认证授权,
1.查看认证信息状态:salt-key
[root@master-node-01 master]# salt-key
Accepted Keys: #同意的key
Denied Keys:
Unaccepted Keys: #未同意的key
master-node-01
minion-node-01
Rejected Keys: #拒绝的key
2.同意认证
命令有如下:
salt-key -A #同意所有
salt-key -a key名(支持通配符) #同意指定的主机
salt-key -a master-* #同意管理master-开头的认证主机
[root@master-node-01 master]# salt-key -a master-*
The following keys are going to be accepted:
Unaccepted Keys:
master-node-01
Proceed? [n/Y] y
Key for minion master-node-01 accepted.
3.查看所管理的主机
命令:
salt-key -L

4.在利用tree查看关系

minion也接收的master上的公钥
5.更多命令,查看详细的帮组信息
salt-key --help
master和minion认证过程
(1)、minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。
(2)、master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了。
Master与Minion的连接
SaltStack master启动后默认监听4505和4506两个端口。4505(publish_port)为saltstack的消息发布系统,4506(ret_port)为saltstack客户端与服务端通信的端口。如果使用lsof 查看4505端口,会发现所有的minion在4505端口持续保持在ESTABLISHED状态。
远程执行
远程管理主机
salt 'key名(支持通配符)' test.ping
salt命令 引号中间是主机名 test是saltstack的一个模块 ping是test模块下的一个方法

* 表时在所有已管理的minion上执行
salt '*' cmd.run '参数(具体的shell命令)'

配置管理
1.简单master配置文件修改
修改master配置文件,修改内容如下,以及具体修改的行数
#号是注释,无实际意义
vim /etc/salt/master 535 file_roots: #saltstack状态文件
536 base: #指定一个坏境支持多种坏境(列开发,测试),base前面2个空格,默认必须要有一个base环境
537 - /srv/salt/ # -前面4个空格 ,状态文件存放的目录,注意本地是否有这个目录,没有则新建
重启master生效
本地新建目录/srv/salt/
2.配置安装httpd模板文件

在/srv/salt/目录下,新编辑apache.sls 内容如下
apache install: #安装名称
pkg.installed: #前面两个空格,pkg是个模块,installed是个方法
- names: #前面4个空格
- httpd #前面6个空格,安装的软件包,会用yum安装
- httpd-devel #开发工具包
apache-server:
service.running: #前面两个空格 service是个模块,running也是个方法
- name: httpd # 安装软件包的名称 前面4个空格
- enable: True #前面4个空格 开机自启
- reload: True #前面4个空格 可以重载
往所有主机上安装apache
salt '*' state.sls apache
#在所有机器上执行apache这个文件的,apache后面不用写.sls 默认会给加上 这个状态文件所做的功能在所有机器上安装httpd和httpd-devel 以及开机自启
过程中可以查看是不是用在用yum装apache, ps aux | grep yum
执行结果如下图:

状态管理
一个机器肯定有多个状态,用高级状态,会有一个入口文件,来监控哪些机器有哪些状态,默认入口文件名叫top.sls,必须放在base环境 
内容如下:
base: #在base环境下
'*': #有所有minion机器上,可以写执行的minion的已认证的名字 ,支持通配符,前面连个空格
- apache#所有的minion都执行apache这个文件的状态 ,前面四个空格,可以执定那些机器执行相应状态文件
执行高级状态
salt '*' state.highstate
效果如下:

什么东西放在base环境?
所有机器都要执行的状态,应该放在base环境,例如 所有机器都要调整内核参数 等等
saltstack快速入门的更多相关文章
- SaltStack快速入门-配置管理
1:定义远程配置时描述位置,salt配置用的是一种yaml的描述语法,saltstack也是可以分环境的,比如测试环境.生产环境,默认是base,base也是必须存在的,修改内容如下: file_ro ...
- linux运维、架构之路-SaltStack快速入门
一.SaltStack介绍 SaltStack是一个服务器基础架构集中化管理平台,SaltStack基于Python语言实现,也是基于C/S架构,结合轻量级消息队列(ZeroMQ)与Py ...
- saltstack自动化运维快速入门
saltstack自动化运维快速入门 关于saltstack 这个软件是干啥的 我这里就不介绍了 只是简单的说下是干啥的 网上的说法是 它是func的强化版本+ puppet的精简版 关于puppet ...
- Web Api 入门实战 (快速入门+工具使用+不依赖IIS)
平台之大势何人能挡? 带着你的Net飞奔吧!:http://www.cnblogs.com/dunitian/p/4822808.html 屁话我也就不多说了,什么简介的也省了,直接简单概括+demo ...
- SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=》提升)
SignalR快速入门 ~ 仿QQ即时聊天,消息推送,单聊,群聊,多群公聊(基础=>提升,5个Demo贯彻全篇,感兴趣的玩才是真的学) 官方demo:http://www.asp.net/si ...
- 前端开发小白必学技能—非关系数据库又像关系数据库的MongoDB快速入门命令(2)
今天给大家道个歉,没有及时更新MongoDB快速入门的下篇,最近有点小忙,在此向博友们致歉.下面我将简单地说一下mongdb的一些基本命令以及我们日常开发过程中的一些问题.mongodb可以为我们提供 ...
- 【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
随机推荐
- 201709018工作日记--RecyclerView的使用(点击,瀑布流的实现)
参考相关博客: http://www.jianshu.com/p/55e3f1b6701f 刘望舒 http://www.jianshu.com/p/4fc6164e4709 王三的猫阿德 http ...
- 关于android4.3 bluetooth4.0的那些事儿
马年伊始,刚刚上班的一个星期,公司里没什么事儿可做,只是听说马上可能要做蓝牙的项目.之前也做过关于软硬件通讯之类的项目:android 串口通讯,android usb 转串口通讯. 可是蓝牙这块还真 ...
- javascript 问题
两个数组比较:a.sort().toString() == b.sort().toString() for循环内有异步方法时,需要闭包 JSON.parse(data)出错时(提示.[nodejs中] ...
- 团队作业(HCL队)第三周—需求改进和系统分析
2.需求&原型改进: 1.问题:游戏中坦克的移动和攻击怎么控制的? 改进: 在游戏中,我控制我方坦克,按下方向键坦克便向按下的方向移动,按下Z键,我方坦克发射炮弹.敌方坦克面向随机的方向移动, ...
- unusedjs
查看js的有效使用情况: https://github.com/gmetais/unusedjs Installation You need to open your console and writ ...
- 我要总结基本书 .net稍微有些深度的书籍看看
1. 你必须知道的.NET 2. C# in depth 3.C#并发编程经典实例 4.ASP.NET MVC 4框架揭秘 5.NET最佳实践 6..NET探秘 .NET安全编程 .NET企业服务框架 ...
- [ACM_模拟] HDU 1006 Tick and Tick [时钟间隔角度问题]
Problem Description The three hands of the clock are rotating every second and meeting each other ma ...
- .Net Core 自定义配置源从配置中心读取配置
配置,几乎所有的应用程序都离不开它..Net Framework时代我们使用App.config.Web.config,到了.Net Core的时代我们使用appsettings.json,这些我们再 ...
- PageAdmin CMS网站制作教程实例:如何制作一个报名表?
PageAdmin CMS网站建设实例:如何制作一个报名表? 有时我们根据需求需要制作一些自定义表,该如何去制作呢? 我们以制作一个报名表为例: 登录后台地址,进入后台, 2.在顶部导航中找到系统,并 ...
- Hessian——轻量级远程调用方案
Hessian是caucho公司开发的一种基于二进制RPC协议(Remote Procedure Call protocol)的轻量级远程调用框架.具有多种语言的实现,但用的最多的当然是Java实现 ...