よろずやIT
用語辞典

IaC(Infrastructure as Code)とは?サーバー設定をコードで管理する仕組み

執筆・監修:よろずやIT編集部|編集方針を見る

結論:まずここだけ読めばOK

詳しい手順・原因は、この下で解説しています。

用語辞典のイラスト

結論: IaC(アイエーシー)は、サーバーやネットワークなどのインフラの設定を、コード(ファイル)で書いて管理する考え方です。手作業で画面をクリックする代わりに、設定をファイルに書いて、ツールで自動的に反映します。同じ環境を何度でも作れ、変更の履歴が残り、レビューもできるのが利点です。一方で、手作業で変えると、コードと実際の環境がずれる点と、秘密情報をコードに書かない点に注意が必要です。

IaCとは

IaCは、Infrastructure as Code(インフラストラクチャ・アズ・コード)の略です。インフラとは、アプリを動かす土台となる、サーバー、ネットワーク、データベース、ストレージなどのことです。

これまで、インフラは、管理画面で画面をクリックしたり、サーバーにログインしてコマンドを打ったりして、手作業で用意することが多くありました。IaCでは、その設定をコードで書きます。

手作業との違い

手作業での管理と、コードで定義するIaCの違いを、課題と利点で比べた図解

手作業 IaC(コード)
再現性 同じ環境を、作りにくい 何度でも、同じ環境を作れる
記録 設定の記録が残りにくい 変更の履歴が残る(Git)
確認 他の人が、確かめにくい レビューして、確認できる
ミス 気づきにくい 実行前に、差分を確認できる
速さ 作業に時間がかかる 自動で、速く反映できる

「担当者によって、手順が違う」「いつ、誰が、何を変えたか分からない」といった、属人化を減らせます。履歴の管理は、Gitのブランチの考え方と同じです。

書き方のイメージ

次は、クラウド上に、ストレージ(バケット)を1つ作る、設定の例です(Terraformの書き方の一例)。

resource "aws_s3_bucket" "example" {
  bucket = "my-example-bucket-name"
}

「どんなものが欲しいか」を、宣言します。ツールが、今の状態と比べて、足りないものを作り、違うものを変えます。

IaCの流れ

コードを書き、レビューし、変更内容を確認して、適用する流れと、ドリフトや秘密情報の注意を示した図解

  1. コードを書く(あるべき状態を、ファイルに定義する)
  2. レビューする(Gitなどで、変更点を、複数人で確認する)
  3. 事前に確認する(多くのツールに、変更内容を実行前に表示する機能がある。Terraformのplanなど)
  4. 適用する(実際の環境に反映する)

CI/CDと組み合わせて、レビューが済んだら自動で適用する運用もあります。

代表的なツール

区分 ツールの例 得意なこと
インフラの作成・管理 Terraform、AWS CloudFormation、Pulumi など クラウドのサーバー・ネットワークを、作る・変える・消す
構成管理 Ansible、Chef、Puppet など すでにあるサーバーの中を、設定する

使うクラウドや、チームの得意分野によって、選びます。特定の製品を、おすすめするものではありません。

DockerやKubernetesの環境も、IaCで構築・管理することが多くあります。

注意点

① 手作業で変えない(ドリフト)

コードで管理しているのに、画面から手作業で設定を変えると、コードと実際の環境が、ずれてしまいます。これをドリフトといいます。

変更は、コードを直して、反映します。

② 秘密情報を、コードに書かない

パスワード、APIキー、認証情報を、コードに直接書いてはいけません。Gitに保存すると、履歴に残り、漏れる危険があります。専用の秘密情報の管理の仕組みを使います(APIキーとは)。

③ 実行の前に、変更内容を確認する

コードの間違いは、一度に多くの環境へ反映されることがあります。

④ 権限を絞る

IaCの適用に使うアカウントは、強い権限を持ちがちです。必要な範囲に絞って与えます(最小権限の原則)。

向いている場面

サーバーが少なく、ほとんど変わらないなら、手作業でも十分です。まず、1つの環境から試し、慣れてから広げるのが現実的です。開発者向けの基盤づくりは、プラットフォームエンジニアリングとはも参考にしてください。

まとめ

関連記事:Dockerとは、Kubernetesとは、CI/CDとは、Gitのブランチとは、APIキーとは

PR【中古】 Oracle Cloud Infrastructure徹底入門 Oracle Cloudの基本からインフラ設計・構築まで / 近藤 暁太, 丸川 祐考, 塩原 浩 / [単行本(ソフトカバー)]【メール便送料無料】【最短翌日配達対応】

【中古】 Oracle Cloud Infrastructure徹底入門 Oracle Cloudの基本からインフラ設計・構築まで / 近藤 暁太, 丸川 祐考, 塩原 浩 / [単行本(ソフトカバー)]【メール便送料無料】【最短翌日配達対応】

¥1,905

楽天で見る
SHAREXLINEはてブ

よくある質問

Q.IaCとDockerは、何が違いますか?

A.役割が違います。Dockerは、アプリを動かす環境を、コンテナとして固める技術です。IaCは、そのコンテナを動かすサーバーや、ネットワーク、クラウドの設定といった、インフラそのものを、コードで管理する考え方です。組み合わせて使うことが多くあります。

Q.TerraformとAnsibleは、どう違いますか?

A.一般に、Terraformは、クラウドのサーバーやネットワークなどを『作る・変える・消す』ことが得意なツールです。Ansibleは、すでにあるサーバーの中に、ソフトを入れたり、設定を整えたりする『構成管理』が得意なツールです。目的に応じて、使い分けたり、組み合わせたりします。

Q.プログラミングができないと、IaCは難しいですか?

A.本格的なプログラミングの知識がなくても、始められます。多くのIaCツールは、『こういう状態にしたい』という設定を、決まった書き方で記述する形式です。ただし、クラウドやネットワークの基本的な知識は必要です。

Q.IaCを使うと、間違えた時の被害も大きくなりませんか?

A.なります。コードの間違いが、一度に多くの環境に反映されるおそれがあるためです。実行の前に、変更内容を確認する機能を使い、レビューを通し、本番の環境には、権限を絞って適用する運用が大切です。

Q.小さなサービスでも、IaCは必要ですか?

A.必須ではありません。サーバーが1〜2台で、ほとんど変わらないなら、手作業でも管理できます。環境が増えたり、複数人で運用したり、同じ構成を何度も作ったりするようになると、IaCの価値が大きくなります。

関連記事

用語辞典用語解説

IDS・IPSとは?侵入を検知するか、止めるかの違いと、ファイアウォールとの関係

IDSは攻撃らしい通信を検知して知らせる仕組み、IPSは検知して遮断まで行う仕組みです。違い、ネットワーク型とホスト型、検知方式、誤検知の注意、ファイアウォール・WAF・EDRとの役割分担を図解で解説します。

用語辞典用語解説

サーバーレスとは?「サーバーがない」わけではない仕組みと、向き不向き

サーバーレスとは、サーバーの管理を意識せずに、プログラムを動かせる仕組み。FaaSの考え方、メリットと注意点、向いている用途を、水道の例えで、やさしく解説します。

用語辞典用語解説

WAFとは?ファイアウォールとの違いと防げる攻撃をやさしく解説

WAFとは、Webサイトへの通信の中身を見て、SQLインジェクションなどの攻撃を検知・遮断する仕組みです。ファイアウォールとの違い、種類、防げるもの・防げないもの、導入時の注意を図解で解説します。

用語辞典用語解説

robots.txtとは|書き方と、noindexとの違い・やってはいけない設定

robots.txtは、検索エンジンなどのクローラーに、「このページには来ないでください」とお願いするためのファイルです。書き方、noindexとの違い、見せたくない情報は守れない理由、全ページを止めてしまう失敗例をまとめます。

最新のIT関連書籍 トップ10

PR / 楽天市場の売れ筋ランキングを定期的に取得しています。価格は変動する場合があるため、購入前に各ストアでご確認ください。