您的位置:首页 > 其它

[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了.

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执行流程



salt二次开发

salt使用轻量级, 易部署, 易使用. 可以很轻松的使用salt完成线上千万服务器的管理维护, 当然除了这些基本功能的使用, 我们还使用比较高级的, 譬如: grans, pillar, returner等等. 另外, 还做了二次开发, 白屏化, 最主要的是我们实现了可并发, 可灰度, 可回滚!

以后有机会再一一分享吧 -_-

困了, 早点去睡觉了, 明天早起做OceanBase升级 -:)

From reno

2015-07-02 21:57:00
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: