为什么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

我有一个剧本,需要几个角色先运行,但出于某种原因,ansible一直忽略其中一个角色而没有任何输出

示例剧本:

---
- 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
开始执行任务,完全忽略
nginx
roles/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我刚刚用不同的剧本测试了这个角色,效果很好,那么为什么重命名它会有帮助呢?我没有说它会有帮助。我对结果很感兴趣。