【规则说明·基础】yaml
这篇文章是Ansible lint Advent Calendar 2022的第15篇。
本次我们将解释有关规则的YAML。
YAML的含义。
yaml是用于检查YAML文件语法的工具,它会执行yamllint来验证文件。
設定檔案的路徑
YAML文件用于配置Ansible lint和yamllint的配置文件。
yamllint的配置文件
-
- カレントディレクトリの.yamllint、.yamllint.yaml 、.yamllint.ymlのいずれかのファイル
-
- 環境変数YAMLLINT_CONFIG_FILEで定義されたパス
- ~/.config/yamllint/config
可以成为其中的任何一个选项。
应用规则的文件和应用规则的设置
如果要設置不適用於YAML的規則的文件,請在yamllint的配置文件中進行記述。例如,如果要禁用yaml[line-length],
---
yaml-files:
- '*.yaml'
- '*.yml'
- '.yamllint'
rules:
braces: enable
brackets: enable
colons: enable
commas: enable
comments:
level: warning
comments-indentation:
level: warning
document-end: disable
document-start:
level: warning
empty-lines: enable
empty-values: disable
float-values: disable
hyphens: enable
indentation: enable
key-duplicates: enable
key-ordering: disable
line-length:
level: error
ignore: |
molecule/default/create.yml # <- ファイルのパスを指定する
new-line-at-end-of-file: enable
new-lines: enable
octal-values: disable
quoted-strings: disable
trailing-spaces: enable
truthy:
level: warning
Ansible lint不能对每个规则进行验证,但可以设置不被Ansible lint验证的文件名。
如果要在YAML上启用或禁用特定规则,可以将其记录在yamllint的配置文件中。也可以将其记录在Ansible lint的配置文件中,但通过将其记录在yamllint的配置文件中,可以详细设置适用规则以及适用规则的文件。
其他
在使用CI等工具分别执行yamllint和Ansible lint时,最好将配置文件分开,以便yamllint和Ansible lint分别执行。
如果启用了yamllint的key-ordering,并将其应用于Ansible内容,则存在一种无法更改Ansible的key顺序的情况。如果更改了Ansible内容中的key顺序,则执行Ansible时可能会导致错误。因此,在应用于Ansible内容的yamllint配置文件中,需要将key-ordering禁用。
如果想在某些地方(例如.circleci/config.yml、.github/workflows/build.yml等)启用key-ordering并进行验证,可以单独准备另一个yamllint的配置文件,并在那个文件中启用key-ordering。
对于Ansible内容,采用严格的设置来运行yamllint并按照yamllint的指示修复错误,但这并不意味着该Ansible内容一定能正常工作。换句话说,对Ansible内容应用yamllint的所有规则并不明智。
用yamllint的ignore功能来控制文件?
如果想要在Ansible lint和yamllint中使用相同的配置文件,虽然不是不可能,但是写作量会增加,不太现实。
了解设置内容将变得困难。
---
yaml-files:
- '*.yaml'
- '*.yml'
- '.yamllint'
rules:
braces:
level: error
ignore: |
defaults/main.yml
meta/argument_specs.yml
meta/main.yml
molecule/default/molecule.yml
tasks/main.yml
brackets:
level: error
colons: enable
commas: enable
comments:
level: error
comments-indentation:
level: error
document-end: disable
document-start:
level: error
empty-lines: enable
empty-values: disable
float-values: disable
hyphens: enable
indentation: enable
key-duplicates:
level: error
key-ordering:
level: error
ignore: |
defaults/main.yml
meta/argument_specs.yml
meta/main.yml
molecule/default/molecule.yml
tasks/main.yml
line-length:
level: error
ignore: |
defaults/main.yml
meta/argument_specs.yml
meta/main.yml
molecule/default/molecule.yml
tasks/main.yml
new-line-at-end-of-file: enable
new-lines: enable
octal-values: disable
quoted-strings: disable
trailing-spaces: enable
truthy:
level: warning
请参考以下网站
-
- yaml — Ansible Lint Documentation
- yamllint documentation — yamllint 1.28.0 documentation