SaltStack安装配置详解
一、简介
Saltstack 比 Puppet 出来晚几年,是基于Python 开发的,也是基于 C/S 架构,服务端 master 和客户端 minions ;Saltstack 和 Puppet 很像,可以说 Saltstatck 整合了 Puppet 和 Chef 的功能,更加强大,更适合大规模批量管理服务器,并且它比 Puppet 更容易配置。
三大功能: 远程命令执行,配置管理(服务,文件,cron,用户,组),云管理。
支持系统:大多数都支持,windows 上不支持安装 master。
服务架构:
master 负责管理节点 一对多
minion 服务界节点 一对多
zeroMQ 通信服务
AES 数据加密方法
zeroMQ 以嵌入式网络编程库的形式实现了一个并行开发框架,能够提供进程内,进程间,网络和广播方式的消息信道,并支持扇出,发布-订阅,任务发布,请求/响应等通信模式。
系统环境:centos7.5,master:10.0.1.111 slave:10.0.2.167
1. 10.0.1.111安装master
[root@master ~] wget http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
[root@master ~] rpm -ivh epel-release-latest-.noarch.rpm
# yum install epel-release -y 即可
[root@master ~] yum repolist
[root@master ~] yum install salt-master -y
2.启动
[root@master ~] systemctl start salt-master
3. 10.0.1.112安装minion
[root@minion ~] yum install salt-minion -y
4. 配置minion,启动
[root@minion ~] vim /etc/salt/minion
master: 10.0.1.111
id: 112
# 冒号后面有空格
[root@minion ~] systemctl start salt-minion
5.添加minion
salt-key -L
ssalt-key -a
salt-key -L 显示已签名的主机
salt-key -a 添加主机 此时目录 /etc/salt/pki/minion 下面会多一个 minion.pub 文件
salt-key -d 删除主机
salt-key -D 删除所有主机
6.测试
salt test.ping
远程执行命令
[root@master ~] # salt '*' cmd.run 'df -h'
master配置文件配置项说明:
.interface:监听的Ipv4地址
.PUBLISH_PORT:与minion通信的端口 管理zeroMQ的
.MASTER_ID:当前master节点的ID,有多个master时指定特定的master
.USER:启动master服务的用户
.MAX_OPEN_FILES:每一个连接到master的minion,master都会打开一个文件描述符,改选项定义打开的最大文件数,可能报错:too many open files
.WORKER_THREADS:最大工作线程数
.RET_PORT:获取minion返回结果的端口
.PIDFILE:Master进程的pid文件
.ROOT_DIR:master运行的根目录
.CONF_FILE:master配置文件路径
.PKI_DIR: pki验证秘钥存放路径
.MODULE_DIRS:Salt模块搜索路径
.CACHEDIR:默认缓存路径
.KEEP_JOBS:旧的任务信息保留多少个小时
.GATHER_JOB_TIMEOUT:minion获取任务超时时间
.TIMEOUT:SALT API,COMMAND执行超时时间
.OUTPUT_FILE:SaltStack command输出文件
.CLI_SUMMARY:显示客户端的概要信息,目标的minion数,返回的数据,没有返回的数目
.MAX_MINIONS:最大管理的Minions
.TRANSPORT:通信模块
.MAX_EVENT_SIZE:最大的事件数
安全配置:
安全配置项:
.OPEN_MODE:开发模式,如果设置为true,则任何minion都能连上master,无需验证
.AUTO_ACCEPT:接受所有客户端的公钥
.TOKEN_EXPIRE:master新生成token的存货时间
.AUTOSIGN_TIMEOUT:如果minion的keyid出现在pki_dir/minion_autosign/keyid中,master会自动
接受改minion的链接,这个配置项,定义这个自动接受的持续时间,超时的要重新验证接受
.AUTOSIGN_FILE:自动接受minion keyid存放的文件
.AUTOREJECT_FILE: 与AUTOSIGN_FILE相反
.PUBLISHER_ACL:对指定minion可以执行指定的命令
.PUBLISHER_ACL_BLACKIST: 与上个相反
9.EXTERNAL_AUTH:指定验证方法
10.FILE_REVC:允许minion向master发送文件
11.FILE_RECV_MAX_SIZE: 允许minion向master发送的最大文件(mb)
12.POTATE_AES_KEY:轮换AES key
minion基本配置
、MASTER:MASTER的hostname,可以是多个
、MASTER_TYPE:str,一对一,failover,容错的,这种情况下,master必须是多个,minion会逐个通信,func:动态生成
、MAX_EVENT_SIZE:最多接受master推送过来的时间数据
、MASTER_FAILBACK:回滚,如果设置为true,此时master_type必须是failover
、MASTER_ALIVE_INTERVAL:心跳监测
、RANDOM_MASTER:如果master是多个,则选择算法是否随机
、MASTER_PORT:master
、MASTER_PORT:MAster端口
、USER:SaltStack启动用户
、SUDO_USER:可以获取sudo权限的用户
、ID:minionID
、MASTER_TRIES:重连Master的次数
、AUTH_TRIES:auth重试次数
、AUTH_TIMEOUT:auth超时
、TCP_PUB_PORT:发布消息端口
、TCP_PULL_PORT:获取消息端口
minion安全配置
、open——mode:可以清理master key,修改为true,重启,修改为false,重启
、MASTER_FINGER: master指纹,用来验证master,在master上运行salt-key -F master获取
.VERIFY_MASTER_PUBKEY_SIGN:于master相对
.MASTER_SIGN_KEY_NAME:签名文件
、ALWAYS_VERIFY_SIGNATURE:是否必须验证
saltstack基本使用方法
grains 是在 minion(客户端)启动时收集到的一些信息,比如操作系统类型、网卡ip,CPU,操作系统,文件系统,硬盘等等
1.显示所有grains信息
salt ”*“ grains.ls
2.显示所有静态信息,即grains的项目名和值
salt '*' grains.items
定义grains
客户端添加
vim /etc/salt/grains role: zabbix
env: test
myname: tpp 或者
vim /etc/salt/minion
grains:
role:
- zabbix
env:
- test
myname:
- tpp
重启minion
[root@slaver ~]# systemctl restart salt-minion
服务端获取
[root@master ~] # salt 'zabbix' grains.item role env mysql
zabbix:
----------
env:
test
mysql:
role:
zabbix
比如把所有的 web 服务器的 grains 的role 设置为 zabbix,那这样我们就可以批量对zabbix 的服务器进行操作了:
[root@master ~] # salt -G role:zabbix cmd.run 'hostname'
[root@master ~] # salt -G os:CentOS cmd.run 'hostname'
pillar
pillar 和 grains 不一样,是在master 上定义的,并且是针对 minion 定义的一些信息。像一些比较重要的数据(密码)可以存在 pillar 里,还可以定义变量等。可以将minion数据通过key/value的格式进行存储
pillar 使用独立的加密sessiion,所以pillar可以用来传递敏感的数据,
例如ssh-key,加密证书等
查看minion的pillar值
[root@steven ~] # salt '*' pillar.iterms
1.服务端配置pillar
[root@steven ~] # vim /etc/salt/master // 去掉下面注释
pillar_roots:
base:
- /srv/pillar
2.自定义配置
[root@steven ~] # mkdir /srv/pillar
[root@steven ~] # vim /srv/pillar/test.sls
conf: /etc/.conf
myname: tpp
3.自定义总入口文件
[root@steven ~] # vim /srv/pillar/top.sls
base:
'slaver.test.com'
- test
4.重启服务
[root@steven ~] # systemctl restart salt-master
应用场景:
获取系统信息
用于分类查找minion信息
与其它模块结合完成更灵活的minion控制,比如:SLS
。
Targeting Minions
1.为salt指定minion的方法
2.例如:salt web1 apache.signal restart
使用Grains指定minions
salt -G 'os:CentOS' test.ping
salt '*' grains.items | grep -A 2 'os:'
Compound Targeting
salt -C 'G@os:Debian and webser* or E@db.*' test.ping
1.G@指定了grains
2.webser指定了ID以webser开头的minion
3.E@是以正则的方式指定minion的ID
Salt Runners
salt runners是在master上运行命令的方法,区别于salt execution model
salt runner模块包括:
cache:返回minion缓存数据
ddns:动态DNS
fileserver:saltfileserver插件管理
SaltStack安装配置详解的更多相关文章
- Saltstack 安装配置详解
下面这篇文章主要介绍另外一个运维自动化工具 Saltstack . 一.简介 Saltstack 比 Puppet 出来晚几年,是基于Python 开发的,也是基于 C/S 架构,服务端 master ...
- Eclipse IDE for C/C++ Developers安装配置详解
Eclipse IDE for C/C++ Developers安装配置详解(转) 转自:http://hi.baidu.com/ltb6w/item/986532efd712460f570f1ddc ...
- Cloudera CDH 、Impala本地通过Parcel安装配置详解及什么是Parcel
本文引用自:Cloudera CDH .Impala本地通过Parcel安装配置详解及什么是Parcelhttp://www.aboutyun.com/forum.php?mod=viewthread ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- ubuntu14.04 server ftp 服务安装配置详解
ubuntu14.04 server ftp 服务安装配置详解 cheungmine 2016-01-27 http://wiki.ubuntu.com.cn/Vsftpd 0 安装好vsftpd服务 ...
- JDK10安装配置详解
JDK10安装配置详解 1. 下载jdk10 1.1 官网下载jdk7的软件包: 地址:http://www.oracle.com/technetwork/java/javase/dow ...
- (转)python中调用R语言通过rpy2 进行交互安装配置详解
python中调用R语言通过rpy2 进行交互安装配置详解(R_USER.R_HOME配置) 2018年11月08日 10:00:11 luqin_ 阅读数:753 python中调用R语言通过r ...
- (转)使用LVS实现负载均衡原理及安装配置详解
使用LVS实现负载均衡原理及安装配置详解 原文:https://www.cnblogs.com/liwei0526vip/p/6370103.html
- redis cluster 集群 安装 配置 详解
redis cluster 集群 安装 配置 详解 张映 发表于 2015-05-01 分类目录: nosql 标签:cluster, redis, 安装, 配置, 集群 Redis 集群是一个提供在 ...
随机推荐
- 使用rar把程序打包成一个exe
根目录--全部文件--右键添加到压缩文件 常规--创建自解压压缩文件 高级--自解压选项 解压路径--Finger(自己写)--在"Program Files"中创建 设置--解压 ...
- netcore程序部署及守护
一.程序发布 1.在本机编译无误的情况下,选择发布成文件系统.注意如果使用了swagger 需要将生成的xml文档说明复制到发版包里面.否则会报错.(可以在项目的csproj 中加入 <Prop ...
- Spring RestTemplate get post 请求 携带 headers
RestTemplate 1.我用RestTemplate请求时 我把他注入到容器里 这样可以 什么用什么时候拿 2.也可以new出来 不过我不喜欢 所以就没有用new的 下面我自己的方法 先注 ...
- 第二次OO总结
作业5——多线程电梯 好像失忆了,竟然对这三部电梯很陌生,我尽量回忆一下当时挣扎的场景orz 整体思路和第二次电梯差不多,但是将调度器类套在了电梯类里 优点可能是没有无效,足矣!!!缺点emmmm要是 ...
- 流量控制与RateLimiter
一背景 如何提高系统的稳定性,简单来说除了加机器外就是服务降级.限流.加机器就是常说的分布式,从整个架构的稳定性角度看,一般SOA每个接口的所能提供的单位时间服务能力是有上限.假如超过服务能力,一般会 ...
- 使用koa2+es6/7打造高质量Restful API
前言 如今nodejs变得越来越火热,采用nodejs实现前后端分离架构已被多数大公司所采用. 在过去,使用nodejs大家首先想到的是TJ大神写的express.js,而发展到如今,更轻量,性能更好 ...
- 安装Pangolin
Pangolin是一个用于OpenGL显示/交互以及视频输出的一个轻量级 快速开发库 一:安装必要的库 1.Glew sudo apt-get install libglew-dev 2.Cmake ...
- js数组中容易误用的一些方法
1.every和some 两个方法的参数都是一个函数,函数的有3个参数,依次是当前值value,索引index,数组array every判断数据中的每一项是否满足某个条件,如果满足就返回true,有 ...
- UICollectionView添加 HeaderView FooterView
UICollectionView显示HeaderView FooterView 不如UITableView那么容易,常用会有两种做法: 1.Xib或者Storyboard 在属性一栏中设置一下: 如图 ...
- Jenkins关闭和重启实现方式.
1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit.例如我jenkins的地址http://localhost:8080/,那么我只需要在浏览器地址栏上敲下http ...