转自:https://segmentfault.com/a/1190000000513137

今天在进行 saltstack 多环境的时候,遇到一个问题,最终得到解决,好记性不如烂笔头,记录。

首先,我在 salt master 服务器上对 /etc/salt/master 配置文件进行多环境配置,配置文件如下:

file_roots:
base:
- /srv/salt/base
dev:
- /srv/salt/dev
prod:
- /srv/salt/prod
test:
- /srv/salt/test

然后在分别建立配置文件所配置的目录。
其中我的 /srv/salt/prod 的目录树如下:

/srv/salt/prod
|-- nginx
| `-- stock.sls
|-- stock.prod.com
| `-- nginx
| `-- stock.prod.com
`-- top.sls

我做这个主要是为了对集群中的 nginx 的配置文件进行批量管理,当配置文件变更后,能进行批量推送。

弄完以上后,执行命令让其生效:

sudo salt -N STOCK  state.highstate -v

执行完毕,能成功生效,但是突然想到个问题,这个是全局的所有的环境的所有的状态生效,如果我要只对 prod 环境的某一个状态生效呢,或者是其他的环境。于是查看官方文档,发现了可以使用 state.sls 来指定特定的进行处理,当时也没有细看,就直接执行命令:

sudo salt -N STOCK state.sls nginx.stock

结果执行报错,告诉我在 base 下面没有匹配到 nginx.stock

当时想,不应该是,我不是定义了么,开始是以为 state.sls 和 state.highstate 一样,会对所有的环境遍历。
有问题,就 google 呗,然后 google 了下没有出来,啃官方文档去,找到 state.sls 的那段,发现定义如下:

salt.modules.state.sls(mods,saltenv='base',test=None,exclude=None,queue=False,env=None,concurrent=False,**kwargs)

从上面可以看出, state.sls 默认的运行环境是 base,另外通过查看了下 saltstack 的 google groups ,发现绿肥也对这个解答了下, state.sls 并不读取 top.sls,所以 state.sls 需要单独执行哪些 sls 的话,需要你自定义。
绿肥解答的连接请点击这里

注:由于万恶的长城的存在,请准备梯子。

经过上面的查看,因此,修正执行命令

 sudo salt -N STOCK state.sls  saltenv='prod' nginx.stock

多加一个参数 saltenv,问题解决。更详细的内容请看官方的文档介绍 - salt.modules.state.sls

自动化运维工具SaltStack - 多环境(使用记录【state.sls 与 state.highstate】)的更多相关文章

  1. 自动化运维工具 SaltStack 搭建

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-devops-saltstack-in-cloud/index.html#N10072 ...

  2. 自动化运维工具SaltStack详细部署【转】

    ==========================================================================================一.基础介绍==== ...

  3. 自动化运维工具SaltStack详细部署

    ==========================================================================================一.基础介绍==== ...

  4. 自动化运维工具SaltStack安装配置

    SaltStack是一种全新的基础设置管理方式,部署轻松,在几分钟内可运作起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯.通过部署SaltStack环境,我们可以在成千上万台服务 ...

  5. 自动化运维工具 SaltStack 在云计算环境中的实践

    http://www.talkwithtrend.com/Article/218473

  6. 自动化运维工具Ansible详细部署 (转载)

    自动化运维工具Ansible详细部署 标签:ansible 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://sofar.blog. ...

  7. 自动化运维工具Ansible的部署步骤详解

    本文来源于http://sofar.blog.51cto.com/353572/1579894,主要是看到这样一篇好文章,想留下来供各位同僚一起分享. 一.基础介绍 ================= ...

  8. 自动化运维与Saltstack

    一.自动化运维介绍 1.自动化运维产生背景   传统的IT运维是将数据中心中的网络设备.服务器.数据库.中间件.存储.虚拟化.硬件等资源进行统一监控,当资源出现告警时,运维人员通过工具或者基于经验进行 ...

  9. 企业级自动化运维工具应用实战-ansible

    背景 公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备.公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测试,运 ...

随机推荐

  1. mybatis高级映射(一对一,一对多)

    mybatis高级映射 一对一关联映射 需求:查询订单信息,关联查询用户信息(一个订单对应一个用户) (1)通过resultType实现 sql语句: select orders.* , USER.u ...

  2. 用AndroidStudio发布Libs到Bintray jCenter

    1 RootProject[根目录]build.gradle中添加如下插件引用 dependencies { ....... classpath 'com.jfrog.bintray.gradle:g ...

  3. 再见乱码:5分钟读懂MySQL字符集设置

    一.内容概述 在MySQL的使用过程中,了解字符集.字符序的概念,以及不同设置对数据存储.比较的影响非常重要.不少同学在日常工作中遇到的"乱码"问题,很有可能就是因为对字符集与字符 ...

  4. Android开发——使用高级的RecyclerView实现侧滑菜单删除功能(SwipeRecyclerView)

    使用之前,先简单介绍一下这个SwipeRecyclerView,这是严大(严振杰)基于RecyclerView的进行修改和封装的高级RecyclerView,其可以实现像QQ聊天界面的侧滑删除菜单,和 ...

  5. 6年后的第一篇博客:进入java的精彩世界

    10的.NET从业经验,也算资深人士了. 2018开始,正式进入JAVA的世界. 为什么说正式?因为已经附带有几年ANDROID经验了,确切的说,是正式进入JAVA服务器端. 没有任何人要求,纯粹是个 ...

  6. PE文件详解(四)

    本文转自小甲鱼的PE文件详解系列原文传送门 到此为止,小甲鱼和大家已经学了许多关于 DOS header 和 PE header 的知识.接下来就该轮到SectionTable (区块表,也成节表). ...

  7. 编写OC高质量的代码的有效方法

    1. 写这个只是为了自己记忆,有相关pdf文件,如需要留下邮箱.. 2. 在类的头文件中尽量少引入其他头文件 除非确有必要,否则不要引入头文件.一般来说,应在某个类的头文件中使用向前声明来提及别的类( ...

  8. Python selenium自动化网页抓取器

    (开开心心每一天~ ---虫瘾师) 直接入正题---Python selenium自动控制浏览器对网页的数据进行抓取,其中包含按钮点击.跳转页面.搜索框的输入.页面的价值数据存储.mongodb自动i ...

  9. Object.prototype.toString.call()方法浅谈

    使用Object.prototype上的原生toString()方法判断数据类型,使用方法如下: Object.prototype.toString.call(value) 1.判断基本类型: Obj ...

  10. poj_2195Going Home(最小费用最大流)

    poj_2195Going Home(最小费用最大流) 标签: 最小费用最大流 题目链接 题意: 有n*m的矩阵,H表示这个点是一个房子,m表示这个点是一个人,现在每一个人需要走入一个房间,已经知道的 ...