首页 文章

使用支柱和jinja部署一些文件

提问于
浏览
0

我想用Saltstack在我的nginx代理上部署很多文件 . 我的代理将在 /etc/nginx/sites-available/[WEBSERVER] 中为我拥有的每个网络服务器托管一个配置文件 .

所以在我的所有支柱文件中,对于每一个带有纹理 role:webserver 的小兵,我都说如下:

proxy:
  hostname: NAME OF THE WEBSERVER
  dns_suffixe: TEST1.FR

在我的第二个小兵,我有相同的不同的 Value ,等等 .

所以在公式中我使用该代码来匹配支柱的值:

{% for proxy, args in salt['pillar.get']('proxy').iteritems() %}

/etc/nginx/sites-available/{{hostname}}:
  file.managed:
    - source: salt://proxy-ext/files/default.jinja
    - target: /etc/nginx/sites-available/{{hostname}}
    - template: jinja
    - user: root
    - group: root
    - mode: 640
{% endfor %}

我使用相同的var {{hostname}}{{dns_suffixe} 管理文件 default.jinja .

但这不起作用 . 我还是Salt的新手,我不确定这是做我想做的最好的方法 . 是否有可能找回我在网络服务器的支柱文件中写的所有支柱 Value ?即使关键:值总是如下?

proxy:
  hostname: NAME

我正在使用Salt 2017.我的 top.sls 文件定义明确 . 欢迎大家回答!我完全卡住了 . 帮助:3

编辑

我会尝试不同地改写,以便更清楚 . 该操纵的目标是自动上载许多网站 . 所以我有一个带有nginx代理的小兵 . 当我运行我的代理公式时,我希望Salt分析我的minions并匹配webserver grain . 在我的所有网络服务器上,都有一个公式/支柱来部署应用程序,在同一支柱上,我有 proxy.hostname:valueproxy.cert:value ,如上所述 . 所有Web服务器支柱的值都不同 .

因此,当我运行我的代理公式时,它匹配我的minions,我想要取回 proxy.hostname:value 中的每个值,另一个是在我的nginx代理上为所有web服务器部署好的配置文件 .

(我的default.jinja是上传网站的nginx配置文件的模板)

那么有可能通过所有支柱值的一种jinja循环来获取这些值吗?就像我上面写的一样?我不太确定我尝试使用的方法 . 对不起有误,我希望现在更清楚了 .

1 回答

  • 0

    您希望将context参数用于 file.managed ,然后您可以访问模板中的变量

    {% for proxy, args in salt['pillar.get']('proxy').items() %}
    
    /etc/nginx/sites-available/{{hostname}}:
      file.managed:
        - source: salt://proxy-ext/files/default.jinja
        - target: /etc/nginx/sites-available/{{hostname}}
        - template: jinja
        - context:
            hostname: {{ args['hostname'] }}
            dns_suffix: {{ args['dns_suffixe'] }}
        - user: root
        - group: root
        - mode: 640
    {% endfor %}
    

    之后,您可以在模板中引用主机名和dns_suffix,就好像它们是在本地定义的一样 .

相关问题