今天没事发了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  配置文件

你懂的 监听地址

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

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

我们再来弄客户端的吧

vim /etc/salt/minion

matser 地址 你懂的

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

这个参数 是我加的  就是客户端 每隔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  不出意外的话 都能起来  默认监听端口 这里不说了 配置文件里面其实也是有  你懂的

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

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

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

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

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

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

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

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

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

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

salt -L 'web1,web2,web3' test.ping

-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

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

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

我演示下吧

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

对象的话  就是客户端id

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

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

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

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

剩下的自己试试吧

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


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

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

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

这里我讲解下 这个内容

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

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

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

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

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

讲解 我写图上了

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

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

salt ‘*’ state.highstate

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

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

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

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

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

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

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