为什么ansible默默地忽略了一个角色?
我有一个剧本,需要几个角色先运行,但出于某种原因,ansible一直忽略其中一个角色而没有任何输出 示例剧本:为什么ansible默默地忽略了一个角色?,ansible,ansible-playbook,ansible-2.x,Ansible,Ansible Playbook,Ansible 2.x,我有一个剧本,需要几个角色先运行,但出于某种原因,ansible一直忽略其中一个角色而没有任何输出 示例剧本: --- - hosts: mirrors roles: - timezone - console - core - nginx-reverse-proxy 角色nginx反向代理需要nginx角色,因此文件roles/nginx反向代理/meta/main.yml包含: --- # Dependencies required for nginx-r
---
- hosts: mirrors
roles:
- timezone
- console
- core
- nginx-reverse-proxy
角色nginx反向代理
需要nginx
角色,因此文件roles/nginx反向代理/meta/main.yml
包含:
---
# Dependencies required for nginx-reverse-proxy role
dependencies:
- nginx
当我像这样运行playbook时:ansible playbook-I mirrors/hosts.yml mirrors/playbook.yml
,ansible到达nginx反向代理
角色,然后立即从roles/nginx反向代理/tasks/main.yml
开始执行任务,完全忽略nginxroles/nginx反向代理/meta/main.yml
中的role
我尝试的是:
将nginx
角色直接放在core
之后和nginx反向代理
之前的剧本中-ansible忽略nginx
角色,并立即跳到nginx反向代理
在角色/nginx/tasks/main.yml
上放一些乱七八糟的东西,看看会发生什么,但ansible甚至没有尝试执行它。没有错误,它甚至没有尝试解析文件
使用-vvvv
开关运行ansible playbook
,但它没有告诉我任何有用的信息
nginx
角色本身在roles/nginx/tasks/
目录中几乎没有文件。所有文件都是包含在角色/nginx/tasks/main.yml
中的yml文件,条件如下:
---
- include: install_nginx_core.yml
when: not nginx_extras
- include: install_nginx_extras.yml
when: nginx_extras
- include: setup_ssl.yml
- include: setup_fastcgi.yml
# This will also install php5-fpm
when: setup_fastcgi
我删除了这些文件,看看这是否会改变什么,但运气不好
我没有使用任何额外的开关来运行playbook,它在2.0版前后运行良好。但是现在我在2.1.2.0上,我被卡住了
[编辑]包括树角色/nginx的输出:
roles/nginx
|-- defaults
| `-- main.yml
|-- meta
| `-- main.yml
|-- tasks
| |-- install_nginx_core.yml
| |-- install_nginx_extras.yml
| |-- main.yml
| |-- setup_fastcgi.yml
| `-- setup_ssl.yml
`-- templates
|-- fastcgi.j2
`-- ssl.conf
您已经尝试在剧本中直接指定了nginx
,但没有看到它做任何事情,这让我非常怀疑问题不是依赖项定义。您确定正在运行的文件与正在修改的文件相同吗?您可以发布树角色/nginx
的输出吗?将nginx
角色重命名为nginxabc
(在角色
目录和剧本中),重复第1点。和2。@XiongChiamiov我已经包含了树输出。奇怪的是,如果在dependencies
ansible中拼写错误nginx
,ansible会注意到这一点,并抱怨找不到角色。因此,它清楚地正确地验证了角色的存在,但完全忽略了它的剧本。@techraf我刚刚用不同的剧本测试了这个角色,效果很好,那么为什么重命名它会有帮助呢?我没有说它会有帮助。我对结果很感兴趣。