我有一个需要很少角色才能运行的剧本,但出于某种原因,ansible一直忽略其中一个角色而没有任何输出 .

示例剧本:

---
- hosts: mirrors
  roles:
    - timezone
    - console
    - core
    - nginx-reverse-proxy

角色 nginx-reverse-proxy 需要 nginx 角色,因此文件 roles/nginx-reverse-proxy/meta/main.yml 包含:

---
# Dependencies required for nginx-reverse-proxy role

dependencies:
  - nginx

当我像这样运行剧本时: ansible-playbook -i mirrors/hosts.yml mirrors/playbook.yml ,ansible达到 nginx-reverse-proxy 角色,然后立即开始执行 roles/nginx-reverse-proxy/tasks/main.yml 中的任务,完全忽略 nginx 中的 nginx 角色 .

我尝试了什么:

  • core 之后和 nginx-reverse-proxy 之前将 nginx 角色直接置于剧本中 - ansible忽略 nginx 角色并立即跳至 nginx-reverse-proxy .

  • roles/nginx/tasks/main.yml 进行了一些乱码,看看会发生什么,但是ansible并没有尝试解析文件 .

  • -vvvv 开关运行 ansible-playbook ,但它没有告诉我任何有用的东西 .

  • nginx 角色本身在 roles/nginx/tasks/ 目录中的文件很少 . 所有yml文件都包含在_2657489中,有条件地像这样:

---
- 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

我删除了那些文件,看看这是否有所改变,但没有运气 .

我没有使用任何额外的开关来运行剧本,它在2.0版本上运行良好 . 但是现在我在2.1.2.0并且我被困住了 .

[Edit] Including output of tree roles/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