升级到ansible 2.8后,include_tasks无法使用

时间:2019-06-12 09:26:53

标签: ansible ansible-issue

我已经开始获得

  

错误! 'become_user'不是TaskInclude的有效属性

在使用适用于ansible 2.8的剧本时使用

它在ansible 2.7及更早版本中可以正常工作。

错误消息表明问题出在该文件的'become_user'行:

- name: Install API software
  become: true
  become_user: "{{ namespace }}"
  include_tasks: utils/install_service.yml
  vars:
    service_name: api
    nodejs_service: true

我没有在任何文档或变更日志中找到与此明显相关的任何内容。

2 个答案:

答案 0 :(得分:1)

在一些旧的issue中找到了解决方案。

似乎将'become'与'include_tasks'一起使用是一个未记录的功能,被意外删除了。

可以通过将include_tasks打包到一个块中来解决:

- block:
    - name: Install API software
      include_tasks: utils/install_service.yml
      vars:
        service_name: api
        nodejs_service: true

  become: true
  become_user: "{{ namespace }}"

答案 1 :(得分:1)

您应该能够简单地将它们添加到您传入的变量列表中(带有ansible_前缀)。这样就可以了:

- name: Install API software
  include_tasks: utils/install_service.yml
  vars:
    service_name: api
    nodejs_service: true
    ansible_become: true
    ansible_become_user: "{{ namespace }}"

有关参考,请参见the upstream issue comment