techblog

インフラストラクチャ定義ツールについて

Infrastructure as Codeの実現に欠かせないツールを紹介。Cloud FormationやTerraformなど主要な定義ツールを概観し、自動実行をサポートする上で必要な特徴についても解説しています。

目次

Infrastructure as Codeのためのツール

Cloud Formation、TerraFrom、OpenStack Heat等のツールがあり、インフラストラクチャリソースの割り当てや、どのような構成・設定をしたいのか指定します。

Infrastructure as Codeのメリットを享受する場合、インフラは、反復・テスト・再利用可能で自己記述的に管理する必要があります。

無人実行のサポート

信頼性の高い無人実行をサポートするために、スクリプトやタスクが備えるべき特徴として以下が挙げられる。

  • べき等(idempotent)
    悪影響を及ぼさずに、同じスクリプトやタスクを複数回実行できる。
  • 事前チェック
    タスクは、開始するための条件を満たしているかチェックし、満たしていなければ目に見える形で意味のあるエラーを出力し、処理を失敗させシステムを使える状態に保つ。
  • 事後チェック
    タスクは、変更を加えることに成功したかどうかをチェックしする。
    単にコマンドのリターンコードをチェックするだけではなく結果が正しいことを証明しなければならない。

    例えば、Webサーバにおいて、バーチャルホストが追加されたことを確認するために、WebサーバにHTTPリクエストを送らなければならない。

  • 目に見える形の失敗
    タスクが正しく実行を失敗させた場合、その失敗はチームからわかる形になっていなければならない。
    情報ラジエータ(自動テスト、速さ、インシデントレポート、継続的インテグレーションなどの最新情報がチーム等、一目で確認できるよう目につきやすい場所へ設置する手書きや絵や電子的なディスプレイの総称)を使用したり、モニタリングサービスと統合したりといった方法を使う。

  • パラメーター化
    タスクは、同じタイプの複数オペレーションで使用できなければならない。
    たとえば、1つのスクリプトで特徴の異なる複数仮想ホストを構成および設定や特定のパラメーターを見つける方法、条件ロジックやテンプレートを駆使し状況にあった構成・設定ができなければならない。