前言
最近刚刚用用pythondjango开发了运维管理平台,功能都是实现了当然还有很多不足,
开发后 就想起到之前看过一些时间的saltstack 介于自己英文水平差 平时也就看看
别人的博客后来由于别的问题搁浅了很长时间。
在开发的这套平台有大量的批量主机远程执行命令用到的有paramikomultiprocessing,os等模块
页面返回执行命令的结果 是用写文件的方式循环打印在页面上 大量的数据会出现一些小问题
结合正在看的saltstack 就有想法把它整合到自己的平台里去这个在浏览别人的博客里也都有提到
谈谈自己的学习方法英语不好这些老外写的文档 是甭想看懂了但是也得看啊 各种翻译软件
对照国内的一些博客开始艰难的学习ing…
下面简单介绍一下saltstack的一些基本用法
saltstack介绍
什么是saltstack
如果你有很多服务器需要管理都需要修改某一处配置的时候 或者安装部署某些服务、统计所有主机硬件信息
这时候你需要一台台登录然后反复做相同的事情不仅没有效率时间长了也会很枯燥耽误自己很长时间
这时候我推荐你使用saltstackslatstack采用zeromq 消息队列进行通信 使用python编写
python有丰富的模块而且语法简洁saltstack对于设备也是相当轻量级的它是完全开源的
遵守Apche2 开源协议。
基础用法
master端
配置文件/etc/salt/master
配置文件参数auto_accept: True (master端自动接受请求) or False (手工接受验证)
minion端
配置文件: /etc/salt/minion
配置文件参数master192.168.6.170 (执行master端)
idceshi1 (minion标示默认是通过主机名)
schedule: 向master端自动同步资源(这是设置的是30s)
启动服务
/etc/init.d/salt-master start
/etc/init.d/salt-minion start
认证
和puppet一样 salt的master和minion是通过证书通信的
在master端 saltkey -L 查看需要接受的keys
saltkey a ceshi1 接受来自ceshi1的证书
saltkey A 接受所有请求的证书
saltkey d ceshi1 踢出
一些命令用法
-E 支持正则匹配
salt E ‘ceshi*’ test.ping
L 支持多个客户端
salt L ‘ceshi1,ceshi2,ceshi3′ test.ping
G 参数 列出所有grains的名字和内容
salt \* grains.items
-N 基于组去匹配客户端组还有一些高级用法以后在说
salt N ‘ceshizhuji’ test.ping
编辑master端的配置文件
以fqdn方式去匹配
salt -G ‘fqdn:test’ test.ping
查看更多的命令
saltstack安全认证问题saltstack自带一个acl访问控制可以自定义对每个主机的使用那个模块
针对ceshi1这个主机 只能使用test.ping 和 status.uptime这两个模块
vi /etc/salt/master
使用saltstack 安装软件包和管理服务
规划salt 目录
vi /etc/salt/master
saltstack 服务的入口文件是 /srv/salt/top.sls
解释
base配置文件中指定
”里的是对象可以用正则组去匹配主机
fc7.pack 指的是资源文件是fc7目录下的pack.sls 文件
服务端可以主动推也可以等待客户端30s后同步资源
salt \* state.highstate
# saltstacl management任务管理 job
salt 针对每次的操作都可以记录下来留做日后的行为审计
salt-run jobs.list_jobs 现实最近的操作
salt-run jobs.lookup_jid id号码
salt-run jobs.active 查看正在运行中的任务,因为我没有salt的任务正在运行所以显示一个空的字典
# saltstack mine功能主要是客户端自己执行规定好得模块 每隔一段时间向服务端报告服务端可以使用命令查看
vi /etc/salt/minion
服务端执行
salt ‘*’ mine.get ‘*’ network.ping