Ansible:在vars_prompt中输出变量

Cla*_*rad 7 ansible

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

我希望做这样的事情:

- hosts: production
vars_prompt:
    confirm: "This playbook is configured to act on all $hosts hosts, please confirm"
Run Code Online (Sandbox Code Playgroud)

......打印的问题vars_prompt应该是:

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

Cla*_*rad 5

这并不能完全回答这个问题,因为我试图使用当前稳定版本的Ansible显然无法实现,但我想描述一个帮助我解决我的用例的解决方法:

首先,我想hostsvars_prompt消息中输出剧本的原因是为了确保剧本永远不会在不适合的主机上运行.该剧本为VM设置了备份,虽然它的动作是幂等的,但我的部分虚拟机首先需要备份.所以我编写了剧本来自动在VM上安装备份客户端,并在中央备份服务器上配置新客户端.

我所做的是确保我只为预期的主机运行这个剧本是为了使hosts剧本本身的参数成为一个变量,如下所示:

- hosts: '{{ host }}'
Run Code Online (Sandbox Code Playgroud)

如果在命令行上没有指定主机,则现在playbook将立即失败.在命令行上指定这样一个变量的方法是这样的:

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


Bru*_*e P 2

这是不可能的,至少在 ansible 版本 1.4.4 中是这样。vars_prompt 按字面意思准确显示引号内的内容,因此任何 $、{{ }} 等都会准确显示输入的内容。

可能值得通过在https://github.com/ansible/ansible/issues上发布来提交此功能请求