IaC(Infrastructure as Code)とは

あいえーしー

サーバ、ネットワーク、ストレージなどのインフラストラクチャの構成を、手作業ではなくコード(定義ファイル)で記述し、ツールで自動的に作成・変更する方法。宣言的なツールでは「あるべき構成」を書き、ツールが実際の状態との差分だけを適用するので、同じ定義を何度適用しても同じ結果になる(べき等性)。定義をGitなどで管理すれば、変更の履歴、レビュー、同じ環境の再現が容易になる。

「IaC(Infrastructure as Code)」は、1分野の1問の練習問題に出てきます(クラウドとコンテナの基礎など)。

この用語の分野: クラウドとコンテナの基礎

宣言的と手続き的

宣言的な書き方では「仮想マシンを2台」のように結果を書き、ツールが今の状態と比べて必要な操作を決めます。手続き的な書き方では「仮想マシンを1台作る」のように操作を順に書くので、2回実行すると4台になるなど、今の状態を考えて書く必要があります。インフラストラクチャの構成には、べき等性を得やすい宣言的な方法がよく使われます。

構成のドリフト

だれかが管理画面などから手作業で設定を変えると、実際の状態がコードとずれます(ドリフト)。宣言的なツールは、適用の前に差分を表示して、こうしたずれを見つけられます。変更は必ずコードを通して行うという運用にすると、環境の状態がコードと一致し続けます。

レビューと再現

定義ファイルをプログラムと同じようにGitで管理すれば、だれがいつ何を変えたかが残り、変更を適用する前にレビューできます。同じ定義からステージングと本番の環境を作れば、環境の違いによる問題も減らせます。パスワードなどの機密の値は定義ファイルに直接書かず、専用の仕組みで管理します。

IaC(Infrastructure as Code)の練習問題に挑戦

宣言的なIaC(Infrastructure as Code)のツールで、ネットワークと仮想マシン2台の構成を定義したファイルを適用して、環境を作った。その直後に、何も変えずに同じファイルをもう一度適用したときに起きることとして、適切なものはどれか。

  1. A定義と実際の状態に違いがないので、何も変更されない
  2. B同じ構成がもう1組作られ、仮想マシンが4台になる
  3. Cすでに環境があるので、2回目の適用はエラーで中断する
答えと解説を見る

正解:A. 定義と実際の状態に違いがないので、何も変更されない

宣言的なIaCでは、手順ではなく「あるべき構成」をコードに書き、ツールが実際の状態と比べて、違いの分だけを作成、変更、削除します。そのため、同じ定義を何度適用しても結果は同じになり(べき等性)、2回目には変更が起きません。だれかが手作業で設定を変えて実際の状態が定義とずれた場合(構成のドリフト)は、次の適用で定義の状態に戻されます。定義をGitで管理すれば、変更の履歴の確認やレビューも、プログラムと同じように行えます。

よくある質問

IaCを使えば手作業の設定は不要になりますか?

多くの作業はコードにできますが、最初の認証の設定など、手作業が残る部分もあります。大切なのは、手作業で変えた部分を放置せず、コードに取り込んで、コードと実際の状態を一致させておくことです。

IaCとコンテナはどう関係しますか?

IaCはネットワークや仮想マシン、クラスタなどの基盤を作るのに使われ、その上で動くアプリケーションはコンテナイメージとして配られることが多くあります。Kubernetesのマニフェストも、あるべき状態を宣言するという点で、IaCと同じ考え方に立っています。

解説の中の「IaC(Infrastructure as Code)」

「IaC(Infrastructure as Code)」が出てくる問題(1問)

  1. 宣言的なIaC(Infrastructure as Code)のツールで、ネットワークと仮想マシン2台の構成を定義したファイルを適用して、環境を作った。その直後に、何も変えずに同じファイルをもう一度適用したときに起きることとして、適切なものはどれか。

クラウドとコンテナの基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

関連する用語

Git アベイラビリティゾーン イミュータブルインフラストラクチャ オートスケーリング オブザーバビリティ オブジェクトストレージ カナリアリリース Kubernetes コンテナ コンテナイメージ

用語集の一覧へ