[SaltStack] 基础介绍
2015-07-02 22:01
387 查看
今天有时间把以前研究过的saltstack梳理总结下 -:)
salt是干什么的我就不多说了, 大家Google下资料很多的, 简单来说就是func+puppet:
配置文件管理
远程命令调用
Crontab管理部署
salt底层使用ZMQ通信, Python编写, 部署比较简单, 很容易管理上万台server.
部署
salt采用C/S架构, 分为Master和Minion; Master即为中心管控机, Minion则为客户端, 接受管控机的管理维护.
部署比较简单, 去官网下载对应的Master和Minion版本; 安装就OK了.
配置
Master端配置
参数的含义:
worker_threads: salt master端工作的线程数
auto_accept: salt master自动接收minion(当minion注册过来时, 只有当master接受后才可以进行通信)
open_mode: 保持加密, 但会关闭权限验证, 可以根据自己的安全级别配置
timeout: master和minion通信的超时时间
master_tops: 代替生成sls数据(后面找时间详细讲下, 这块的作用还是很大的)
file_roots: 初始定义环境以及state文件
Minion端配置
参数的含义:
master: 配置master的信息, 可以配置多个master源, minion会逐一去做注册(后面在HA部署上很有用)
id: 表示minion去master注册的id信息, 可以用hostname(具有唯一性的)
return: 表示对minion进行变更后的日志收集(可以入库, 需要二次开发)
测试
远程命令
Crontab管理
top文件(top.sls)
crontab文件(init.sls)
推送crontab内容, e.g.
日志信息
minion端验证crontab信息
总结:
以上的测试是在master端主动推送的, 当然可以采取从minion上主动拉取, 大家可以自己去玩下;
crontab中init.sls的分, 时等信息是可以随机化的, 使用random代替具体的value;
也可以更新已经存在的crontab信息;
以后有机会单独对crontab做总结.
配置文件推送
top文件(top.sls)
crontab文件(init.sls)
类似crontab的测试方法, 有兴趣大家可以去测试玩玩.
salt执行流程
![](https://images0.cnblogs.com/blog2015/748358/201507/022159166662525.png)
salt二次开发
salt使用轻量级, 易部署, 易使用. 可以很轻松的使用salt完成线上千万服务器的管理维护, 当然除了这些基本功能的使用, 我们还使用比较高级的, 譬如: grans, pillar, returner等等. 另外, 还做了二次开发, 白屏化, 最主要的是我们实现了可并发, 可灰度, 可回滚!
以后有机会再一一分享吧 -_-
困了, 早点去睡觉了, 明天早起做OceanBase升级 -:)
From reno
2015-07-02 21:57:00
salt是干什么的我就不多说了, 大家Google下资料很多的, 简单来说就是func+puppet:
配置文件管理
远程命令调用
Crontab管理部署
salt底层使用ZMQ通信, Python编写, 部署比较简单, 很容易管理上万台server.
部署
salt采用C/S架构, 分为Master和Minion; Master即为中心管控机, Minion则为客户端, 接受管控机的管理维护.
部署比较简单, 去官网下载对应的Master和Minion版本; 安装就OK了.
yum install salt-master -y yum install salt-minion -y
配置
Master端配置
worker_threads: 16 auto_accept: True open_mode: True timeout: 300 master_tops: ext_nodes: "/usr/bin/ext_nodes.py" file_roots: base: - /u01/salt/env/base
参数的含义:
worker_threads: salt master端工作的线程数
auto_accept: salt master自动接收minion(当minion注册过来时, 只有当master接受后才可以进行通信)
open_mode: 保持加密, 但会关闭权限验证, 可以根据自己的安全级别配置
timeout: master和minion通信的超时时间
master_tops: 代替生成sls数据(后面找时间详细讲下, 这块的作用还是很大的)
file_roots: 初始定义环境以及state文件
Minion端配置
master: - saltstack.online.xxxxxxxxxxx.net - <master-ip-address1> - <master-ip-address1> - <master-ip-address1> - <master-ip-address1> - <master-ip-address1> id: <minion-id> return: minion_return
参数的含义:
master: 配置master的信息, 可以配置多个master源, minion会逐一去做注册(后面在HA部署上很有用)
id: 表示minion去master注册的id信息, 可以用hostname(具有唯一性的)
return: 表示对minion进行变更后的日志收集(可以入库, 需要二次开发)
测试
远程命令
$ salt '<minion-id>' test.ping <minion-id>: True $ salt '<minion-id>' cmd.run 'uptime' <minion-id>: 20:58:28 up 91 days, 11:37, 1 user, load average: 0.79, 0.95, 1.02
Crontab管理
top文件(top.sls)
$ cat top.sls base: '<minion-id>': - crontab
crontab文件(init.sls)
$ cat ./crontab/init.sls date > /tmp/crontest: cron.present: - identifier: Reno_crontest - comment: Salt_crontest - user: root - minute: 7 - hour: 5
推送crontab内容, e.g.
$ salt '<minion-id>' state.highstate
日志信息
<minion-id>: ---------- ID: date > /tmp/crontest Function: cron.present Result: True Comment: Cron date > /tmp/crontest added to root's crontab Changes: ---------- root: date > /tmp/crontest Summary ------------ Succeeded: 1 Failed: 0 ------------ Total: 1
minion端验证crontab信息
$ crontab -l # Lines below here are managed by Salt, do not edit # Salt_crontest SALT_CRON_IDENTIFIER:Reno_crontest 7 5 * * * date > /tmp/crontest
总结:
以上的测试是在master端主动推送的, 当然可以采取从minion上主动拉取, 大家可以自己去玩下;
crontab中init.sls的分, 时等信息是可以随机化的, 使用random代替具体的value;
也可以更新已经存在的crontab信息;
以后有机会单独对crontab做总结.
配置文件推送
top文件(top.sls)
$ cat top.sls base: '<minion-id>': - file
crontab文件(init.sls)
$ cat ./crontab/init.sls /etc/salt/minion: file.managed: - source: salt://minion_conf/minion - name: /etc/salt/minion - user: root - group: root - mode: 640 cmd.wait: - name: /etc/init.d/salt-minion restart - watch: - file: /etc/salt/minion
类似crontab的测试方法, 有兴趣大家可以去测试玩玩.
salt执行流程
![](https://images0.cnblogs.com/blog2015/748358/201507/022159166662525.png)
salt二次开发
salt使用轻量级, 易部署, 易使用. 可以很轻松的使用salt完成线上千万服务器的管理维护, 当然除了这些基本功能的使用, 我们还使用比较高级的, 譬如: grans, pillar, returner等等. 另外, 还做了二次开发, 白屏化, 最主要的是我们实现了可并发, 可灰度, 可回滚!
以后有机会再一一分享吧 -_-
困了, 早点去睡觉了, 明天早起做OceanBase升级 -:)
From reno
2015-07-02 21:57:00
相关文章推荐
- NP问题 概要
- Solr之spring集成
- 关于Python输出方式(the value of x + y is z)
- iOS Core Data 简单封装
- 正则表达式浅谈
- svn+totoise版本控制
- 欢迎使用CSDN-markdown编辑器
- wamp 远程操作安装的痛苦经历 用teamviewer 旺旺远程连接
- 本地数据库词典
- Xcode 凝视代码
- Python 2.7.9 Demo - 003.01.只允许相同缩进
- Django项目导入Eclipse运行调试
- Django项目导入Eclipse运行调试
- 高效人士睡觉前做的10件事
- 【数模学习】Matlab 符号微积分 计算微分、雅可比矩阵、不定积分与定积分、求解微分方程
- rop入门(一)
- 查询单词
- 关于android中EditText自动获取焦点并弹出键盘的相关设置
- 解析XML文件的几种方式和区别
- Python 2.7.9 Demo - 001.print_hello_world - 002.print_chinese