heshao2005 发表于 2018-8-1 11:23:58

自动化部署工具saltstack-linux学习与交流

  今天没事发了2个小时 把以前研究过的saltstack 复习了一篇 准备没事开始上线部署下(先慢慢用)以前一直研究这个研究 那个每次都是搞到一个初级水平 后来没需求了就没研究了 这样过段时间了 啥都忘记完了这次顺便把 复习过程记录下来以后好查阅(这也是我写博客的最大原因)
  关于saltstack 这个软件是干啥的 我这里就不介绍了 只是简单的说下是干啥的网上的说法是 它是func的强化版本+ puppet的精简版
  关于puppet 这2年 很火(我们线上也用到了他的部分功能) 以后有时间再写一套puppet的吧 今天将saltstack 这个东西   saltstack这个东西目前国内资历比较少大部分资料都是从官网看的(英文的)官网文档的地址我贴下吧   http://docs.saltstack.com/contents.html想研究的 去看看吧
  好了说了一大堆了开始干活吧   先安装吧
  默认的yum 源是没saltstack包的 用epel 源就行
  给个地址吧(去epel官网找也行)
  wgethttp://dl.cpis-opt.com/huanw/shencan/epel-release-5-4.noarch.rpm && rpm -vihepel-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.pingsalt -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.packfc7.fc7 意思 都一样#注意名称只是代号而已 你懂的
  然后我们看fc7目录下的资源文件吧
  讲解 我写图上了
  这个就简单的实现 安装包(必须是yum能安装的)服务文件的最简单的管理了
  我这里只是简单的演示 因为这个都是我测试过的 所以我没把客户端的结果给贴出来(客户端是30s抓一次) 当然也可以主动推
  salt ‘*’ state.highstate
  核心技术就是我上面说的 saltstack 管理这块 有很多模板 很多参数的
  这里要说的是如果以后你上线了   必须得规划好准备用saltstack管些什么东西然后再分类什么初始化什么服务 什么包 什么文件等等这些
  初始化一般是进行一个简单的初始化
  文件管理这块可以把不是经常变的 放到一起管理
  包的话可以细分成一些基础包 服务包这类
  服务的话 一般跟该服务的配置文件 放到一起 需要watch 然后reload的
  先写这么多吧下次吧 资源管理那块 详细再弄下
页: [1]
查看完整版本: 自动化部署工具saltstack-linux学习与交流