saltstack之jinja,解决生产发布问题

最近换了工作,刚入职领导给我一个听着特复杂的需求,要实现自动发布:
需求是这样的:一个程序包,分发到60台机器上,每台机器有两个这样的应用,但是路径和程序名都不一样。即分发过去全部都要重命名,当我了解了环境的详细情况之后,决定采用saltstack的jinja模版的方式,如下:

{% if  grains[‘fqdn_ip4‘][0] == ‘10.1.10.86‘ %}  #先判断ip,然后set2个不同的变量
  {% set motd = [‘/opt/eth-btc-match/eth2btc‘, ‘/opt/zsc-eth-match/zsc2eth‘] %}
    {% for motdfile in motd %}  #通过for循环,取出
{{ motdfile }}:
  file.managed:
    - source: salt://match/files/CMatchModule
    - backup: minion
    {% endfor %}
{% elif  grains[‘fqdn_ip4‘][0] == ‘10.1.10.88‘ %}
  {% set motd = [‘/opt/zec-btc-match/zec2btc‘, ‘/opt/zec-eth-match/zec2eth‘] %}
    {% for motdfile in motd %}
{{ motdfile }}:
  file.managed:
    - source: salt://match/files/CMatchModule
    - backup: minion
    {% endfor %}
{% elif  grains[‘fqdn_ip4‘][0] == ‘10.1.10.89‘ %}
  {% set motd = [‘/opt/ven-btc-match/ven2btc‘, ‘/opt/ven-eth-match/ven2eth‘] %}
    {% for motdfile in motd %}
{{ motdfile }}:
  file.managed:
    - source: salt://match/files/CMatchModule
    - backup: minion  

 此处省略很多

 {% elif  grains[‘fqdn_ip4‘][0] == ‘10.1.10.217‘ %}
  {% set motd = [‘/opt/luc-eth-match/luc2eth‘, ‘/opt/sead-usdt-match/sead2usdt‘] %}
    {% for motdfile in motd %}
{{ motdfile }}:
  file.managed:
    - source: salt://match/files/CMatchModule
    - backup: minion
    {% endfor %}
{% elif  grains[‘fqdn_ip4‘][0] == ‘10.1.10.218‘ %}
  {% set motd = [‘/opt/bnb-usdt-match/bnb2usdt‘, ‘/opt/ht-usdt-match/ht2usdt‘] %}
    {% for motdfile in motd %}
{{ motdfile }}:
  file.managed:
    - source: salt://match/files/CMatchModule
    - backup: minion
    {% endfor %}
{% endif %}

原文地址:http://blog.51cto.com/9682938/2134938

时间: 2024-08-04 23:31:04

saltstack之jinja,解决生产发布问题的相关文章

解决nginx发布网站跨目录访问

解决nginx发布网站跨目录访问(thinkphp5+lnmp) 到:usr/local/nginx/conf/vim fastcgi.cof 把最后一行加上井号#注释掉保存重启 restart 参考:http://www.cnblogs.com/q1104460935/p/7028881.html

解决生产环境js无法调试问题

demo:https://github.com/chenchunyong/source-map-demo.git 背景 前端开发中,开发环境与生产环境的代码往往不一致,生产环境的代码通过构建工具进行合并,混淆,压缩等操作.不过通过构建工具生成的js代码可读性差,不利于维护.排查问题. 解决方案 首先,通过构建工具生成两个生产js文件,如下: 所有用户可见js,比如bundle.js 特定用户js,排查问题用,此js文件会加入sourcemap引用,比如说bundle.debug.js 然后,根据

基于saltstack svn写的一个发布系统

之前写了一个代码发布系统,功能,体验还有待完善,先放截图,想获得源码的,私聊我 1.登录页 2.分组管理页 3.添加项目页 4.项目列表和项目编辑页 5.项目发布回滚页

解决Eclipse发布到Tomcat丢失依赖jar包的问题

如果jar文件是以外部依赖的形式导入的.Eclipse将web项目发布到Tomcat时,是不会自动发布这些依赖的. 可以通过Eclipse在项目上右击 - Propertics - Deployment Assembly,添加"Java Build Path Entries",添加所有依赖的jar包,就可以在发布时自动发布外部依赖的jar包.

解决Axure发布分享预览的3个方法

公司的同事制作的一个产品原型,要发给我,我当时正在客户这里,电脑上并没有Axure,客户又催得急,感到一阵无奈.这次回来之后,经过一番摸索,发现还是有办法的.这里给大家分享一下Axure发布分享预览的方法. 1.使用AxShare 这个是Axure官方提供的服务. 方法是:把你的rp文档,上传到http://share.axure.com(Axure软件里工具栏有按钮可以直接上传). 不过,很多使用过Axshare的朋友都会放弃它的,因为它的服务器在国外,在国内使用它实在是让人很窒息的(速度实在

解决wcf发布后无法访问

一般是在安装 Windows Communication Foundation (WCF) 之后安装了 IIS造成,运行以上命令将在 IIS 中注册所需的脚本映射. 这时将确保在MIME中将 .svc 文件类型映射到 aspnet_isapi.dll. 运行cmd,输入: C:\Windows\Microsoft.NET\Framework\V4.0.30319\aspnet_regiis -i 注册成功后,重启一下iis, 理论上应可以解决导致404.17 not found 的大部分问题了

解决Qt发布的程序在xp环境下提示“无法定位程序输入点 K32GetModuleFileNameExA 于动态链接库 KERNEL32.dll 上”的错误

用Qt开发时,调用系统API函数时的问题,在win7及以上系统没什么大问题.在xp下出现了标题描述的现象,导致无法启动程序.看了下网上的解决方案如下: 这里我要讨论的是在 WinSDK v7.0中的一些不友好的错误.如果你是一名开发者,并且当前使用的是VS2010编译器自带的 WinSDK v7.0,那么个别时候当你执行程序时,可能遇到这样的错误提示:The procedure entry point K32*** could not be located in the dynamic link

SaltStack配置管理-jinja模板

上一篇:SaltStack配置管理-状态间关系 需求:需要apache配置文件里面监听的端口是每个minion本地的地址 saltstack默认的模板是jinjia模板 参考文档:http://docs.jinkan.org/docs/jinja2/ 两种分隔符: {% ... %} 和 {{ ... }} .前者用于执行诸如 for 循环 或赋值的语句,后者把表达式的结果打印到模板上. 如何知道salt配置文件是一个模板 需要在sls配置文件里面定义 apache.init.sls 修改配置h

saltstack的jinja模

[[email protected] ~]# cd /srv/salt/base/ [[email protected] base]# ll 总用量 12 -rw-r--r-- 1 root root 172 11月 14 21:26 apache.sls -rw-r--r-- 1 root root 128 11月 16 00:12 dns.sls drwxr-xr-x 2 root root 25 11月 16 00:23 files -rw-r--r-- 1 root root 28 11