auf extra vars
Parametern Basierend I Need ansible playbook
Wie dynamische Variable in ansible Textbuch schreiben
ansible-playbook playbook.yml -e "param1=value1 param2=value2 param3=value3"
Wenn nur param1 bestand in Variablenwert schreiben
myvariable: 'param1'
Wenn nur param1, param2 bestanden
myvariable: 'param1,param2'
Wenn param1, param2, param3 weitergegeben werden dann Variablenwert
myvariable: 'param1,param2,param3'
sein wird, wenn ich versuche, Variable zu erstellen dynamisch durch Vorlage dann nimmt mein Textbuch immer vorherigen Variablenwert. Aber innerhalb dest=roles/myrole/vars/main.yml
sein richtiger Schreibwert.
Was ich mache einen Versuch hier
- hosts: local
user: roop
gather_facts: yes
connection: local
tasks:
- template: src=roles/myrole/templates/myvar.j2 dest=roles/myrole/vars/main.yml
- debug: var=myvariable
roles:
- { role: myrole }
So innen myrole Verzeichnis Ich habe erstellt template
und vars
- roles
- myrole
- vars/main.yml
- templates/myvar.j2
templates/myvar.j2
{% if param1 is defined and param2 is defined and param3 is defined %}
myvariable: 'param1,param2,param3'
{% elif param1 is defined and param2 is defined %}
myvariable: 'param1,param2'
{% elif param1 is defined %}
myvariable: 'param1'
{% else %}
myvariable: 'default-param'
{% endif %}
Wie ich weiß, wenn nur zwei Zustand dann kann ich dies mit inline expression
wie tun unter
{{ 'param1,param2' if param1 is defined and param2 is defined else 'default-param' }}
<do something> if <something is true> else <do something else>
Ist es möglich, if - elif - else
in inline expression
wie oben. Oder eine andere Möglichkeit, den Wert dynamisch in einem Buch anzulegen?
Nizza my_var. Es funktioniert. – Roopendra
@Roopendra 16 Zeilen Code eine Liste der 3 Werte verketten weit davon entfernt ist schön. – ceving
Vereinbarte @ceving aber manchmal konzentrieren wir uns auf Lösung und dann später Optimierung. Zu dieser Zeit war dies die einzige Lösung. Ich freue mich, wenn Sie die optimierte Antwort teilen. Vielleicht hilft es auch anderen Leuten. – Roopendra