博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STATES TUTORIAL(第三部分)
阅读量:4983 次
发布时间:2019-06-12

本文共 3529 字,大约阅读时间需要 11 分钟。

STATES TUTORIAL, PART 4(第三部分)

使用file_roots配置state文件环境


SALT FILESERVER PATH INHERITANCE

salt文件服务器路径解密

示例:

1 # In the master config file (/etc/salt/master)2 file_roots:3   base:4     - /srv/salt5     - /mnt/salt-nfs/base
View Code

注意:

  当定义的多路径之中存在相同的文件引用路径,则以先匹配到的为准。

############################################################

这里有一个值得挖掘和探讨的东西,FILESERVER_BACKEND选项,这个选项的具体配置说明在介绍master配置文件选项就有所说明,这里结合当前的教程内容进行一下挖掘。

FILESERVER_BACKEND

用于设置文件服务器后端配置的,支持roots(本地环境),git(git环境),以及二者结合的方式,文件的查找使用从上到下进行匹配的方式,先到先得。

示例:

1 fileserver_backend:2   - roots3   - git
View Code

############################################################

ENVIRONMENT CONFIGURATION

配置一个多环境,下例就是一个类似开发测试线上的例子,利用文件查找机制,将处于开发的环境放置在dev目录。

示例:

1 file_roots: 2   base: 3     - /srv/salt/prod 4   qa: 5     - /srv/salt/qa 6     - /srv/salt/prod 7   dev: 8     - /srv/salt/dev 9     - /srv/salt/qa10     - /srv/salt/prod
View Code

REQUESTING FILES FROM SPECIFIC FILESERVER ENVIRONMENTS

从指定的文件服务器环境获取文件

具体的使用方法参考前面的文件服务器章节的讲解:

  https://docs.saltstack.com/en/2016.11/ref/file_server/environments.html#file-server-environments

PRACTICAL EXAMPLE

示例:

/srv/salt/prod/top.sls:

1 base:2   'web*prod*':3     - webserver.foobarcom4 qa:5   'web*qa*':6     - webserver.foobarcom7 dev:8   'web*dev*':9     - webserver.foobarcom
View Code

/srv/pillar/top.sls:

1 base:2   'web*prod*':3     - webserver.prod4   'web*qa*':5     - webserver.qa6   'web*dev*':7     - webserver.dev
View Code

/srv/pillar/webserver/prod.sls:

1 webserver_role: prod
View Code

/srv/pillar/webserver/qa.sls:

1 webserver_role: qa
View Code

/srv/pillar/webserver/dev.sls:

1 webserver_role: dev
View Code

/srv/salt/prod/webserver/foobarcom.sls:

1 {% if pillar.get('webserver_role', '') %} 2 /var/www/foobarcom: 3   file.recurse: 4     - source: salt://webserver/src/foobarcom 5     - env: {
{ pillar['webserver_role'] }} 6 - user: www 7 - group: www 8 - dir_mode: 755 9 - file_mode: 64410 {% endif %}
View Code

以上示例包含一下几个重要的内容:

  (1)sls文件环境的配置问题,将开发,测试,上线三个环境利用file_roots进行配置,不同的环境关联的目录结构不同。

  (2)具体环境中对minion角色的匹配问题,这里得结合grains和minion id做适当的匹配。
  (3)pillar环境与state环境的关联以及与minion的关联问题,控制pillar变量在环境中的使用范围问题。
  (4)sls文件分布问题,当一个sls文件需要经历开发环境,测试环境,线上环境的时候,sls文件最先应放置在相当于示例的/srv/salt/dev/webserver/src/foobarcom位置,

      这个位置只有处于dev环境中的minion能被匹配到。


 使用指定的pillar变量环境部署一个top环境,相当于执行一个highstate:

  salt --pillar 'webserver_role:dev' state.apply

如果只是仅仅的想只部署这一个环境的换,需要指定state.apply的参数sls文件

  salt --pillar 'webserver_role:dev' state.apply webserver.foobarcom

当完成开发阶段,需要进入测试环境的时候,需要将sls文件移动到qa目录下,指定以下命令:

  salt --pillar 'webserver_role:qa' state.apply webserver.foobarcom

如果已经完成测试需要部署到正式环境中的话,可以使用以下命令:

  salt --pillar 'webserver_role:prod' state.apply webserver.foobarcom

 注意: 

  当你把文件移动到base中的prod目录中,属于正式环境的一部分,但是在qa和dev环境中仍然是可用的,这是由于salt使用了继承的功能,在开发环境中,base目录环境也在dev环境的搜索范围里面,这是面向对象的一个特点。


 

CONTINUE LEARNING

接下来你可以学习关于state的系统性详细介绍


 

思考:

(1)部署的时候需要指定类似--pillar 'webserver_role:prod'这样的变量指定,为什么?
    因为在sls文件中有一个pillar['webserver_role']获取变量的内容,且使用了env参数,譬如你设置为dev环境的时候,pillar需要为sls提供在dev环境中指定的变量内容,这段内容实际上就是将sls文件与pillar变量环境连接起来。

(2)如果不指定上一个问题中pillar的变量环境,我们可以怎么做实现相同的目的呢?

    在上面的例子送,执行前指定pillar环境显得不那么友好,所以建议在pillar设置与file_roots类似的配置结构,虽然看起来配置相对冗杂,但是结构关联关系会比较严谨,不易出现误操作的情况。

示例:

1 pillar_roots: 2   base: 3     - /srv/salt/pillar/prod 4   qa: 5     - /srv/salt/pillar/qa 6     - /srv/salt/pillar/prod 7   dev: 8     - /srv/salt/pillar/dev 9     - /srv/salt/pillar/qa10     - /srv/salt/pillar/prod
View Code

可以通过pillarenv=testing的方式指定pillar的变量环境。

 

转载于:https://www.cnblogs.com/solitarywares/p/7503046.html

你可能感兴趣的文章
架构相关概念——学习笔记
查看>>
被称为“开发者神器”的GitHub,到底该怎么用?
查看>>
(坑集)Django环境配置
查看>>
利用padding-top/padding-bottom百分比,进行占位和高度自适应
查看>>
常用的监控系统资源的工具
查看>>
08ssm三大框架整合以前步骤
查看>>
R语言学习笔记之八
查看>>
正则表达式语法(msdn)
查看>>
oralce使用INSERT语句向表中插入数据
查看>>
MySQL 数据类型 详解 (转载)
查看>>
干净win7要做几步才能运行第一个Spring MVC 写的动态web程序
查看>>
Maven学习笔记(一)
查看>>
分割线
查看>>
xls的读写
查看>>
用函数创建子进程
查看>>
Myeclipse配置插件
查看>>
gitlab配置通过smtp发送邮件(QQ exmail腾讯企业为例)
查看>>
蓝桥杯之入学考试
查看>>
新公司java的注解以及springboot的相关注解
查看>>
Unity脚本的生命周期中几个重要的方法
查看>>