2014-01-22 16 views
5

Ist es möglich, den Wert einer vorhandenen Variablen in die Nachrichtenausgabe von vars_prompt einzubeziehen?Ansible: Ausgabe einer Variablen in vars_prompt

ich suche, so etwas zu tun:

- hosts: production 
vars_prompt: 
    confirm: "This playbook is configured to act on all $hosts hosts, please confirm" 

... wo die Frage nach vars_prompt gedruckt werden soll:

"This playbook is configured to act on all **production** hosts, please confirm"

Antwort

2

Dies ist nicht möglich, zumindest vor kurzem als mögliche Version 1.4.4. Das vars_prompt zeigt buchstäblich genau an, was in den Anführungszeichen steht, also werden alle $, {{}} usw. genau so angezeigt, wie sie eingegeben wurden.

Es könnte sein, lohnt sich ein Feature-Request für diese Übermittlung von bei https://github.com/ansible/ansible/issues Posting ist

+0

Vielen Dank dafür. Ich habe das genauso angenommen, nachdem ich eine Reihe von Ersatzmustern in der 'vars_prompt'-Nachricht versucht habe, aber ich schätze die Bestätigung. Ich werde darüber nachdenken, ein Feature-Anfrage-Problem zu lösen. –

4

Das ist nicht genau die Frage zu beantworten, wie das, was ich versuchte offenbar zu erreichen ist nicht möglich, die aktuelle stabile Version von ansible, aber ich Ich möchte eine Problemumgehung beschreiben, die mir geholfen hat, meinen Anwendungsfall zu lösen:

Zunächst wollte ich den hosts aus dem Playbook innerhalb einer vars_prompt Nachricht ausgeben, um sicherzustellen, dass das Playbook nie auf Hosts ausgeführt werden würde es war nicht dafür gedacht. Das Playbook richtet Backups für eine VM ein, und während seine Aktionen idempotent sind, benötigen nur einige meiner VMs Backups. Also schrieb ich das Playbook, um die Installation eines Backup-Clients auf einer VM zu automatisieren und den neuen Client auf einem zentralen Backup-Server zu konfigurieren.

Was ich sicher zu machen habe, dass ich immer nur dieses Textbuch für den beabsichtigten Host ausgeführt war, die hosts Parameter im Textbuch selbst eine Variable zu machen, wie folgt aus:

- hosts: '{{ host }}' 

Nun wird das Textbuch nicht sofort , wenn in der Befehlszeile kein Host angegeben ist. Die Art und Weise, eine solche Variable auf der Befehlszeile angeben, ist dies:

ansible-playbook --extra-vars="host=HOSTNAME" playbook.yml

Verwandte Themen