标签: salt-stack

saltstack:并行运行/等待其他作业

我有多个盐状态和命令,在其他作业当前可以运行时执行。

然后我收到新作业的错误,例如:

函数“state.apply”以 PID 3869 运行,并于 2017 年 3 月 23 日 10:19:32.691177 启动,jid 20170323101932691177

有没有办法等待其他作业先完成或并行运行作业?

salt-stack

4
推荐指数
1
解决办法
3477
查看次数

如何在状态 sls 文件中注释 jinja 代码(# 不起作用)

我在状态文件中注释掉 jinja 代码时遇到问题,我在 sls 文件中有一个 for 循环

{% for user_name in salt['pillar.get']('userlist') %}

get_user:
    - Some code here
    ....

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我用 注释掉它#,但是当我在小兵中执行状态时,循环仍在运行。

# {% for user_name in salt['pillar.get']('userlist') %}

get_user:
    - Some code here
    ....

# {% endfor %}
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

salt-stack

4
推荐指数
1
解决办法
7482
查看次数

使用 Jinja 按嵌套字典值进行过滤

我的 SaltStack Pillar 中有以下 YAML:

prometheus:
  services:
    cassandra:
      enabled: False
    cockroachdb:
      enabled: True
    haproxy:
      enabled: True
    swift:
      enabled: False
Run Code Online (Sandbox Code Playgroud)

我希望能够循环访问已启用的服务列表。

{% for enabled_service_name in prometheus.services | selectattr('enabled') %}
{{ enabled_service_name }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为我尝试过滤的属性位于服务名称下方的嵌套字典中:

prometheus:
  services:
    cassandra:
      enabled: False
    cockroachdb:
      enabled: True
    haproxy:
      enabled: True
    swift:
      enabled: False
Run Code Online (Sandbox Code Playgroud)

我显然可以通过在循环内应用条件测试来实现我想要的:

{% for name, properties in prometheus.services | dictsort %}
{% if properties.enabled %}
configuration for {{ name }}
{% endif %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

然而,我会经常循环这个列表,并且更喜欢让 Jinja 在 for 循环中内嵌应用过滤器。

有没有办法按嵌套字典中项目的值进行过滤?

python jinja2 salt-stack

4
推荐指数
1
解决办法
2843
查看次数

如何在Salt State文件中使用与谷物匹配的机器的IP地址

我正在创建一个添加iptables规则的公式/状态文件:

ipt_allow:
  iptables.append:
    - table: filter
    - chain: INPUT
    - jump: ACCEPT
    - match: state
    - connstate: 'NEW,ESTABLISHED'
    - dport: 6666
    - proto: tcp
    - source: 'ip1, ip2, ip3, ...'
Run Code Online (Sandbox Code Playgroud)

我不想硬编码IP地址source.ip1,, ip2ip3是与谷物相匹配的爪牙的IP地址role:role1.这样一来,如果我role1在路上添加更多的碎片,那么一旦我重新运行这个状态文件,它们就会被添加到iptables规则中.我该怎么做呢?

jinja2 salt-stack

3
推荐指数
1
解决办法
3792
查看次数

emacs的Saltstack模式

如何让Emacs使用Salt文件?是否有一些代码可用,或者我如何自己创建模式?

有一个Sublime Text插件可以做类似的事情.

谢谢

python emacs salt-stack

3
推荐指数
1
解决办法
857
查看次数

Salt-Stack需要声明

我开始玩Salt了.我找不到任何关于如何使状态依赖于多个其他状态的信息.

state_a:
  module.run:
    - name: my.module
    - m_name: name_a

state_b:
  module.run:
    - name: my.module
    - m_name: name_b

state_c:
  module.run:
    - name: my.module
    - m_name: name_c

    - require:
      - module: ...
Run Code Online (Sandbox Code Playgroud)

怎样才能让state_crequire双方state_astate_b

额外问题:Key: Single Value在Salt中使用结构定义依赖关系背后的理由是什么?

salt-stack

3
推荐指数
1
解决办法
477
查看次数

如何将柱变量的内容添加到带盐的文件中?

在salt状态文件中,如何将柱的内容添加到远程salt-minion上的文件中?

例如,如果我有支柱数据,如:

ssl:
    some-domain.com:
        key:
            -----BEGIN RSA PRIVATE KEY-----
            MIICX... snip ...
Run Code Online (Sandbox Code Playgroud)

在远程salt-minion上,我希望有一个类似的文件,/etc/nginx/ssl/som-domain.com.key其中包含该私钥的内容,我该怎么做?我也愿意接受这样一个答案:"你做错了,假的." 只要你给我一些见解并指出我正确的方向,它将会有很大的帮助.

我知道盐的file.managed,和file.*来自某些测试的朋友,但我不确定是否有一种最佳/首选的方法可以将任意支柱数据添加到远程文件中,就像我正在尝试的那样.

我还在学习/用盐攻击,所以我还在使用Yaml + Jinja进行模板化,如果你在制定一个合适的答案时很重要.

谢谢!

编辑: 顺便说一下,目前的hacky解决方案是:

在我的file_root/srv/salt /中创建一个文件,就像/srv/salt/ssl/some-domain.com.key包含类似的文件一样{{ salt[pillar.get]('ssl:some-domain.com:key') }}

但这看起来真是太烂了.在这里寻找更好的解决方案.

python salt-stack

3
推荐指数
1
解决办法
1230
查看次数

Salt和Python的YAML语法

这有什么不同:

dic1: 
  - subdict1.1: value11.1
  - subdict1.2: value1.2
  - cubdict1.3: value1.3
Run Code Online (Sandbox Code Playgroud)

还有这个:

dict2:
  subdict2.1: value2.2
  subdict2.1: value2.2
  subdict2.3: value2.3
Run Code Online (Sandbox Code Playgroud)

我知道第一个评估字典列表.但第二个是什么?还不是字典列表?

python yaml salt-stack

3
推荐指数
1
解决办法
473
查看次数

使用salt-stack中的include传递变量

我有几个几乎相同的状态.他们都部署项目,创建virtualenv并配置主管.差异仅在于回购,项目名称和一些其他操作.

很多代码都是重复的.是否可以将相同的部件放入文件中并将其包含在其他变量中?

在Ansible中,可以这样做:

tasks:
  - include: wordpress.yml
    vars:
        wp_user: timmy
        ssh_keys:
          - keys/one.txt
          - keys/two.txt
Run Code Online (Sandbox Code Playgroud)

salt-stack

3
推荐指数
1
解决办法
2607
查看次数

在jinja中,"json"和"tojson"过滤器之间有什么区别吗?

根据saltstack文档,它是"json":https://docs.saltstack.com/en/latest/ref/renderers/all/salt.renderers.jinja.html

但是在jinja doc http://jinja.pocoo.org/docs/2.9/templates/#builtin-filters中 - 没有"json",而是"tojson".

有人知道为什么吗?

json jinja2 salt-stack

3
推荐指数
1
解决办法
6134
查看次数

标签 统计

salt-stack ×10

python ×4

jinja2 ×3

emacs ×1

json ×1

yaml ×1