こちらの記事はAnsible lint Advent Calendar 2022 6日目の記事になります。
今回はAnsible lintのルールの適用方法について考察します。
ブラックリスト方式とホワイトリスト方式について
セキュリティーの分野においてよく使われる用語にブラックリスト方式
とホワイトリスト方式
があります。ブラックリスト方式
は脅威となる対象をリスト化します。反対にホワイトリスト方式
は安全と考えられる対象をリスト化します。
これはfirewalldの設定やAWS EC2のセキュリティーグループを思い浮かべれば分かりやすいかと思います。
Ansible lintで適用するルールを指定する基本的な考え方
Ansible lintの初期設定ではホワイトリスト方式
が採用されておりAnsible lint実行時にはすべてのルールが適用されます。「全てのルールが適用された状態から必要に応じて適用しないルールを指定する。」これがAnsible lintのルールの適用方法の基本的な考え方です。
Ansible lintで採用しないルールを指定する
Ansible lint実行時に適用しないルールを指定する方法は2つあります。skip_list
とwarn_list
です。skip_list
で指定されたルールもしくはタグは処理がスキップされます。warn_list
に指定された場合は処理は実行されますがエラーが検出された場合は警告が出力されます。
コマンドオプションで指定
# skip_list
ansible-lint <target> -x SKIP_LIST
# もしくは
ansible-lint <target> --skip-list SKIP_LIST
SKIP_LISTにルール名もしくはタグ名を指定します。
# warn_list
ansible-lint <target> -w WARN_LIST
# もしくは
ansible-lint <target> --warn-list WARN_LIST
WARN_LISTにルール名もしくはタグ名を指定します。
設定ファイルで指定
# skip_list
skip_list:
- SKIP_LIST
SKIP_LISTにルール名もしくはタグ名を指定します。
# warn_list
warn_list:
- WARN_LIST
WARN_LISTにルール名もしくはタグ名を指定します。
skip_listとwarn_listはどちらを採用すべきか
基本的にはwarn_list
を採用すべきでしょう。採用しないルールをskip_list
に指定してしまうと警告も出力されないためずっとコンテンツの改善がなされないままになります。warn_list
を採用してこのコンテンツには問題があると言う表示は出力させておくべきです。
プロファイルで指定する
Ansible lintにはプロファイルと言うルールの分類方法もありプロファイルで指定して採用するルールを指定する事も可能です。
コマンドオプションで指定
ansible-lint -p <profile> <target>
設定ファイルで指定
profile: <profile> # min, basic, moderate,safety, shared, production
プロファイルを利用すべきか
プロファイルは最近追加された機能です。将来的にプロファイルで分類されているルールが変更になる可能性が非常に高く現時点では積極的に採用する段階ではないかと思われます。