我想有条件地运行 Ansible 角色,即仅当某些二进制文件不存在时(这对我来说意味着没有某些特定的应用程序安装)。
类似于这里使用的模式。
在我的剧本中使用以下代码:
- hosts: my_host
tasks:
- name: check app existence
command: /opt/my_app/somebinary
register: myapp_exists
ignore_errors: yes
roles:
- { role: myconditional_role, when: myapp_exists|failed }
- another_role_to_be_included_either_way
这是输出:
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [my_host ]
TASK [ myconditional_role : create temporary installation directory] ***********************
fatal: [my_host]: FAILED! => {"failed": true, "msg": "ERROR! The conditional check 'myapp_exists|failed' failed. The error was: ERROR! |failed expects a dictionary"}
为什么条件检查失败?
使用ansible 2.0.0.2
_Ubuntu 16.04.01
顺便说一句:“创建临时安装目录”是条件包含角色的第一个主要任务的名称。