今天没事发了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的
先写这么多吧 下次吧 资源管理那块 详细再弄下
转自:http://www.shencan.net/index.php/2013/05/24/saltstack%EF%BC%88%E4%B8%80%EF%BC%89/
转载请注明:爱开源 » saltstack自动化运维快速入门