Ansible,如何在一个文件中加入多个数组?

wsa*_*ani 7 ansible

使用它作为我的样板:https://github.com/modcloth/ansible-role-modcloth-sumologic-collector - 它工作得很好,但我正在寻找一些关于如何根据我的预期需求扩展它的建议.我需要能够基于多个数组创建一个JSON文件.

以下是SumoLogic JSON源中我需要的默认数组.

角色/ sumologic /默认/ main.yml:

sumologic_collector_default_log_path:

- { name: "Auth Log", path: "/var/log/auth.log", use_multiline: false, category: "OS/Linux/Auth" }
Run Code Online (Sandbox Code Playgroud)

假设我想从group_vars/app_server.yml向SumoLogic JSON文件添加一个额外的文件:

- { name: "Package Log", path: "/var/log/nginx/access.log", use_multiline: fasle, category: "OS/Linux/Nginx" }
Run Code Online (Sandbox Code Playgroud)

如何使用模板将上述示例组合到同一目标文件中?

很高兴提供更多细节.不完全确定我的思路是否有意义,尽管我认为set_fact是这样做的一种方式,但我无法理解这一点,以找出方法.

udo*_*dan 26

Jinible2,Ansible的模板引擎为您提供了轻松合并列表的选项:

array1 + array2
Run Code Online (Sandbox Code Playgroud)

这是一个完整的示例剧本:

---

- name: Testing
  hosts: localhost
  gather_facts: no
  vars:
    array1:
      - a
      - b
      - c
    array2:
      - x
      - y
      - z
  tasks:
    - debug: msg="{{ array1 + array2 }}"

...
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)