IaCの難しさ

今日はインフラ周りの技術知識を整理したい気分。つい先日、CIの構築に苦戦したからかもしれない。あるいは、NISTのSP800-57 (鍵管理) を読んだからかもしれない。

私がサーバー環境を構築するときは、ansibleで極力自動化するようにしている。sshでログインできることさえ確認できれば、シェルスクリプトよりもずっと可読性と保守性が高いスクリプトが書ける。冪等性があり、トライアンドエラーしながら作れるのも素人的には嬉しい。思ったように動かないことも多いけど、ガチャガチャやっているうちに直るので結果オーライ。

ansibleは簡単である。それは間違いないのだが、ansibleスクリプト(モジュール)を保守しようとするたびに複雑な気持ちになってしまう。

それはなぜか。ansibleを忘れるからだ。この手のスクリプトは1度書いたらしばらく実行しない。その結果、ansible独特の使い方・仕組み・作法・特性の全てを忘れてしまうのだ。何をやろうとしているかは直ぐに読み取れるが、スクリプトを実行すると何を起こるのかは、設定ファイルを細部まで確認しないといけないという、インフラ管理者としての専門性や注意力が求められるあたりも、不慣れな身としては少し辛い。

ansibleによるサーバー構築自動化による恩恵は得られたが、保守の際に経験不足・忘却・設計不良の三重苦に苦しめられる。何も変な話ではない。どうりでSREが重宝されるわけだ。