2014-01-22 54 views
5

是否可以在vars_prompt输出的消息中包含现有变量的值?Ansible:在vars_prompt中输出变量

我希望做这样的事情:

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

...其中由vars_prompt打印的问题应该是:

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

回答

2

这是不可能的,至少在最近作为完整版本1.4.4。 vars_prompt完全显示引号内的内容,因此任何$,{{}}等都完全按照输入显示。

这可能是值得在https://github.com/ansible/ansible/issues

+0

感谢您的。在'vars_prompt'消息中尝试了一堆替换模式后,我假设了很多,但是我很欣赏这个确认。我会考虑打开功能请求问题。 –

4

发布这并不完全回答这个问题,因为我试图实现显然是不可能的使用Ansible当前稳定版本提交此功能要求,但我想描述一个解决办法,帮助我解决我的使用情况:

首先,我想输出hosts从剧本里面vars_prompt消息是确保该剧本永远不会在主机上运行的原因它不是为了。剧本为虚拟机设置备份,虽然其操作是幂等的,但只有一些虚拟机需要备份。因此,我编写了这本手册来自动安装VM上的备份客户端,并在中央备份服务器上配置新客户端。

我做了什么,以确保我只运行这个剧本的目的主机是使在剧本本身就是一个变量hosts参数,就像这样:

- hosts: '{{ host }}' 

现在的剧本将立即失效,如果在命令行上没有指定主机。以指定在命令行上这样的可变的方式是这样的:

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