2016-05-31 10 views
0

Ich suche Werte in einer INI-Datei mit Ansible-Lookup-Funktion. Hier ist das Beispiel in der Dokumentation:Ansible INI-Lookup

- debug: msg="User in integration is {{ lookup('ini', 'user section=integration file=users.ini') }}" 

Und hier ist meine Aufgabe:

- set_fact: aws_access_var = "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=/etc/boto.cfg') }}" 

Sie sehen identisch in Syntax, aber meine Aufgabe versagt:

fatal: [localhost]: FAILED! => {"failed": true, "msg": "template error while templating string: unexpected char u\"'\" at 18. String: \"{{ lookup('ini', 'AWS_ACCESS_KEY_ID section"} 

Jede Idee, was mit ihm los?

Antwort

4

Entfernen Sie den Raum um das Gleichheitszeichen herum, so wie ansible die Parameter parsen wird. Die folgenden Werke fein:

--- 
- hosts: 127.0.0.1 
    tasks: 
    - set_fact: aws_access_var="{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=boto.cfg') }}" 
    - debug: msg="var is {{ aws_access_var }} " 

Alternativ verwenden Sie nicht die alten Stil-Modul Anrufe, aber die YAML Stil Parameterübergabe verwenden. Es ist normalerweise weniger fehleranfällig. Hier ist die mehrzeilige YAML Version:

--- 
- hosts: 127.0.0.1 
    tasks: 
    - set_fact: 
     aws_access_var: "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=boto.cfg') }}" 
    - debug: 
     msg: "var is {{ aws_access_var }} " 

Oder die einzige Zeile JSON Stil ein:

--- 
- hosts: 127.0.0.1 
    tasks: 
    - set_fact: { aws_access_var: "{{ lookup('ini', 'AWS_ACCESS_KEY_ID section=Credentials file=boto.cfg') }}" } 
    - debug: { msg: "var is {{ aws_access_var }} " } 

Alle oben genannten sind im Wesentlichen gleichwertig Spielbücher und zurück die gleiche Botschaft