🎃

Ansibleのlintに片っ端から対応していく

2023/09/28に公開

この文書は何か

OSの変更に伴い、古かったAnsibleのバージョンを上げる。
使用していたAnsibleコードが6年前くらいからメンテナンスされていなかったので、作り替える。

これまでのバージョンとこれから

ansible 2.9.27 → ansible 2.15.4

Use FQCN for builtin module actions (pip).

FQCN(完全修復クラス)を使おう。

Jinja templates should only be at the end of 'name'

名前に変数({{ test }})を使うのは推奨されない。

Commands should not change things if nothing needs doing

command, shellなどがwhen, createsなどで条件つき実行になっていない場合警告される。

Truthy value should be one of [false, true]

yesと記載していたものをfalse, trueにする。

Forbidden implicit octal value "0644"

ダブルクォートで囲む。
https://tech-mmmm.blogspot.com/2023/08/ansible-lint.html

File permissions unset or incorrect.

ファイルの権限設定がない

Shells that use pipes should set the pipefail option

コマンドにset -o pipefailを追加する。
https://app.deepsource.com/directory/analyzers/ansible/issues/ANS-E3006

Use shell only when shell functionality is required

shellが必要でないのにshellを使っている。commandなどに修正。

Use failed_when and specify error conditions instead of using ignore_errors.

ignore_errors: trueにしない。

No new line character at the end of file

https://qiita.com/kazuhito_nakayama/items/14c16f1b624ffd2f383c

$[0] 'block' is a required property

playbookのtaskを記載していたmain.yamlを/tasks配下に置いていたことが原因。/playbooks配下に置く。
https://github.com/ansible/ansible-lint/discussions/3304

Unsupported parameters for (basic.py) module: become. Supported parameters include: chdir, editable, executable, extra_args, name, requirements, state, umask, version, virtualenv, virtualenv_command, virtualenv_python, virtualenv_site_packages.

ansible.builtin.pipbecome: trueを設定していたので、moduleが設定されていないと表示された。

参考

https://magai.hateblo.jp/entry/2018/04/20/162648

Discussion