Ansible をそこそこ書いてきて、自分なりに気をつけているところ記載。自分ルールなので他の人からすると、違うところもあるかもしれないが元々の Ansible のコンセプトからも外れないように、公開した時に使う人からも使いやすい事を目標にしている。気づいたら適時追加する。
一言でいうと Simple is Best を貫く。生産性や他の人への伝わりやすさ使いやすさを重視する。
作るときに特に意識する事
- できるだけ複雑に書かない・表現しない
-
"こだわり・エゴ"は極力排除する
- エテしてこの部分にシツコイと複雑になるし、周りにも受け入れられない(ハズ)
- 他の人でも直ぐに理解できるようイレギュラーな事、トリッキーな書き方はしない
Playbook中に「#」によるコメントは書かない
- 説明は name により簡潔に書く
コマンド系モジュールを使う時は最後の砦
- 既存モジュールで対応できるかを先に考える
- 特に、sed , awk , sort なんかを
raw
やshell
モジュールでやろうとした場合、Ansible 側にさえリコメンドされることがある
- 特に、sed , awk , sort なんかを
タスクは1行書きを意識する
- 引数が極端に多くない、列数が右に流れすぎないのであれば
- 行数は少ないほうが全体が見やすいからスクロールしなくていい
ブール値や state は変数にしない
- yes/no , true/false など
- state の present/absent など
条件分岐をいたずらに増やさない
やろうと思えばできるところもあるが、あまりプログラムちっくになるのは避ける。職人芸はいらない。
jinja2 のフィルタ、多用は禁物
プレイブック中に複数使われだすと、なんだか見た目が汚く見えると同時になんか他にもっといいやり方があるんじゃないか?と思いたくなる。
変数について
Role 利用字に必要な変数は defaults/ 下に置き、原則的にユーザはここを編集させない(ロールそのものをカスタムするなどを除く)。ユーザが変数をカスタマイズする場合は vars/ 下で行うようにする。
べき等を意識する
ここを外すと用途がブレる。(無1回ポッキリのツールとして割り切り、恩恵半分をわかった上で使うならよいが・・・)
新しく追加された機能は積極的に使う
使うことで、更にコード行数を減らせる可能性が秘めているものがまれにある。
「今までは複数のタスクを数十行書いていたのが、ループ処理の拡張により数行になった」など