2017-07-24 3 views
0

Ich übergebe eine Variable ACTION an site.yml wie unten.Übergabe der Variable als Tags an ansible Rollen funktioniert nicht

ansible-playbook -v -i sslhost.txt -e "APP_NAME=ssl-perf ACTION=renewal, gen_cert" site.yml 

Mein site.yml hat ansible Rolle "Manager" genannt, auf die ich bin als Tags ACTION Variable übergeben. Siehe unten.

more site.yml 
- hosts: "{{APP_NAME}}" 
    user: "{{USER}}" 
    roles: 
    - { role: manager, APPLICATION_NAME: "{{ APP_NAME }}", tags: [ '{{ ACTION }}' ] } 

Zu den Aufgaben der Manager-Rolle/sieht main.yml wie diese

more manager/tasks/main.yml 
--- 
# tasks file for manager 

- include: manager_pull.yml 
    tags: renewal 
- include: manager_gen.yml 
    tags: gen_request 
- include: manager_gencert.yml 
    tags: gen_cert 
- include: manager_push.yml 
    tags: install 

ich erwartet hatte nur manager_pull.yml und manager_gencert.yml in den Rollen enthalten sein, aber die Ausgabe zeigt, dass alle umfassen in der Managerrolle wird eingeschlossen/aufgerufen.

Meine ansible Version ist: 2.1.0.0

Können Sie mir bitte erklären, warum bin ich nicht in der Lage ACTION Variable übergeben als Tags Rolle ansible?

Alternativ kann mir jemand auch sagen, ob und wie wäre es möglich, Tags anstelle von ACTION Variable an die site.yml zu übergeben und diese zur Arbeit zu bringen?

Antwort

0

Sie können Tags nicht als Parameter an Rollen in Ihrem Playbook übergeben. Was Sie hier effektiv tun, ist das Hinzufügen eines weiteren Tags zu Ihrer Manager-Rolle (renewal, gen_cert).

Anstatt Ihre Tags mit Variablen zu definieren, verwenden Sie das Flag --tags.

ansible-playbook -v -i sslhost.txt -e "APP_NAME=ssl-perf" --tags=renewal,gen_cert site.yml

+0

versuchte ich Ihren Befehl, aber es ist immer noch alle YMLs im Manager/Aufgaben/main.yml anstelle der nur die beiden darunter. Was muss ich noch ändern, um das zu erreichen? Wie kann ich -tags = Erneuerung, genecert an die mögliche Rolle übergeben, die manager/task/main.yml genannt wird? – shifahim

+1

Fügen Sie der Managerrolle in Ihrem Playbook immer noch Tags mit der Variablen "ACTION" hinzu? Sind an die Aufgaben in manager_pull.yml, manager_gen.yml, manager_gencentren.yml oder manager_push.yml irgendwelche Tags angehängt? – kfreezy

+0

Sie haben Recht. Zusammen mit dem vorgeschlagenen Befehl musste ich tag [] aus site.yml entfernen, damit es funktioniert. So sieht die Rolle innerhalb der site.yml aus, nachdem das Problem gelöst wurde - {role: manager, APPLICATION_NAME: "{{APP_NAME}}"} – shifahim

Verwandte Themen