设为首页 收藏本站
查看: 1954|回复: 0

[经验分享] 运维自动化之Saltstack(五)配置管理

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-7-31 11:31:50 | 显示全部楼层 |阅读模式
  配置管理--终于到重点了
  说到配置管理,不得不说一下下面谈到的几个概念,理解他们很重要。
  Salt是通过一个文件top.sls管理minion端的状态的。
  这个文件top.sls在这里叫做入口文件,此文件里记录了一个或者几个环境,在某一个环境下需要管理的minion端ID。
  以及记录了受管理的minion端需要去匹配的状态;状态一般会有多个状态。
  说一下我理解的状态,状态就是一组配置,配置里包含了minion端需要安装的软件名和设置好的配置文件,salt是通过配置文件去声明的。这个配置文件名必须以 .sls 结尾。
  我理解的环境,环境可以看作是一个大的状态,环境下面可以去匹配多个目标minion端。环境是在salt的主配置文件中配置的。
  为了进一步理解上面提到的概念,下面用几个实例说明一下:
  salt的所要配置文件的格式都是遵循YAML格式,前几次已经提到了,下面会再次提到。
DSC0000.png

  由上图中的配置选项,以环境base为例,可以知道环境bese的根目录是
  /etc/salt/stats
  上面提到了salt是通过入口文件来管理minion端的状态的,因此在此下应该会有个top.sls文件
DSC0001.png DSC0002.png

  从上面的图片中可以看到,top.sls文件中声明了一个环境base,在此环境下可以匹配到的minion端是所有的minion;salt master会利用其下面配置好的状态去对匹配到的minion主机进行配置状态的同步。
  状态有:
  init.pkg
  init.limit
  init.zabbix_agent等
  init.pkg的意思是指,在init目录下有个以 .sls为结尾的pkg.sll文件,此文件记录了具体的状态。
  而这个init目录是相对于base环境的根目录来说的,也就是init目录的绝对路径是:
  /etc/salt/status/init
DSC0003.png

  从上图不难发现,在/etc/salt/stats/init目录下有好几个状态文件:
  limit.sls、pkg.sls、zabbix_agent.sls
  这些状态在入口文件中声明时,文件名中是不需要写.sls的,同时这也是必须的遵守的规定。
  说道现在,你有没有注意到入口文件又是在哪儿配置定义的呢?
  当然也是在salt master的主配置文件里定义的,看下图:
DSC0004.png

  要想对salt的配置管理掌握好,记住进行配置管理的流程步骤很重要,特别是排错的时候:
  1. 在配置文件/etc/salt/master中的 file_roots下配置需要的环境和环境的根目录
  2. 在环境的根目录下创建并配置top.sls文件,定义哪些minion端需要匹配哪些环境(一般是环境目录名)执行相应的状态
  状态: 就是在环境目录下的以  .sls为结尾的文件中定义的相关状态;比如:pgk.installed   file.managed service.runing
  3. 在top.sls文件中声明的状态文件中,配置实际要minion端匹配的状态
  4. 当minion找到相应的 .sls文件后,minion端会执行文件中定义的相关模块提供的相关功能(所谓的状态)
  再次提一下,关于SaltStack的所有配置文件都是YAML格式的,编写归则有以下几点:
  写法一:
  www:
  pkg:
  - installed
  state2:
  - state: states
  解释:
  www:      定义了一个state(状态)的ID,可以自定义
  pkg:  表示salt中的一个模块
  -     表示一个模块(pkg)中的方法的开始,这里是 installed
  state2: 表示另一个模块
  states:表示另一个模块中具体的方法
  不同的各个层级之间必须有缩进,每层的缩进必须使用每层递增2个空格的格式,不能有Tab键
  - 横杆后面必须有 1 个空格
  :冒号后面必须有 1 个空格
  在同一个ID中不能出现重复的状态
  写法二:
  pkg.init:            #ID
  pkg.installed:     #pkg为模块,installed是方法
  -names:          #names方法,这样可以写多个软件包。
  - httpd        #软件包的名称
  - lrzsz
  一些编写配置文件时需要注意的地方:
  1. 要想在配置文件 top.sls 中使用正则,需要加入 - match: pcre
  例如:
  base:
  'minion(1|2).salt.com':
  - match: pcre   #这里的参数,就是指明了用正则表达式去匹配上面的minion端主机ID
  2. 可以把其他地方配置好的状态包含进现在编辑的配置文件中
  include       # 可以引用在top.sls文件内定义的其他状态的配置文件
  - init.pkg   # 表示引用在init目录下的pkg.sls文件内的状态
  一个简单的搭建LAMP环境的例子带你进入如何编写配置文件的世界:
  咱们还是按照上面的提到的步骤来,以便理清编辑配置文件的思路。

  •   在master配置文件中配置一下状态及其根目录:
DSC0005.png 2. 在上图中定义的环境根目录下创建并配置top.sls文件:

DSC0006.png 3. 配置相关状态

  首先配置一下mysql的状态:
DSC0007.png

  简单分析一下:
  上图中可以看到,我在/etc/salt/stats/lamp/mysql.sls状态文件中配置了一个安装和启动mysql服务的状态。
  接下来配置apache的状态:
DSC0008.png

DSC0009.png

  分析一下,从上图不难看出,Apache的状态文件的绝对路径是在:
  /etc/salt/stats/lamp/httpd.sls,这时在top.sls文件中自定义的。
  在状态文件中定义了minion端需要同步的具体状态,这些状态包括:
  需要安装的包和需要同步的配置文件
  4.配置PHP,这里就留给看官您,练习练习吧,可以用先用rpm方式安装。
  当然,后面我会和大家分享入如何用salt配置LNMP环境,当时候再来分享php 的编译安装。
  5. 执行生效
  如何让master端配置好的状态同步到minion端呢?
  可以用下面的方法:

  •   指定单个具体的状态同步
DSC00010.png

  下面是最好返回的结果,结果显示成功 2个,失败 0个,总共 2个状态被同步。
DSC00011.png

  值得说明的是,后面的 test=True 意思是指先测试一下,不是真的把状态同步执行到minion端
  上图中表示是成功的
  2. 把所有的状态都同步执行到minion端
DSC00012.png

  测试完没问题后,就可以把后面的 test=True 去掉,进行真正部署了。
  究竟部署到那些minion端了,看一下在top.sls文件中的配置:
DSC00013.png

  至此,salt的基本入门算是分享完了;以后会加入具体的实战项目

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544101-1-1.html 上篇帖子: Saltstack API 配置管理 下篇帖子: CentOS 7.2 部署Saltstack-Elephant
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表