跳到内容

var-naming

此规则检查变量名称,以确保它们符合要求。

变量名称必须仅包含小写字母数字字符和下划线 _ 字符。变量名称还必须以字母或下划线 _ 字符开头。

有关更多信息,请参阅 Ansible 文档中的创建有效的变量名称主题和命名事物(Ansible 的良好实践)

您还应该充分了解特殊变量,也称为魔法变量,尤其是因为它们中的大多数只能读取。 虽然 Ansible 只会忽略任何设置它们的尝试,但 linter 会通知用户,这样他们就不会对实际上没有任何作用的行感到困惑。

可能的错误消息

  • var-naming[non-string]:变量名称必须是字符串。
  • var-naming[non-ascii]:变量名称必须是 ASCII。
  • var-naming[no-keyword]:变量名称不能是 Python 关键字。
  • var-naming[no-jinja]:变量名称不得包含 jinja2 模板。
  • var-naming[pattern]:变量名称应与 ... 正则表达式匹配。
  • var-naming[no-role-prefix]:角色内的变量名称应使用 role_name_ 作为前缀。前缀之前接受下划线。
  • var-naming[no-reserved]:变量名称不得是 Ansible 保留名称。
  • var-naming[read-only]:此特殊变量是只读的。

注意

当使用带有 varsinclude_roleimport_role 时,vars 应以包含的角色名称前缀开头。由于此角色可能尚未符合此规则,您可能需要使用 # noqa: var-naming[no-role-prefix] 注释暂时禁用此规则。

设置

可以通过更改以下设置来更改此规则的行为

# .ansible-lint
var_naming_pattern: "^[a-z_][a-z0-9_]*$"

有问题的代码

---
- name: Example playbook
  hosts: localhost
  vars:
    CamelCase: true # <- Contains a mix of lowercase and uppercase characters.
    ALL_CAPS: bar # <- Contains only uppercase characters.
    v@r!able: baz # <- Contains special characters.
    hosts: [] # <- hosts is an Ansible reserved name
    role_name: boo # <-- invalid as being Ansible special magic variable

正确的代码

---
- name: Example playbook
  hosts: localhost
  vars:
    lowercase: true # <- Contains only lowercase characters.
    no_caps: bar # <- Does not contains uppercase characters.
    variable: baz # <- Does not contain special characters.
    my_hosts: [] # <- Does not use a reserved names.
    my_role_name: boo