如何使用 saltstack 模板化 SLS

如何使用 saltstack 模板化 SLS

我正在尝试使用 Mongodb(分片)进行概念验证,并且我希望每次启动新集群时都运行一个命令,而不必在所有 sls 文件中添加行。我当前的初始化如下:

蒙戈副本4:27000 /usr/lib/mongo/init_addshard.js:

命令:

- run
- user: present

Replica4 这个词不是模板化的,我想知道一种能够做到这一点的方法,这样当我启动一个新集群时,我就不必触碰这个文件中的任何内容。

答案1

看看 salt pillar。但在你这样做之前,先看看下面我糟糕的 hack,全部在一个 init.sls 中:

{% for environment in 'test','production','development' %}

  /etc/nginx/sites-available/{{ environment }}:
    file:
    - managed
    - source: salt://templates/nginx.conf.template
    - template: jinja
    - defaults:
      environment: {{ environment }}

  /etc/ssl/private/{{ environment }}.key.pem:
    file:
    - managed
    - source: salt://certs/{{ environment }}.key.pem

  /etc/ssl/certs/{{ environment }}.cert.pem:
    file:
    - managed
    - source: salt://certs/{{ environment }}.cert.pem

{% endfor %}

我正在为 nginx 配置 SSL 密钥,但你只需在其中输入 Replica4,它将扩展为环境。我只需根据需要添加环境,它就会为我同步所有内容。

你的可能看起来像这样:

 {% for environment in 'Replica4','Replica5', %}
    mongo {{ environment }}:27000 /usr/lib/mongo/init_addshard.js:

    cmd:

    - run
    - user: present

  {% endfor %}

相关内容