Ansible 2.7 include_tasks 不再接受变量

Gra*_*lls 8 ansible

我的剧本中的每个角色都以以下代码结尾:

- include_tasks: includes/log_role_completion.yml this_role={{ role_name }}
Run Code Online (Sandbox Code Playgroud)

它用于(在剧本的末尾)在目标服务器上写入日志,指示 PB 何时启动(在 PB 的开头有一个任务),运行了什么角色,以及何时(开始和结束时间相同,但那是另一天)。

问题是,在 Ansible 2.7 中,我现在收到由上面一行引起的错误:

- include_tasks: includes/log_role_completion.yml this_role="{{ role_name }}"
  ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:
Run Code Online (Sandbox Code Playgroud)

这一直工作到 2.7,并且很有用 - 我不想失去它。我试过在该行的“includes...}}”部分加上引号,但无济于事。

PS 我知道 Ansible 可以写日志 - 我觉得这更有用。另外,我知道 include_tasks 被标记为“预览”,因此可能会更改,但我找不到发行说明来告诉我它是否有。

ken*_*kas 9

Ansible 2.7 中的用法已更改。

OLD 在 Ansible 2.6(及更早版本)中,以下是用于指定变量的有效语法:

- include_tasks: include_me.yml variable=value    #the old way
Run Code Online (Sandbox Code Playgroud)

新在 Ansible 2.7 中,任务应该更改为使用 vars 关键字:

- include_tasks: include_me.yml
  vars:
    variable: value
Run Code Online (Sandbox Code Playgroud)

查看移植指南了解更多详情