流れ8の7語目 / 10

IaC(コードでインフラ管理)

クラウド
Webサーバーを新しく作ることになり、クラウドの管理画面を開いたら
「画面からポチポチ手で作らずに、コードで作って」
「IaC(コードでインフラ管理)」って、何のことだろう…?

IaC(Infrastructure as Code、コードでインフラ管理)は、サーバーやネットワークなどのインフラ(→02 クラウド・インスタンス)を、画面での手作業ではなく、コードに書いて作るやり方です。

同じコードからは何度でも同じ環境ができ、変更はコードを直して行います。

このページで分かること読む 約3分・問題 2問
  • IaC(Infrastructure as Code)は、サーバーやネットワークなどのインフラを、画面の手作業ではなく、コード(定義のファイル)に書いて作るやり方
  • 同じコードからは、何度でも同じ環境ができる
  • コードなので、Gitで履歴を残し、プルリクエストでレビューし、CIでチェックできる
  • 変えるときはコードを直す

身近な例えで理解する

年賀状の宛名を1枚ずつ手書きするかわりに、住所録を作っておいて印刷します。何枚でも同じ品質で、書き間違いも少なくなります。

  • 住所録インフラのコード
  • 住所録から印刷するコードから環境を作る
  • 何枚でも同じ品質何度作っても同じ環境
  • 引っ越した人は住所録を直して印刷し直す変更はコードを直して反映する

はがきだけ手で直すと、住所録は古いままです。来年また住所録から印刷すると、間違った住所が出てきます。

ちょっと確認

Q1同期のひとこと
同期「急ぎだったから、管理画面でセキュリティグループのルールを1つ足しといた」

このチームはIaCでインフラを管理しています。何が困る?

例えを外して、実際のしくみ

ここからは実際のしくみ
コードに書くもの

「Webサーバーを1台、この大きさで」「このネットワークに置く」「443番だけ通す(→06 ファイアウォール・セキュリティグループ)」のように、あるべき姿をファイルに書きます。このファイルを、ツールによって「テンプレート」「定義ファイル」などと呼びます。代表例は AWS CloudFormation、Azure の Bicep、Terraform などで、書き方はツールごとに違います。YAML や JSON で書くものも多くあります(次のページ)

同じコードから同じ環境

手作業だと、作る人やその日によって少しずつ違う環境ができがちです。コードから作れば、検証用と本番用を同じ形でそろえやすくなります

チームの道具がそのまま使える

コードはテキストなので、Gitで履歴を残し(→71 Git)、プルリクエストでレビューし(→73)、CIで書き方をチェックできます(→74)。「誰が・いつ・なぜ変えたか」が残ります

ドリフトに注意

IaCで管理している環境を画面で直接変えると、コードと実際の環境がずれます。これを「ドリフト」といいます。次にコードから反映したとき、手で足したものが消えたり、思わぬ差が出たりするので、変更はコードから行います

このページのまとめ

IaC
インフラを、手作業ではなくコードに書いて作るやり方
テンプレート/定義ファイル
インフラのあるべき姿を書いたファイル
同じコードから同じ環境
何度作っても、同じ形の環境ができること
ドリフト
画面での直接変更などで、コードと実際の環境がずれること

先輩のひとことの意味

先輩「画面からポチポチ手で作らずに、コードで作って」

「管理画面で1つずつ手作業で作るのではなく、サーバーの形をコードに書いて、そのコードから作って。そうすればGitに記録が残り、レビューもでき、同じものをもう一度作るのも簡単になる」という意味です。

練習問題で確かめる

Q24択

IaCのよいところとして正しいものは?

参考資料

ご意見・「これで例えて!」を募集しています

ご意見・ご感想・質問・間違いのご指摘など、何でもお気軽にお寄せください。「この言葉も例えで説明してほしい」「こんな例えなら分かりやすい」という声をもとに、新しいページや例えを作ります。

  • 説明してほしいITの言葉
  • 例えてほしい場面(部活・アルバイト・家事など)
  • 分かりにくかったところ・間違いのご指摘

意見箱は準備中です。

解説・例え・練習問題はすべてオリジナルです。参考にしているのは公式ドキュメントのみです。ご意見・ご感想・間違いのご指摘など、何でもお寄せください。確認してすぐに直します。

LinuCはLPI-Japanの登録商標です。当サイトはLPI-Japanおよび他の企業・団体とは関係ありません。

運営:core