2016-07-28 7 views
1

Ich habe versucht, vars_prompt in Ansible mit Standardwerten aus Fakten (oder sonst eine zuvor definierte Variable) zu verwenden. Das Playbook soll als Ad-hoc für die Erstbereitstellung verwendet werden.Verwenden einer Variable als Standardwert in vars_prompt in Ansible

Mein Textbuch:

--- 
- hosts: server01 
    gather_facts: True 
    vars_prompt: 
    - name: new_hostname 
     prompt: please enter the name for the target 
     default: "{{ ansible_hostname }}" 
     private: no 
    tasks: 
    - debug: msg="{{ new_hostname }}" 

Aktuelles Ergebnis:

please enter the name for the target [{{ ansible_hostname }}]: 
ERROR! 'ansible_hostname' is undefined 

Erwartete Ergebnisse (unter der Annahme ansible_hostname=server01:

please enter the name for the target [server01]: 

Ist es möglich, in ansible zu erreichen

+0

implementiert werden Ich wette, Sie haben Pech hier. Zu diesem Zeitpunkt gibt es keine Host-Variablen - Aufforderungen sind für das gesamte Spiel und Fragen, die Sie vor jeder Aufgabe (einschließlich Setup) für jeden Host gestellt wird. Kann '{{neuer_Hostname | Standard (ansible_hostname)}} 'und Übergabe von' new_hostname' mit '-e' ist eine Lösung. –

+0

"* Zu diesem Zeitpunkt gibt es keine Host-Variablen *" - Die Frage ist: Gibt es in diesem Stadium irgendwelche Variablen (es scheint, dass irgendjemand nur als String behandelt wird). Ansonsten begann ich mich zu fragen, ob ich ein dynamisches Playbook von j2 template lokal erstellen und es einschließen könnte. – techraf

+0

Schnell zu den Codehinweisen, dass dieser Teil des Playbooks nicht templated ist. –

Antwort

0

Dies kann mit der pause module:

--- 
- hosts: server01 
    gather_facts: True 
    tasks: 
    - pause: 
     prompt: please enter the name for the target [{{ ansible_hostname }}] 
     register: prompt 

    - debug: 
     msg: "{{ prompt.user_input if prompt.user_input else ansible_hostname }}" 
Verwandte Themen