安装了 ansible 角色的特殊变量?
A special variable for ansible roles installed?
是否有变量或方法可以列出应用于一组ansible主机的所有角色?
例如:
- hosts: webservers
gather_facts: true
roles:
- nginx
- php-fpm
tasks:
- debug:
msg: {{ item }} installed
with_items: ansible_roles
或者另一种实现方式?
这取决于 applied 在您的问题中的含义。
变量role_names
保存了当前剧中的所有角色,所以它是一个数组:[nginx, php-fpm]
.
- debug:
msg: {{ item }} installed
with_items: role_names
但是这些角色不一定应用到主机,如果你的意思是它们已经被处理的话。一旦角色 运行 在主机上,就没有这样的东西会更新。
如果这正是您要寻找的,您可以使用 callback plugin 自行实现。据我所知,starting/completing 角色本身没有回调。但是由于角色名称出现在任务名称中,您可以简单地使用 playbook_on_task_start
,从任务名称中提取角色名称并以某种方式存储它。我还没有研究 Ansible 2 中 API 发生变化的回调插件,但我希望您可以访问全局变量列表并可以对其进行操作。
是否有变量或方法可以列出应用于一组ansible主机的所有角色? 例如:
- hosts: webservers
gather_facts: true
roles:
- nginx
- php-fpm
tasks:
- debug:
msg: {{ item }} installed
with_items: ansible_roles
或者另一种实现方式?
这取决于 applied 在您的问题中的含义。
变量role_names
保存了当前剧中的所有角色,所以它是一个数组:[nginx, php-fpm]
.
- debug:
msg: {{ item }} installed
with_items: role_names
但是这些角色不一定应用到主机,如果你的意思是它们已经被处理的话。一旦角色 运行 在主机上,就没有这样的东西会更新。
如果这正是您要寻找的,您可以使用 callback plugin 自行实现。据我所知,starting/completing 角色本身没有回调。但是由于角色名称出现在任务名称中,您可以简单地使用 playbook_on_task_start
,从任务名称中提取角色名称并以某种方式存储它。我还没有研究 Ansible 2 中 API 发生变化的回调插件,但我希望您可以访问全局变量列表并可以对其进行操作。