是否安装了ansible角色的特殊变量?

时间:2016-02-25 05:05:43

标签: ansible ansible-2.x

是否有变量或方法允许列出应用于一组ansible主机的所有角色? 例如:

- hosts: webservers
  gather_facts: true
  roles:
    - nginx
    - php-fpm
  tasks:
    - debug:
      msg: {{ item }} installed
      with_items: ansible_roles

或者或许是另一种方法来实现这个目标?

1 个答案:

答案 0 :(得分:2)

这取决于应用在您的问题中的含义。

变量role_names包含当前播放的所有角色,因此它将是一个数组:[nginx, php-fpm]

- debug:
    msg: {{ item }} installed
  with_items: role_names

但是这些角色不一定是应用到主机,如果你的意思是它们已被处理。一旦角色在主机上运行,​​就没有更新的东西。

如果这是您正在寻找的内容,您可以使用callback plugin自行实施。 AFAIK没有开始/完成角色本身的回调。但由于角色的名称存在于任务名称中,您只需使用playbook_on_task_start,从任务名称中提取角色名称并以某种方式存储它。我还没有在Ansible 2中查看API更改的回调插件,但我希望您可以访问全局变量列表并可以对其进行操作。