http://www.saltstack.cn/projects/cssug-kb/wiki

今天没事发了2个小时 把以前研究过的saltstack 复习了一篇 准备没事开始上线部署下(先慢慢用) 以前一直研究这个研究 那个每次都是搞到一个初级水平 后来没需求了 就没研究了 这样过段时间了 啥都忘记完了 这次顺便把 复习过程记录下来 以后好查阅(这也是我写博客的最大原因)

关于saltstack 这个软件是干啥的 我这里就不介绍了 只是简单的说下是干啥的 网上的说法是 它是func的强化版本+ puppet的精简版

关于puppet 这2年 很火(我们线上也用到了他的部分功能) 以后有时间再写一套puppet的吧 今天将saltstack 这个东西 saltstack这个东西目前国内资历比较少 大部分资料都是从官网看的(英文的) 官网文档的地址我贴下吧 http://docs.saltstack.com/contents.html 想研究的 去看看吧

好了 说了一大堆了 开始干活吧 先安装吧

默认的yum 源是没saltstack包的 用epel 源就行

给个地址吧(去epel官网找也行)

wget http://dl.cpis-opt.com/huanw/shencan/epel-release-5-4.noarch.rpm && rpm -vih epel-release-5-4.noarch.rpm

像这个批量管理工具 都是C/S架构的 原因你懂的 不然这么 批量管理其他设备呀

下面我就用2台设备来演示下吧 主要是服务器端 客户端如果要上线的话 都是一样的

服务器安装 yum install salt-master -y

客户端安装 yum install salt-minion -y

OK 安装就这样 我们先来配置下 服务器端吧

关于配置文件 这里我多说一句 saltstack的配置文件格式都是YAML 的 配置的时候注意下 语法

vim /etc/salt/master 配置文件

saltstack自动化运维快速入门_salt stack

你懂的 监听地址

saltstack自动化运维快速入门_salt stack_02

我弄了一个自动验证 # 如果你不弄也行 到时候 手动去确认下证书 命令 salt-key 这个 自己没事去看帮助吧

OK 其他的默认的就好 #其实里面还有很多 性能方面的配置 有时间 你们研究下吧

我们再来弄客户端的吧

vim /etc/salt/minion

saltstack自动化运维快速入门_salt stack_03

matser 地址 你懂的

saltstack自动化运维快速入门_salt stack_04

id 号 这个就是服务器用来标示客户端的东西 这个没问题 吧 我用的主机名来做的标示

saltstack自动化运维快速入门_salt stack_05

这个参数 是我加的 就是客户端 每隔30s 去服务器同步资源 时间可以随便DIY mintus: hours: 这样的格式

跟客户端手动执行 salt-call state.highstate 命令 效果一样

OK 服务器 客户端配置都弄完了 然后起服务吧

客户端 /etc/init.d/salt-minion start 日志文件默认是这个 /var/log/salt/minion

服务端 /etc/init.d/salt-master start 日志文件默认是这个 /var/log/salt/master

OK 不出意外的话 都能起来 默认监听端口 这里不说了 配置文件里面其实也是有 你懂的

验证下 去服务器端 看下 有没有证书过来 #我是自动同意的 所以不需要手动签收的

saltstack自动化运维快速入门_salt stack_06

OK 这样 这个环境 基本是搭建完成了 以后所有的东西 这么玩 如何玩 都是基于这个环境来的 (多台客户端也是一样的)

哎 到这里了 我也不知道改讲啥了 因为这个东西实在是很多东西需要讲 其实有些东西我也不是太懂 下面 我就讲解下 在服务器上玩的一些命令吧

下面的例子 我拿我线上的来讲吧

先说下 salt 这个命令吧 这个命令是我在服务器端 用得最多的 我顺便简单说下吧

命令的格式为 salt 参数 ‘对象’ 命令 这样 #对象就是客户端汇报上来的id 我这里是主机名

参数的话 就比较多了 我不能一个一个的讲了 讲几个我会的吧 例子我用官方的吧

-E 如何用了这个参数 那命令的对象里面就可以用正则表达式来匹配对象了

salt -E ‘web1-(prod|devel)’ test.ping

saltstack自动化运维快速入门_salt stack_07

-L 如何用了这个参数 那命令的对象里面一般是以列表的形式来指定对象了

salt -L ‘web1,web2,web3′ test.ping

saltstack自动化运维快速入门_salt stack_08

-G 这个参数很强大 会根据默认的grain的结果来 指定最新 grain这个东西就像puppet里面的facter这个东西

用这个可以查看下 某台设备当前可用的grains salt ‘CMN-NC-3-3O1′ grains.ls 要值的话 改成 grains.items 就行

salt -G ‘os:CentOS’ test.ping
salt -G ‘cpuarch:x86_64′ grains.item num_cpus

saltstack自动化运维快速入门_salt stack_09

-N 这个参数是基于组来弄的 前提是你得先分好组 这里我用过 我贴下我弄过的吧

在服务器配置文件 添加分组

saltstack自动化运维快速入门_salt stack_10

我演示下吧

saltstack自动化运维快速入门_salt stack_11

OK 了 参数这块就先将 这几个吧

对象的话 就是客户端id

命令的话 这块就比较多了 这个真没法讲 一堆东西 salt ‘对象’ sys.doc 用这个命令 自己看吧 很多的

可以再细化点 这样吧 salt ‘对象’ sys.doc service #意思是只看 service 模板的用法(好像是叫模板)

OK 命令这里就先将这么多吧 送一个吧

cmd.run 这个命令 用来做系统管理 真的很爽 而已效率很高 速度超快哟 #好像命令内如果用变量的话 (awk的$m 之内的)需要转义下

剩下的自己试试吧

saltstack自动化运维快速入门_salt stack_12

OK 命令这块 改打住了 不然下面的核心 都没法写了 。 不会的看官网文档吧 我也不会了

其实大家用puppet 这类软件 一般是用来批量管理文件 包 服务 这类的东西(当然不止这些了) 下面我就简单介绍下 用saltstack来管这些东西吧

服务器端 写sls 模板(我也不知道 该不该这样叫) 他的默认路径在 /srv/salt/ 下 没有就新建目录

然后新建一个top.sls 就跟puppet的入口文件 site.pp 类似

saltstack自动化运维快速入门_salt stack_13

这里我讲解下 这个内容

base: 大家都这样取 因为只是一个代号吧 我也没改过

” : 这个引号内的是对象 说起匹配对象 你懂的 什么组 正则 类别都行 上面讲过的

– fc7.sc 这样的东西是指资源文件是fc7目录下的sc.sls 这样的格式 这个一定得记住 好像还有一种方法 会用到init.sls 擦这个真忘记了

下面的fc7.pack fc7.fc7 意思 都一样 #注意名称只是代号而已 你懂的

然后我们看fc7目录下的资源文件吧

讲解 我写图上了

saltstack自动化运维快速入门_salt stack_14

这个就简单的实现 安装包(必须是yum能安装的) 服务 文件的最简单的管理了

我这里只是简单的演示 因为这个都是我测试过的 所以我没把客户端的结果给贴出来(客户端是30s抓一次) 当然也可以主动推

salt ‘*’ state.highstate

核心技术就是我上面说的 saltstack 管理这块 有很多模板 很多参数的

这里要说的是 如果以后你上线了 必须得规划好 准备用saltstack管些什么东西 然后再分类 什么初始化 什么服务 什么包 什么文件等等这些

初始化一般是进行一个简单的初始化

文件管理这块可以把不是经常变的 放到一起管理

包的话 可以细分成一些基础包 服务包这类

服务的话 一般跟该服务的配置文件 放到一起 需要watch 然后reload的

先写这么多吧 下次吧 资源管理那块 详细再弄下