跳到内容

schema

schema 规则根据 JSON schema 验证 Ansible 元数据文件。这些 schema 确保跨版本的 Ansible 语法内容的兼容性。

schema 规则是**强制性**的。您不能使用内联 noqa 注释来忽略它。

Ansible-lint 在处理其他规则之前验证 schema 规则。这可以防止意外的语法触发多个规则冲突。

验证的 schema

Ansible-lint 目前验证多个 schema,这些 schema 在单独的项目中维护,并独立于 ansible-lint 更新。

与 schema 相关的错误报告应在其各自的存储库中报告,而不是在 ansible-lint 项目中报告。

ansible-lint 项目中维护

  • schema[ansible-lint-config] 验证 ansible-lint 配置
  • schema[role-arg-spec] 验证 角色参数规范,它与模块参数规范略有不同。
  • schema[execution-environment] 验证 执行环境
  • schema[galaxy] 验证 集合元数据
  • schema[inventory] 验证匹配 inventory/*.yml清单文件
  • schema[meta-runtime] 验证匹配 meta/runtime.yml运行时信息
  • schema[meta] 验证匹配 meta/main.yml 的角色的元数据。有关详细信息,请参阅 角色依赖项role/metadata.py)。
  • schema[playbook] 验证 Ansible playbook。
  • schema[requirements] 验证匹配 requirements.yml 的 Ansible 需求 文件。
  • schema[tasks] 验证匹配 tasks/**/*.yml 的 Ansible 任务文件。
  • schema[vars] 验证匹配 vars/*.ymldefaults/*.yml 的 Ansible 变量

ansible-navigator 项目中维护

schema[meta]

对于 meta/main.yml 文件,Ansible-lint 需要一个 galaxy_info.standalone 属性,以明确角色是旧的独立角色还是新的基于集合的角色

galaxy_info:
  standalone: true # <-- this is a standalone role (not part of a collection)

Ansible-lint 要求使用 standalone 键以避免混淆并提供更具体的错误消息。例如,meta schema 将仅对独立角色要求某些属性,或阻止使用集合不支持的某些属性。

您不能使用空的 meta/main.yml 文件或仅在 meta/main.yml 文件中使用注释。

schema[moves]

这些错误通常看起来像 “foo 在 2.10 中被移动到 bar”,并表示 Ansible 版本之间的模块移动。