2015-01-31 22 views
6

Usando questo come il mio boilerplate: https://github.com/modcloth/ansible-role-modcloth-sumologic-collector - Funziona alla grande, ma sto cercando alcuni suggerimenti su come espandere questo per le mie esigenze. Devo essere in grado di creare un file JSON basato su più array.Ansible, come unire più array in un singolo file?

Quanto segue è l'array predefinito di cui ho bisogno nell'origine JSON SumoLogic.

ruoli/sumologic/default/main.yml:

sumologic_collector_default_log_path:

- { name: "Auth Log", path: "/var/log/auth.log", use_multiline: false, category: "OS/Linux/Auth" } 

dire che voglio aggiungere un file aggiuntivo al file SumoLogic JSON da group_vars/app_server.yml:

- { name: "Package Log", path: "/var/log/nginx/access.log", use_multiline: fasle, category: "OS/Linux/Nginx" } 

Come combinare gli esempi sopra utilizzando un modello nello stesso file di destinazione?

Felice di fornire ulteriori dettagli. Non è del tutto sicuro se il mio filo di pensiero abbia un senso, anche se penso che set_fact sia un modo per farlo e non sono stato in grado di capirlo abbastanza da capire un modo.

risposta

18

Jinja2, il motore di template di Ansible ti dà la possibilità di unire facilmente le liste:

array1 + array2 

Ecco un esempio completo playbook:

--- 

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

... 

uscita:

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 
+0

Perfetto ! Le liste di fusione Jinja2 sono state la risposta: {% per la sorgente in sumologic_collector_default_log_path | list + sumologic_collector_application_log_path | list%} – wsani

Problemi correlati