[SaltStack] 基础介绍
今天有时间把以前研究过的saltstack梳理总结下 -😃
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
-
-
-
-
-
id:return: minion_return
参数的含义:
- master: 配置master的信息, 可以配置多个master源, minion会逐一去做注册(后面在HA部署上很有用)
- id: 表示minion去master注册的id信息, 可以用hostname(具有唯一性的)
- return: 表示对minion进行变更后的日志收集(可以入库, 需要二次开发)
-
-
测试
-
远程命令
$ salt '
' test.ping
:
True$ salt '
' cmd.run 'uptime'
:
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:
'':
- 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 '
' state.highstate -
日志信息
:
----------
ID: date > /tmp/crontest
Function: cron.present
Result: True
Comment: Cron date > /tmp/crontest added to root's crontab
Changes:
----------
root:
date > /tmp/crontestSummary
------------
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:
'':
- 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执行流程

-
salt二次开发
salt使用轻量级, 易部署, 易使用. 可以很轻松的使用salt完成线上千万服务器的管理维护, 当然除了这些基本功能的使用, 我们还使用比较高级的, 譬如: grans, pillar, returner等等. 另外, 还做了二次开发, 白屏化, 最主要的是我们实现了可并发, 可灰度, 可回滚!
以后有机会再一一分享吧 -_-
困了, 早点去睡觉了, 明天早起做OceanBase升级 -😃
From reno
2015-07-02 21:57:00

浙公网安备 33010602011771号