有关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