我目前正在尝试 SaltStack,它似乎有一些很酷的功能。但我错过了 Ansible 的一个模块:
在 SaltStack 中,Ansible 的模块“uri”相当于什么?
Ansible 中的示例:
- name: using webservices
uri:
url: http://.../v1/method
method: PUT
body: {{ lookup('template', 'job.j2') }}
body_format: json
status_code: 201,409
HEADER_Content-Type: "application/json"
Run Code Online (Sandbox Code Playgroud) 我得到 Rendering SLS 'base:nginx' failed: 此处不允许映射值;6号线
当我在ansible中运行这段代码时。
parent_dict = [{'nginx-1.13.2.tar.gz':'https://nginx.org/download/nginx-1.13.2.tar.gz'},{'zlib-1.2.11.tar.gz':'https://www.zlib.net/zlib-1.2.11.tar.gz'}]
{% for dict_item in parent_dict %}
{% for key, value in dict_item.items() %}
install-zlib:
cmd.run:
- name: |
cd /tmp
curl -L {{ value }} -o {{ key }}
tar xzf {{ key }}
rm -rf {{ key }}
- creates: /tmp/{{ key }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud) 我有一个这样的支柱数据集;
vlan_tag_id:
nginx: 1
apache: 2
mp: 3
redis: 4
Run Code Online (Sandbox Code Playgroud)
在公式sls文件中我这样做;
{% set tag = pillar.get('vlan_tag_id', 'u') %}
Run Code Online (Sandbox Code Playgroud)
所以现在我有一个变量tag,这是一个字典{'apache': 2, 'nginx': 1, 'redis': 4, 'mp': 3}
在运行时,我传递一个支柱数据,app其值将是
1. apache
2. nginx
3. redis
4. mp
Run Code Online (Sandbox Code Playgroud)
因此,如果在运行时我通过,apache我想要一些能让我获得价值的东西2
我不能这样做,{{ salt['pillar.get']('vlan_tag_id:app', '')}}因为app本身就是一个变量.
我尝试了{{salt'pillar.get'}},但它会抛出错误.
我怎样才能做到这一点 ?
是否可以使用状态功能处理位于minions上的saltstack来处理json文件?
我确信应该可以使用jinja的功能,但找不到任何信息.