Ansible,如何在一个文件中连接多个数组?
Ansible, how to join multiple arrays in a single file?
将其用作我的样板文件:https://github.com/modcloth/ansible-role-modcloth-sumologic-collector - 效果很好,但我正在寻找一些关于如何根据我的预期需求扩展它的建议。我需要能够基于多个数组创建 JSON 文件。
以下是我在 SumoLogic JSON 源中需要的默认数组。
roles/sumologic/defaults/main.yml:
sumologic_collector_default_log_path:
- { name: "Auth Log", path: "/var/log/auth.log", use_multiline: false, category: "OS/Linux/Auth" }
假设我想从 group_vars/app_server.yml 添加一个附加文件到 SumoLogic JSON 文件:
- { name: "Package Log", path: "/var/log/nginx/access.log", use_multiline: fasle, category: "OS/Linux/Nginx" }
如何使用模板将上述示例组合到同一个目标文件中?
很高兴提供更多详细信息。不完全确定我的思路是否合理,尽管我认为 set_fact 是这样做的一种方式,但我还没有足够的理解来找出一种方法。
Ansible 使用的模板引擎 Jinja2 为您提供了轻松合并列表的选项:
array1 + array2
这是一个完整的示例剧本:
---
- name: Testing
hosts: localhost
gather_facts: no
vars:
array1:
- a
- b
- c
array2:
- x
- y
- z
tasks:
- debug:
msg: "{{ array1 + array2 }}"
...
输出:
PLAY [Testing] ****************************************************************
TASK: [debug msg="{{ array1 + array2 }}"] *************************************
ok: [localhost] => {
"msg": "['a', 'b', 'c', 'x', 'y', 'z']"
}
PLAY RECAP ********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0
将其用作我的样板文件:https://github.com/modcloth/ansible-role-modcloth-sumologic-collector - 效果很好,但我正在寻找一些关于如何根据我的预期需求扩展它的建议。我需要能够基于多个数组创建 JSON 文件。
以下是我在 SumoLogic JSON 源中需要的默认数组。
roles/sumologic/defaults/main.yml:
sumologic_collector_default_log_path:
- { name: "Auth Log", path: "/var/log/auth.log", use_multiline: false, category: "OS/Linux/Auth" }
假设我想从 group_vars/app_server.yml 添加一个附加文件到 SumoLogic JSON 文件:
- { name: "Package Log", path: "/var/log/nginx/access.log", use_multiline: fasle, category: "OS/Linux/Nginx" }
如何使用模板将上述示例组合到同一个目标文件中?
很高兴提供更多详细信息。不完全确定我的思路是否合理,尽管我认为 set_fact 是这样做的一种方式,但我还没有足够的理解来找出一种方法。
Ansible 使用的模板引擎 Jinja2 为您提供了轻松合并列表的选项:
array1 + array2
这是一个完整的示例剧本:
---
- name: Testing
hosts: localhost
gather_facts: no
vars:
array1:
- a
- b
- c
array2:
- x
- y
- z
tasks:
- debug:
msg: "{{ array1 + array2 }}"
...
输出:
PLAY [Testing] ****************************************************************
TASK: [debug msg="{{ array1 + array2 }}"] *************************************
ok: [localhost] => {
"msg": "['a', 'b', 'c', 'x', 'y', 'z']"
}
PLAY RECAP ********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0