3

我想检查一个剧本来检测以下几种可能性:

  1. 未定义的变量
  2. 未使用的变量
  3. 查看定义的 var 在忽略大小写时是否相同(此后有冲突的 var)

我无法弄清楚这样做的好方法是什么?我不想重新发明轮子,从某种意义上说:

  1. 我不想做文本处理。Ansible 这样做是为了完成它的任务。
  2. 如果我没记错的话,挂钩或回调比我认为我的解决方案应该加入的级别高几个级别。

我的目的是编写一个可以无缝且可选地与 ansible 配合使用的工具。如果可以,我不想修改 ansible 的代码。

任何帮助或黑客或建议表示赞赏。

PS:语法检查不会告诉我上面提到的内容。我已经查看了ansible-lint工具。它进行文本处理,不支持库存(用于 host_vars 等)并且不使用 ansible python API。所以为了做我需要的事情,我必须调用许多 ansible 的内部 API,我最终会在我的工具中编写 ansible 的代码。

4

1 回答 1

0
  1. 未定义变量:您需要执行剧本才能了解该变量未定义。例如我们有:剧本:

    • 模板:src=foo.j2 dest=/etc/file.conf owner=bin group=wheel mode=0644

foo.j2: {{e}}

你也有神奇的变量: ansible_distribution_release 有时它没有在没有安装 lsb_release 的主机上定义

你也可以在运行时设置变量 -e 如果你想在未设置的变量上死掉你也可以通过库存设置变量!

  1. 未使用的变量取决于环境,您可以不使用任何内容,也可以在禁用时使用:

    • set_fact: vagrant_arch_ext="x86_64" when: ansible_architecture == "x86_64" 标签:
      • 流浪汉

你也有默认变量。

  1. 查看定义的 vars 是否在忽略大小写时相同(以后有冲突的 vars) 不明白
于 2016-03-09T08:35:34.143 回答