こちらの記事はAnsible lint Advent Calendar 2022 4日目の記事になります。
Anible lintのルールの分類は2種類あります。タグ
とプロファイル
です。今回はprofileについて説明します。
プロファイルとは
Ansible lintのプロファイルはAnsible playbook、role、collectionなどのコンテンツ(以下Ansibleコンテンツ)を段階的に向上させることを可能にします。
開発の初期の段階ではあまり厳密な記述をせず、自由に書く方が良いかもしれません。次の段階でAnsibleコンテンツや開発メンバーが増えたら少し厳しいルールを適用してコンテンツの書き方に一貫性を持たせるのも良いかもしれません。またAnsibleコンテンツをGalaxy等へ公開する場合、厳密なルールを適用した方が良いかもしれません。
プロファイルを利用する事でそれぞれの状況に合わせたルールの適用がしやすくなります。
プロファイルの種類
プロファイルの種類はansible-lint --list-profiles
で確認できます。以下の6種類があります。
- min
- basic
- moderate
- safety
- shared
- production
min
一応プロファイルの中に分類されていますがAnsibleがAnsibleコンテンツをロードできるかどうか最低限の検査を行います。どちらかと言えばシンタックスチェックに近い扱いです。
basic
基本プロファイルです。Ansible lint的に標準的に守るべきルールと言う位置付けらしいです。
- command-instead-of-module
- command-instead-of-shell
- deprecated-bare-vars
- deprecated-command-syntax
- deprecated-local-action
- deprecated-module
- inline-env-var
- key-order
- literal-compare
- jinja
- no-jinja-when
- no-tabs
- partial-become
- playbook-extension
- role-name
- schema
- name
- var-naming
- yaml
moderate
Ansibleコンテンツが読みやすくメンテナンスしやすいように記述されている事を保証するプロファイルです。
safety
このプロファイルは実行時に副作用を伴う記述方法やセキュリティー上懸念がある記述があるかをできる限り検査します。プログラミングの観点から言えばコンテンツがsafetyプロファイルの基準を満たしていても利用上100%安全なコンテンツであると言う保証はありません。
shared
AnsibleコンテンツをGalaxyやGitHub等に公開するためのプロファイルです。自分以外のユーザーがコンテンツを利用する場合に満たすべきプロファイルと言う扱いみたいです。
- galaxy
- ignore-errors
- layout
- meta-incorrect
- meta-no-info
- meta-no-tags
- meta-video-links
- meta-version
- meta-unsupported-ansible
- no-changed-when
- no-changelog
- no-handler
- no-relative-paths
- max-block-depth
- max-tasks
- unsafe-loop
production
AnsibleコンテンツがAnsible Automation Platform(AAP)
に採用される基準を満たすことを保証するプロファイルです。Ansible lintの初期プロファイルです。特に指定しない限りプロファイルには常にproducitonが採用されます。