saltstack介绍
概念
1、一个配置管理系统,能够维护预定义状态的远程节点。
2、一个分布式的远程执行系统,用来在远程节点上执行命令和查询数据。
特点
1、相对于其他(例如pupet)重量型自动化运维工具来讲其相对简单。
2、并发能力和并行执行能力强于ansible。
3、基于成熟的技术。
4、有python api,可自定义功能。
5、灵活,开源。
服务架构
- master:负责管理其他节点,支持多个master
- minion:客户端节点服务
- ZeroMQ:通信服务
- AES:数据加密
缺点
1、需要独立安装客户端
2、安全隐患大(minion会具有root权限)
saltstack安装配置
saltstack安装
依赖:
1、python2.6及以上
2、ZeroMQ或者RAET
3、mako(可选),一个salt states解析器
4、gcc
centos下安装可以使用:
pip install salt
或
yum install -y salt-master salt-minion
如果源里没有这两个包可以先安装epel源,或者下载官方的rpm包安装。
在master上安装salt-master,minion上安装salt-minion
saltstack启动
运行master节点
service start salt-master
在minion节点写入master信息
vim /etc/salt/minion
master: 10.10.109.19 // master地址
id: minion-1 // 设置minion的用于区分
启动minion节点
systemctl start salt-minion
master添加minion节点
首先在master上查看请求加入的minion节点:
salt-key -L
然后执行命令让其加入:
salt-key -a minion-1
现在master和minion就处于联通的状态了
测试
salt minion-1 test.ping
saltstack master配置
通用配置项
interface: 0.0.0.0
:监听的IPv4地址,默认0.0.0.0
publish_port: 4505
:与minion通信的端口(zeromq端口)
user: root
:启动master进程的用户
max_open_files: 100000
:连接数,每一个连接到master的minion都会打开一个文件描述符
worker_threads: 5
:最大工作线程数
ret_port: 4506
获取minion返回结果的端口
pidfile: /var/run/salt-master.pid
:pid文件位置
root_dir: /
:master运行根目录
pki_dir: /etc/salt/pki/master
:秘钥存放路径
module_dirs
:salt模块路径
cachedir: /var/cache/salt/master
:缓存路径
keep_jobs: 24
:旧任务信息保存时间
timeout: 5
:api和command执行的超时时间
max_minions
:最大管理的minions
安全配置项
open_mode: False
:开放模式,为true则任何minion都可无需认证就连接
auto_accept: False
:接收所有客户端的公钥(不需要salt-key -a这样接收了)
token_expire: 43200
:master生成token存活时间
autosign_timeout: 120
:如果minion的keyid在master上的keyid文件中,则自动连接,超过这个时间需要重新认证
autosign_file: /etc/salt/autosign.conf
:自动接收minion keyid存放的文件
autoreject_file: /etc/salt/autoreject.conf
:自动拒绝,与autosign_file相反
external_auth:
:额外的验证方法
file_recv: False
:允许minion向master发送文件
file_recv_max_size: 100
:允许接收文件大小(MB)
saltstack minion配置
通用配置项
master: 10.10.109.19
:指定master的ip或主机名,可以是多个
master_type: str
:str表示一对一连接,failover表示容错连接,这时master必须为多个,minion会逐个通信;func表示动态指定的
max_event_size: 1048576
:最多接受master推送的事件数目
master_alive_interval
:master心跳检测
random_master: False
:若master多个,则算法是否随机
master_port: 4506
:连接master的端口
user: root
:启动minion用户
sudo_user: saltdev
:可通过sudo获取权限的用户
id: minion-1
:minion自身的id
auth_tries: 7
:auth重试次数