SaltStack介绍
一. SaltStack是什么
SaltStack是一个配置管理系统,能够维护预定义状态的远程节点
SaltStack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据
二. SaltStack的服务架构
1. Master:负责管理所有节点
2. Minion:(相当于客户端)节点服务
3. ZeroMQ:通信服务
4. AES:数据加密方法
三. SaltStack的优缺点
1. SaltStack特点:
1). 简单(相对于Puppet)
2). 并行执行
3). 基于成熟的技术(ZeroMQ(通信),AES(数据加密))
4). Python API
5). 灵活,开放
2. SaltStack的缺点:
1). 需要单独安装客户端
2). 安全隐患大
四. 了解ZeroMQ
ZeroMQ以嵌入式网络编程库的形式实现了一个并行开发框架,能够提供进程内,进程间,网络和广播方式的消息信道,并支持扇出、发布—订阅,任务分发、请求/响应等通信模式。
五. SaltStack安装配置运行
1. SaltStack安装
依赖:python2.6~python3.0,ZeroMQ or RAET,mako(可选):一个可选的Salt States解析器;gcc(可选)
MacOS 安装方法:brew install saltstack
sudo port install salt
sudo pip install salt
Ubuntu14.04安装方法:
1. 获取源:wget https://repo.saltstack.com/apt/ubuntu/14.04/amd64/latest/SALTSTACK-GPG-KEY.pub
2. 添加salt仓库:sudo add-apt-repository ppa:saltstack/salt
3. sudo apt-get update
4. 安装master:apt-get install salt-master salt-api salt-cloud salt-ssh salt-syndic
5. 安装minion:apt-get install salt-minion
CentOS安装方法:
pip install salt
安装master:yum install salt-master
安装minion:yum install salt-minion
以CentOS为例,查看安装结果:
2. SaltStack的配置方法
1)master端:
vim /etc/salt/master
修改interface监听地址为本机ip
修改auto_accept 自动接收minion的key
2)minion端
vi /etc/salt/minion
修改minion文件中的id为自己的主机名
修改master服务器的ip
3. 运行SaltStack
1)启动saltstack
master端
minion端
2)测试saltstack
在master端执行:salt-key list就可以查看到客户端
如果在/etc/salt/master的配置文件中没有配置自动接收key,可以使用以下命令:salt-key -A
此时可以看到minion的主机名已经获取到了,说明安装成功。
测试:
测试是否连通:salt minion-id test.ping
期望返回:
minion-id:
True
所有监控用户执行命令: salt “*” cmd.run "df -h"
指定一个用户执行命令: salt '用户名或ip' cmd.run "命令"
4. 了解SaltStack的配置项
1)saltstack Master配置
通用配置项
a. interface:监听的IPV4地址
b. IPV6:监听的IPV6的地址
c. PUBLISH_PORT:与Minion通信的端口
d.MASTER_ID:当前Master节点id
e.USER:启动Master服务的用户
f. MAX_OPEN_FILES:每一个连接到Master的Minion,Master都会打开一个文件描述符,改选项定义打开的最大文件数。可能报错:Too many open files
g. WORKER_THREADS:最大工作线程数
h. RET_PORT:获取Minion返回结果的端口
i. PIDFILE:Master进程的pid文件
j.ROOT_DIR:Master运行的根目录
k.CONF_FILE:Master配置文件的路径
L.PKI_DIR:pki验证秘钥存放路径
m. MODULE_DIRS:Salt模块搜索路径
n. CACHEDIR:默认缓存路径
o. KEEP_JOBS:旧的任务信息保留多少个小时
p. GATHER_JOB_TIMEOUT:Minion获取任务超时时间
q. TIMEOUT:Salt API、command执行的超时时间
r. OUTPUT_FILE:SaltStack command 输出文件
s. CLI_SUMMARY:显示客户端的概要信息,目标Minion数,返回的数目,没返回的数目
t. MAX_MINIONS:最大管理的Minions
u. TRANSPORT:通信模块
v. TRANSPORT_OPTS:通信模块参数
w. MAX_EVENT_SIZE:最大的事件数
安全配置项
a. OPEN_MODE:开发模式,如果设置为true,则任何minion都能连上Master,无需验证
b. AUTO_ACCEPT:接受所有客户端的公钥
c. TOKEN_EXPIRE:Master新生成token的存活时间
d. AUTOSIGN_TIMEOUT:如果Minion的keyid出现在pki_dir/minion_autosign/keyid中,Master会自动接受该Minion的链接,这个配置项,定义这个自动接受的持续时间,超时的要重新验证接受。
e. AUTOSIGN_FILE:自动接受Minion keyid 存放文件
f. AUTOREJECT_FILE:与AUTOSIGN_FILE相反,自动拒绝接受Minion keyid 存放文件
g. PUBLISHER_ACL:对指定Minion可执行指定的命令(白名单)
h. PUBLISHER_ACL_BLACKLIST:与PUBLISHER_ACL相反(黑名单)
i. EXTERNAL_AUTH:指定验证方法
j. FILE_RECV:允许minion向master发送文件
k. FILE_RECV_MAX_SIZE:允许minion向master发送的最大文件(MB)
2)saltstack Minion配置
通用配置项:
a. MASTER:master的hostname,可以是多个
b. MASTER_TYPE:str —一对一;failover—容错的,这种情况下,master必须是多个,minion会逐个通信;func——动态生成的
c. MAX_EVENT_SIZE:最多接受master推送过来的事件数目
d. MASTER_FAILBACK:回滚,如果设置为true,此时master_type必须是failover
e. MASTER_ALIVE_INTERVAL:心跳检测
f. RANDOM_MASTER:如果master是多个,则选择算法是否是随机的。
g. MASTER_PORT:Master端口
h. USER:SaltStack启动用户
i. SUDO_USER:可以获取sudo权限的用户
j. ID:Minion的ID,会出现的Master的连接Minion的列表
k. MASTER_TRIES:重连Master的次数
L. AUTH_TRIES:auth重试的次数
m. AUTH_TIMEOUT:auth超时
n. TCP_PUB_PORT:发布消息端口
o. TCP_PULL_PORT:获取消息端口
安全配置项
a. open_mode:可以用来清理master key 修改为true,重启,修改为false 重启
b. MASTER_FINGER:master指纹,用来验证master,在master上运行salt-key -F master获取