一,概念
SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,一般可以理解为简化版的puppet和加强版的func。SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与Python第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)构建。
通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理、分发文件、采集服务器数据、操作系统基础及软件包管理等,SaltStack是运维人员提高工作效率、规范业务配置与操作的利器。
二,saltstack工作原理
salt-master服务启动后会开启两个端口:4505和4506,minion没有端口,通过“双向密钥交换”(可通过tree /etc/salt/pki命令查看)来实现安全管理。salt-master每执行一条命令,所有minion均可收到,但只要指定的minion进行应答。

[root@linux-node1 salt]# lsof -n -i:4505
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 11289 root 13u IPv4 58611 0t0 TCP 192.168.56.11:4505 (LISTEN)
salt-mast 11289 root 15u IPv4 61320 0t0 TCP 192.168.56.11:4505->192.168.56.12:50292 (ESTABLISHED)
salt-mast 11289 root 16u IPv4 69915 0t0 TCP 192.168.56.11:4505->192.168.56.11:59634 (ESTABLISHED)
salt-mini 14050 root 25u IPv4 69914 0t0 TCP 192.168.56.11:59634->192.168.56.11:4505 (ESTABLISHED) 由此可以看到,所有的minion都与master通信,而回复的时候,master则使用4506端口 [root@linux-node1 salt]# lsof -n -i:4506
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 11301 root 21u IPv4 58619 0t0 TCP 192.168.56.11:4506 (LISTEN)
salt-mast 11301 root 28u IPv4 61319 0t0 TCP 192.168.56.11:4506->192.168.56.12:52042 (ESTABLISHED)
salt-mast 11301 root 29u IPv4 69847 0t0 TCP 192.168.56.11:4506->192.168.56.11:35406 (ESTABLISHED)
salt-mini 14050 root 14u IPv4 69846 0t0 TCP 192.168.56.11:35406->192.168.56.11:4506 (ESTABLISHED)
三,运行方式
- local 本地运行
- Master/Minion 服务端/agent方式
- Salt SSH 不需要安装agent
四,安装 环境:
系统: CentOS7
主机:
saltstack-master 192.168.56.11
saltstack-minion 192.168.56.12
五,安装epel yum源
yum -y install epel-release
yum clean all
yum makecache
六,安装 saltstack-master
saltstack-master 安装:yum -y install salt-master salt-minion

1.配置: 修改 salt-master 本身监听地址(注:配置文件内不允许TAB键)
vim /etc/salt/master
添加如下行:
interface: 192.168.56.11 2. 配置:指定salt-master地址(注:配置文件内不允许TAB键)
vim /etc/salt/minion
添加如下行:
master: 192.168.56.11
#id: 3.启动
systemctl restart salt-master
systemctl status salt-master
systemctl enable salt-master
systemctl restart salt-minion
systemctl status salt-minion
systemctl enable salt-minion
salt-master配置文件-参考:
salt-master配置文件-参考:

vim /etc/salt/master

    # master的监听地址(注意:冒号后面空格)
interface: 1.1.1.11 # salt运行的用户,影响到salt的执行权限
user: root # master自动接收客户端的验证
auto_accept: True # salt的运行线程,开的线程越多一般处理的速度越快,但一般不要超过CPU的个数
worker_threads: 8 # master的管理端口
publish_port : 4505 # master跟minion的通讯端口,用于文件服务,认证,接受返回结果等
ret_port : 4506 # 如果这个master运行的salt-syndic连接到了一个更高层级的master,那么这个参数需要配置成连接到的这个高层级master的监听端口
syndic_master_port : 4506 # 指定pid文件位置
pidfile: /var/run/salt-master.pid # saltstack 可以控制的文件系统的开始位置
root_dir: / # 日志文件地址
log_file: /var/log/salt/master.log # 分组设置
nodegroups:
group_all: '*' # salt state执行时候的根目录
file_roots:
base:
- /srv/salt/base # 设置pillar的根目录
pillar_roots:
base:
- /srv/salt/pillar
六,安装 saltstack-minion
saltstack-minion  安装:yum install -y salt-minion

1.配置: 修改salt-minion配置文件,指定salt-master地址(注:配置文件内不允许TAB键)
vim /etc/salt/minion
添加如下行:
master: 192.168.56.11
#id:
注:id: hostname 用来指定主机名 2.启动
systemctl restart salt-minion
systemctl status salt-minion
systemctl enable salt-minion 七,在master进行测试
1.查看minion列表(这时候saltstack-minion是红色的)
[root@linux-node1 ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux-node2
Rejected Keys:
2.认证所有key。当然也可以通过salt-key -a saltstack-minion指定某台minion进行认证key

[root@linux-node1 ~]# salt-key -A      #同意接管-管理所有minion
The following keys are going to be accepted:
Unaccepted Keys:
linux-node2
Proceed? [n/Y] Y
Key for minion linux-node2 accepted.
3. 接着继续查看minion列表(这时候saltstack-minion已经变为绿色,说明key已被添加)

[root@linux-node1 ~]# salt-key -L
Accepted Keys:
linux-node2
Denied Keys:
Unaccepted Keys:
Rejected Keys:
4. 简单测试(客户端salt_ping)

[root@linux-node1 ~]# salt '*' test.ping
[root@linux-node1 ~]# salt \* test.ping linux-node1.example.com:
True
linux-node2:
True 注:salt-master使用命令 salt 'linux-node2' test.ping
linux-node2:
True
此示例中所有的minion均已经收到了此消息,不过只有linux-node2进行了返回
salt缓存文件
目录:/var/cache/salt

cd /var/cache/salt && tree

注:如果minion目标文件改变,重新salt后,master salt状态文件会覆盖minion节点文件,所以日后修改配置只需修改master salt状态文件即可。

本文转自:https://wuyanteng.github.io/2017/10/14/SaltStack%E9%83%A8%E7%BD%B2for-CentOS7/

CentOS7 下SaltStack部署的更多相关文章

  1. centos7 下zookeeper 部署 单机多实例模式

    centos7 下zookeeper 部署 本文参考https://www.linuxidc.com/Linux/2016-09/135052.htm 1.创建/usr/local/zookeeper ...

  2. centos7 下 安装部署nginx

    centos7 下 安装部署nginx 1.nginx安装依赖于三个包,注意安装顺序 a.SSL功能需要openssl库,直接通过yum安装: #yum install openssl b.gzip模 ...

  3. 记录centos7下tomcat部署war包过程

    记录centos7下tomcat部署war包过程 1.官网下载tomcat安装包.gz结尾的 2.上传到/usr/local/ ,并解压到tomcat目录下 3.进入tomcat/bin目录,运行./ ...

  4. CentOS7下单机部署RabbltMQ环境的操作记录

    一.RabbitMQ简单介绍在日常工作环境中,你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务 ...

  5. Centos7下单机部署Solr7.3

    本章重点介绍CentOS7 下部署Solr7 ,添加核心Core配置,Dataimport导入,中文分词的相关操作. 一.准备工作     演示环境是在虚拟机下安装的CentOS7.java JDK8 ...

  6. CentOS7下OpenLDAP部署

    OpenLDAP作为开源的LDAP服务,可用于搭建统一认证平台,在很多企业内部应用比较广泛,本文将介绍在CentOS7下OpenLDAP的部署. 环境: CentOS 7.4 OpenLDAP 2.4 ...

  7. Nextcloud私有云盘在Centos7下的部署笔记

    搭建个人云存储一般会想到ownCloud,堪称是自建云存储服务的经典.而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储.初一看觉得“口气”不小,刚推出来就重新“定义”了Clo ...

  8. centos7下docker 部署javaweb

    LXC linux container 百度百科:http://baike.baidu.com/link?url=w_Xy56MN9infb0hfYObib4PlXm-PW02hzTlCLLb1W2d ...

  9. Centos7下安装部署oracle数据库方法及问题汇总

    目标:在centos7上配置oracle数据库服务器,并在win7上面使用pl/sql成功访问该oracle数据库 系统环境: 服务器:centos7 64位 客户端:win7 64位 注意cneto ...

随机推荐

  1. uestc summer training #3 线段树优化建边

    线段树建边 struct E { int value, modvalue; } a[MAXN << ]; pair<int, int> b[MAXN]; ], r[MAXN & ...

  2. hdu1864最大报销额 01

    先把小数乘100变成整数然后处理每个发票里面可以报销的 最后自底向上DP #include <stdio.h> #include <algorithm> #include &l ...

  3. golang之运算符

    目录 一.golang之运算符 1. 算术运算符 2. 关系运算符 3. 逻辑运算符 4. 位运算符 5. 赋值运算符 一.golang之运算符 Go 语言内置的运算符有:(比python少了一个成员 ...

  4. IDEA中方法的快捷键及自定义方法

    1. 字母组合联想到对应的方法 ·ps联想到public static方法和成员 ·输入psvm联想到主方法 ·输入psf联想到用public static final 等 · pc联想到clone和 ...

  5. C语言的函数声明,定义,调用以及exit退出

    #include <stdio.h> #include <stdlib.h> void singing(); int main() { singing(); system(&q ...

  6. GitLab项目管理实践

    群组 / 项目 群组和项目的关系我们可以简单的理解成文件夹和文件的关系.一个群组可以包含一个或多个项目. 使用群组,可以将相关的项目组合在一起,并允许成员同时访问多个项目. 群组也可以嵌套在子组中,建 ...

  7. Python 操作 MySQL 数据库Ⅱ

    数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_N ...

  8. Java indexOf() 方法

    indexOf() 方法有以下四种形式: public int indexOf(int ch): 返回指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1. public ...

  9. 「SDOI2017」硬币游戏

    题目链接 问题分析 首先一个显然的做法就是建出AC自动机,然后高斯消元.但是这样的复杂度是\(O(n^3m^3)\)的. 我们发现其实只需要求AC自动机上\(n\)个状态的概率,而其余的概率是没有用的 ...

  10. dependencies和devDependencies的区别?

    当我们项目需要下载一个模块的时候,我们安装npm包(在项目目录下面npm install module_name)的时候,很多时候我们会在后面加上–save-dev 或 –save.这两个参数代表什么 ...