从 OpenStack 运行 ansible 角色 ansible-hardening 时出错

从 OpenStack 运行 ansible 角色 ansible-hardening 时出错

OpenStack 的 ansible 角色“ansible-hardening”抛出了此错误:

错误!评估导入路径中的变量时出错:{{ stig_version }}stig/main.yml。

使用静态导入时,请确保其名称中使用的任何变量均在 vars/vars_files 或从命令行传入的额外变量中定义。静态导入不能使用来自事实或清单源(如组或主机变量)的变量。

它之前一直运行正常。我不能说我做了什么来破坏这个角色。我在 Ubuntu 18.10(客户端)上运行 ansible 2.6.5。该角色是今天根据 OpenStack 说明签出的最新版本https://docs.openstack.org/ansible-hardening/latest/getting-started.html#installing-the-ansible-hardening-role 我以前使用的那个版本 - 以前能用过的版本也坏了,显示了同样的错误。

答案1

该错误似乎适用于 ansible 2.6.5。它在 ansible 2.8.2 中不会发生。

{{ stig_version }}该错误似乎与文件不可用的ansible 变量有关https://github.com/openstack/ansible-hardening/blame/979805c9043793ab644dddd02091d4dce5ab267c/tasks/main.yml#L55

在 中设置了变量ansible-hardening/defaults/main.yml,但根据错误信息,运行模块 时没有包含此路径import_tasks。 Blame 数据显示,模块include_tasks被 故意替换了import_tasks

我在tasks/main.yml中测试了反转include_tasks,这修复了错误。

一个快速修复方法是在剧本部分ansible-hardening进行设置,而无需更改角色代码中的任何内容:stig_versionvars:

vars:
  stig_version: rhel7

尽管我能够修复错误并继续前进,但我仍然不明白为什么它在不到 2 个月前就停止了工作。

我在这里发布这个信息希望能对其他人有所帮助,因为 GitHub repo 没有激活“问题”选项卡——我找不到与项目相关的任何可以提交帖子的地方。

相关内容