Playbook linting

时间:2016-03-08 09:11:51

标签: ansible-playbook ansible-2.x

我想在一本剧本中找到以下几种可能性中的一小部分:

  1. 未定义的变量
  2. 未使用的变量
  3. 查看定义的vars,如果大小写被忽略,则相同(以下有冲突的vars)
  4. 我无法弄清楚这样做的好方法是什么?我不想重新发明轮子,因为:

    1. 我不想做文字处理。 Ansible这样做是为了完成它的任务。
    2. 如果我没有错,那么钩子或回调比我认为我的解决方案应该进入的位置高几个级别。
    3. 我的目的是编写一个无缝地,可选地与ansible一起工作的工具。如果我能不这样做,我不想修改ansible的代码。

      感谢任何帮助或黑客或建议。

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

1 个答案:

答案 0 :(得分:0)

  1. 未定义的变量: 您需要执行playbook才能理解变量未定义。 例如,我们有: 剧本:

    • template:src = foo.j2 dest = / etc / file.conf owner = bin group = wheel mode = 0644
  2. foo.j2: {{E}}

    你也有magic variables:ansible_distribution_release 有时它没有在没有安装lsb_release的主机上定义

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

    1. 未使用的变量 根据环境的不同,您可以在禁用时使用任何内容:

      • set_fact: vagrant_arch_ext =" x86_64的" when:ansible_architecture ==" x86_64" 标签:
        • 流浪
    2. 你也有默认变量。

      1. 查看在大小写忽略时定义的变量是否相同(冲突的变量 此后) 不明白