IaCとは?仕組みとメリット、TerraformとAnsibleなど主なツール

IaCとは?仕組みとメリット、TerraformとAnsibleなど主なツール

IaC(Infrastructure as Code)は、サーバーやネットワークなどのインフラの構成を、コードで書いて管理する考え方です。クラウドの広がりとともに、インフラの構築や運用の当たり前のやり方になりつつあります。

ここでは、IaCとは何かを、手作業での構築との違いと仕組みから解説します。TerraformやAnsibleなどの主なツールと選び方に加えて、インフラエンジニアがIaCを学ぶ進め方もまとめました。

SUMMARY
この記事で分かること
  • IaCとは何か、手作業での構築との違いとメリット
  • 宣言型と手続き型の違いなど、IaCの仕組みと考え方
  • TerraformやAnsibleなどの主なツールと、選び方・学び方

IaCとは?

インフラの構成をコードで管理する考え方

IaCとは、サーバー、ネットワーク、ストレージなどのインフラの構成を、設定ファイル(コード)に書いて、ツールで自動で作る考え方です。

これまでは、手順書を見ながら、画面を操作したりコマンドを1つずつ入力したりして構築するのが一般的でした。IaCでは、「どんなインフラにしたいか」をコードに書いておき、ツールを実行すると、その内容どおりのインフラが作られます。

手作業での構築との違い

項目手作業での構築IaC
手順の残し方手順書(文章やスクリーンショット)コード
作業の進め方1台ずつ、人が操作するツールで、まとめて自動で作る
同じ環境の作り直し手間がかかり、ミスも起きやすい同じコードから、何度でも同じ環境を作れる
変更の記録作業記録に頼るGitなどで、いつ・だれが・何を変えたかが残る
変更の確認作業のあとに確かめる実行の前に、何が変わるかを確かめられる

手作業では、手順書と実際の環境がずれていくことがよくあります。IaCでは、コードがそのまま「今の環境の正しい姿」になるため、ずれが起きにくくなります。

IaCのメリット

メリット内容
作業のミスを減らせる人が手で入力する作業が減り、設定の打ち間違いを防げる
速く構築できる何十台のサーバーでも、コードを実行するだけで同じように作れる
同じ環境を再現できる開発・テスト・本番の環境を、同じコードからそろえて作れる
変更を管理できるコードをレビューしてから反映でき、問題があれば前の状態に戻しやすい
属人化を防げる構成がコードに残るため、担当者が替わっても引き継ぎやすい

インフラエンジニアにとっては、「手を動かす作業」から「仕組みを設計し、自動化する仕事」へと役割が移っていく、その中心にある技術です。

仕事の変化については、[インフラエンジニアの将来性]で解説しています。

IaCの仕組みと考え方

宣言型と手続き型

IaCのコードの書き方には、大きく2つの考え方があります。

書き方考え方例
宣言型「最終的にこうなっていてほしい」という完成形を書くサーバーを3台、このネットワークに置く
手続き型「この順番で、こう操作する」という手順を書くパッケージを入れて、設定を書き換えて、再起動する

宣言型では、今の状態と完成形の差をツールが調べて、足りない部分だけを自動で作ったり直したりします。TerraformやCloudFormationは、宣言型の代表的なツールです。

何度実行しても同じ結果になる

IaCで大切な考え方が、「何度実行しても同じ結果になる」ことです。これを冪等性(べきとうせい)といいます。

たとえば、「Webサーバーを1台作る」というコードを2回実行しても、サーバーが2台になるのではなく、1台のままになります。すでに完成形どおりなら、何も変えません。そのため、安心して何度でもコードを実行できます。

IaCで変更を反映する流れ

流れやること
1. コードを書く作りたいインフラや、変えたい内容をコードに書く
2. レビューするGitで変更を共有し、ほかのメンバーに確かめてもらう
3. 変更の内容を確かめるツールで、実行したら何が作られ、何が変わるかを事前に表示する
4. 反映する問題がなければ実行し、インフラに反映する

アプリの開発と同じように、コードのレビューや自動のテストをインフラにも取り入れられるのが、IaCの大きな特徴です。

主なIaCツールと選び方

主なIaCツール

ツール得意なこと書き方
TerraformAWS・Azure・Google Cloudなど、さまざまなクラウドのリソースを作る宣言型(HCLという言語)
OpenTofuTerraformから分かれたオープンソースのツール。Terraformとほぼ同じ書き方で使える宣言型
AWS CloudFormationAWSのリソースを作る。AWSが提供するツール宣言型(YAML・JSON)
Azure BicepAzureのリソースを作る。Microsoftが提供するツール宣言型
Ansibleサーバーやネットワーク機器の中の設定を整える手続き型に近い(YAML)

Terraformは「インフラを作る」、Ansibleは「作ったサーバーや機器の中を設定する」のが得意です。実際の現場では、Terraformでクラウドのサーバーやネットワークを作り、Ansibleでサーバーの中のソフトを入れて設定する、という組み合わせもよく使われます。

ネットワーク機器の自動化にも使われる

IaCは、クラウドだけでなく、ルーターやスイッチなどのネットワーク機器の設定にも使われています。とくにAnsibleは、多くのネットワーク機器に対応していて、何十台の機器の設定をまとめて変えたり、設定のずれを確かめたりできます。

2027年2月に始まるCCNAの新しい版でも、Ansibleによる構成管理が出題範囲に入るとされています。

詳しくは、[CCNA v2.0とは]で紹介しています。

ツールの選び方

状況おすすめのツール
複数のクラウドを使う、どのクラウドでも使える力をつけたいTerraform(またはOpenTofu)
AWSだけを使っているAWS CloudFormation、またはTerraform
Azureだけを使っているAzure Bicep、またはTerraform
サーバーの中の設定や、ネットワーク機器の設定を自動にしたいAnsible

最初の1つに迷ったら、Terraformがおすすめです。求人で挙げられることが多く、クラウドを問わずに使えるため、身につけた力をほかの現場でも活かせます。

AWSで働くエンジニアの仕事は、[AWSエンジニアとは]で紹介しています。

IaCの学び方

ステップやること
1. 手作業で一度作ってみるクラウドの画面で、サーバーやネットワークを手で作り、仕組みを理解する
2. 同じものをコードで作る手で作ったものを、Terraformのコードで作り直してみる
3. Gitで管理するコードをGitで管理し、変更の記録を残す
4. Ansibleで中身を設定する作ったサーバーに、Ansibleでソフトを入れて設定してみる

IaCは、インフラの仕組みを知っている人ほど、早く使いこなせます。何を作っているのかが分かっているからです。サーバーやネットワークの経験は、そのままIaCの土台になります。

IaCでよくある疑問

プログラミングができなくても使える?

使えます。TerraformやAnsibleのコードは、プログラミングの言語というより、設定を決まった形で書いたファイルに近いものです。ただし、繰り返しや条件の書き方など、少しずつプログラミングの考え方も出てくるため、シェルスクリプトやPythonに触れておくと理解が早く進みます。

シェルスクリプトについては、[シェルスクリプトとは]で紹介しています。

TerraformとAnsible、どちらから学べばいい?

クラウドのインフラを作る仕事をしたいならTerraform、サーバーやネットワーク機器の設定を自動にしたいならAnsibleから始めましょう。どちらか1つを使えるようになると、もう1つも学びやすくなります。

IaCがあれば、手作業の仕事はなくなる?

すべてはなくなりません。障害の原因を探る作業や、IaCを導入する前の古いシステムの運用など、人の判断が必要な場面は残ります。ただし、くり返しの構築や設定の作業は、少しずつIaCに置きかわっていきます。

オンプレミスの環境でも使える?

使えます。Ansibleは、オンプレミスのサーバーやネットワーク機器にも使えます。Terraformも、VMwareなどの仮想化の基盤に対応しています。オンプレミスの運用を自動化する第一歩として取り入れる現場も増えています。

IaCとDockerは、何が違う?

IaCは、サーバーやネットワークなどのインフラを作る考え方です。Dockerは、アプリとその実行環境をコンテナにまとめる技術です。どちらも「コードやファイルで環境を再現する」点は共通していて、IaCで作ったサーバーの上でDockerのコンテナを動かす、という組み合わせもよく使われます。

Dockerについては、[Dockerとは]で解説しています。

まとめ

IaCは、インフラの構成をコードで書いて管理し、自動で作る考え方です。

この記事のポイントは次のとおりです。

  • IaCとは
    サーバーやネットワークの構成をコードに書き、ツールで自動で作る考え方。
  • メリット
    作業のミスを減らし、同じ環境を何度でも再現でき、変更をコードで管理できる
  • 仕組み
    完成形を書く宣言型と手順を書く手続き型があり、何度実行しても同じ結果になる。
  • 主なツール
    インフラを作るTerraformやCloudFormation、サーバーや機器の中を設定するAnsible。
  • 学び方
    手作業で一度作ってから、同じものをTerraformで作り直し、Gitで管理する。

IaCは、インフラエンジニアの仕事を「手を動かす作業」から「仕組みを設計し、自動化する仕事」へ広げる技術です。まずはクラウドの無料枠で、手で作ったサーバーをTerraformで作り直すところから始めてみましょう。

記事の企画・執筆

IT基盤(インフラ)エンジニアのための求人・情報サイト「テックドック」の編集部です。ネットワーク・サーバー・クラウド・セキュリティなど、IT基盤の仕事・技術・資格・キャリアに役立つ情報を、実務に即した視点で発信しています。