2016-03-08 63 views
2

我想皮棉一个剧本,以检测在许多其他的可能性以下几条:剧本掉毛

  1. 未定义的变量
  2. 未使用的变量
  3. 看看瓦尔规定,当案件被忽视,都是相同的(冲突的瓦尔斯)

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

  1. 我不想做文本处理。 Ansible这样做是为了完成它的任务。
  2. 挂钩或回调,如果我没看错的夫妇比更高级别的,我觉得我的解决方案应该一跳。

我的目的是写一个工具,无缝,以及可选,可与ansible。如果没有,我不想修改安全代码。

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

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

回答

0
  1. 未定义的变量: 您需要执行剧本要明白,没有定义的变量。 例如,我们有: 剧本:

    • 模板:SRC = foo.j2 DEST =的/ etc/file.conf所有者=仓盘组=车轮模式= 0644

FOO。 J2: {{E}}

还你magic variables:ansible_distribution_release 有时却是无法在主机上定义没有lsb_release安装

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

  • 未使用的变量 根据环境,您可以用什么,或者你可以当禁用:

    • set_fact: vagrant_arch_ext = “x86_64的” 时:ansible_architecture == “x86_64的” 标签:
      • 流浪汉
  • 此外您还有默认变量。

  • 看看VARS定义,当区分忽略,是相同的(冲突的瓦尔 下文) 不理解
  • +0

    我们可以使用干运行为未定义的变量,但我不不明白如何适应这种情况。我打算从一些简单的事情开始,随着时间的推移,像魔术变量,运行时间和其他类似的复杂情况一样,它会更加强大。为了实现简单的解决方案,可以跳过与未使用的变量有关的疑虑。你有这个方法吗?对于相互矛盾的变量,这样的组变量的例子可以是:myvar,MYVAR; my_var,MY_VAR。希望澄清。 –

    +0

    嗨,我一直在努力我的需求一段时间了。 [这里](https://github.com/host-anshu/lint-playbook)是源代码。你可以看看并分享你的观点吗? TIA。 –

    +0

    请描述您的工具的用例?为什么像https://github.com/willthames/ansible-lint https://atom.io/packages/linter-ansible-linting这样的工具不适合你的用例?并且您可能会对此感兴趣的讨论https://groups.google.com/forum/m/#!msg/ansible-project/AlfMYo5RzIM/LJOWhxgL6G8J –