有关Ansible lint的配置文件

这篇文章是 Ansible lint Advent Calendar 2022 第5天的内容。

使用Ansible lint可以通过配置文件来更改其行为。举个例子,您可以跳过应用规则或设置不进行检查的文件,或者引入自定义规则等等。

将配置文件放置在项目目录下的 `.ansible-lint` 或 `.config/ansible-lint.yml` 中。

星系角色目录结构的示例

.
├── .ansible-lint
├── .cache/
├── .github/
├── .yamllint
├── README.md
├── defaults
│   └── main.yml
├── meta
│   └── main.yml
└── tasks
    └── main.yml

以下是可以设置的项目。

启用列表

在Ansible lint中,被归类为”opt-in”标签的规则在初始设置中不会被执行。将其添加到enable_list中即可使其执行。

enable_list:
  - empty-string-compare # opt-in
  - no-log-password # opt-in
  - no-same-owner # opt-in
  - name[prefix] # opt-in

排除路径

設定不應用Ansible lint的文件。文件以相對於.ansible-lint的路徑描述。

exclude_paths:
  - .cache/
  - .github/
  - test/fixtures/formatting-before/
  - test/fixtures/formatting-prettier/

额外变量

在进行语法检查时,如果需要设置变量,可以在Ansible lint配置文件中进行变量设置。

extra_vars:
  foo: bar
  multiline_string_variable: |
    line1
    line2
  complex_variable: ":{;\t$()"

种类

在检查的文件中进行附加内容。Ansible lint会自动搜寻内容文件,但并不一定能找到所有的内容。通过将想要作为内容处理的文件路径写入kinds中,可以确保Ansible lint能找到内容。

  - playbook: "**/examples/*.{yml,yaml}"
  - galaxy: "**/folder/galaxy.yml"
  - tasks: "**/tasks/*.yml"
  - vars: "**/vars/*.yml"
  - meta: "**/meta/main.yml"
  - yaml: "**/*.yaml-too"

循环变量前缀

在使用循环遍历变量时,强制添加前缀。例如,如果将loop_var_prefix设置为hoge_,则loop_var必须以hoge_开头,否则会引发错误。

在处理循环变量时,作为Ansible的最佳实践,应该给loop_var添加前缀。

command: echo {{ zj_number }}
loop:
  - one
  - two
  - three
loop_control:
  loop_var: hoge_number

模拟模块·模拟角色

明确地描述模拟。Ansible lint也适用于指定的角色和模块。

mock_modules:
  - zuul_return
  # note the foo.bar is invalid as being neither a module or a collection
  - fake_namespace.fake_collection.fake_module
  - fake_namespace.fake_collection.fake_module.fake_submodule
mock_roles:
  - mocked_role
  - author.role_name # old standalone galaxy role
  - fake_namespace.fake_collection.fake_role

下线

在没有互联网连接的环境下,我们可以通过控制requirements.yml文件中角色的安装行为来达到目的。默认情况下,这个选项是关闭的,因为在在线模式下,Ansible lint执行时会自动安装requirements.yml文件中的角色。

offline: false

个人资料

设置 Ansible lint 的配置文件。初始值为 null,但实际上已设置为 production。

profile: null # min, basic, moderate,safety, shared, production

逐步增长/进步 /

这个功能的前提是使用Git进行开发。如果与上次提交时的内容相比,即使只有一个规则违反少了,也会返回成功的结果。初始值是这个功能是无效的。

progressive: false

跳表

设置不适用的规则或标签。指定在此处的规则或标签将不会执行。

skip_list:
  - var-naming

使用默认规则和规则目录

在初始设置中,仅使用Ansible lint所提供的规则进行配置。

use_default_rules: true

如果使用独有的规则,则需要在rulesdir中指定规则文件所在的目录。

rulesdir:
  - ./rule/directory/

变量命名模式

指定变量名的模式。此模式可以使用正则表达式。

Ansible lint对变量名的限制是可以使用数字、小写英文字母和下划线,并且首字母必须是小写英文字母或下划线。这是根据var_naming_pattern的定义而来。

要禁用该设置,您需要将var-naming添加到配置文件的skip_list项目中。

var_naming_pattern: "^[a-z_][a-z0-9_]*$"

警告列表

只要在warn_list中設定了規則和標籤,檢查將被執行,即使結果出現錯誤,也會變成警告。

warn_list:
  - skip_this_tag
  - yaml[document-start]  # you can also use sub-rule matches

写出列表

ansible-lint –write命令的行为可以进行控制。默认设置为all。当设置为write_list: [“none”]时,ansible-lint –write命令将被禁用。

write_list:
  - all

参考网站

    Configuration — Ansible Lint Documentation
bannerAds