Cloud Design&Solution

Technical Blog

ホーム / 自動化 / IaC

【IaC 入門】② Terraform で何が変わるか:コードの形と基本の流れ

公開

クラウドの環境を、画面の操作ではなくコードで作る方法を「IaC(Infrastructure as Code)」と呼びます。この連載では、IaC の道具である Terraform を使い、Oracle Cloud Infrastructure(OCI)にサーバーの環境を作るところから始めます。

2回目の今回は、手を動かす前に、Terraform で何ができるか、この連載で何を作るかを整理します。

手作業での構築と何が違うのか

クラウドの環境は、管理画面(コンソール)を操作すれば作れます。設計で定めた設定値を、手順書に従って画面で1つずつ設定し、ネットワークやサーバーを作る、という進め方です。

この進め方には、同じ環境をもう一度作るときに困る点があります。手順書を見ながら同じ操作を繰り返すことになり、設定漏れや入力の誤りが起きやすくなります。

IaC では、作りたい環境をコードに書きます。コードを実行すれば、書いたとおりの環境ができます。同じコードを実行すれば何度でも同じ環境ができ、コードそのものが設定値の記録になります。

手作業での構築と IaC の違いを比べた図
図1 手作業での構築と IaC の違い

Terraform で書くコードの形

Terraform では、作りたいもの(リソース)を .tf という拡張子のファイルに書きます。たとえば OCI のネットワーク(VCN)を1つ作るコードは、次のような形です。

resource "oci_core_vcn" "main" {
  compartment_id = var.compartment_id
  cidr_blocks    = ["10.0.0.0/16"]
  display_name   = "blog-vcn"
}

resource のあとの "oci_core_vcn" がリソースの種類、"main" がコードの中で使う名前です。波かっこの中に、そのリソースの設定値を書きます。実際に動かすのは、この連載の6回目です。今回は形だけ見ておいてください。

Terraform の基本の流れ

Terraform の操作は、次の3つのコマンドが基本です。

コマンド すること
terraform plan コードを実行すると何が作られ、何が変わるかを確かめる。まだ何も変えない
terraform apply plan で確かめた変更を実行する
terraform destroy Terraform が作ったものを片付ける

Terraform は、自分が作ったものを「state」というファイルに記録します。次に plan を実行すると、コードと state と実際の環境を比べて、差分だけを示します。

Terraform の基本の流れを示した図
図2 Terraform の基本の流れ

state には、作ったリソースの ID などが記録されます。state を失うと、Terraform は自分が作ったものを見分けられなくなります。state の扱いは、OCI の環境づくりの連載の最後の回で詳しく取り上げます。

この連載で使う環境

この連載では、作業に OCI の Cloud Shell を使います。Cloud Shell は、OCI の管理画面からブラウザで開けるコマンドの実行環境です。手元の PC に道具を入れる必要がなく、Mac でも Windows でも同じ手順で進められます。

Cloud Shell には、Terraform、Ansible、OCI CLI があらかじめ入っています。この連載では、次の版で手順を確かめています(最後の行は OCI CLI の版です)。

Terraform v1.5.7
on linux_arm64
ansible 2.9.27
3.95.1

Cloud Shell に入っている版は、導入されてから時間が経過しており、最新バージョンと異なります。最新バージョンへの対応は、別の連載で取り上げる予定です。

この連載で作るもの

この連載では、次の順に進めます。

  • 前段(この連載):IaC とは、Terraform で何が変わるか、Terraform とは何か、Terraform の実行環境、OCI の準備、初めての Terraform
  • OCI の環境づくり:ネットワーク、サーバーと初期設定、非公開のサーバーへの接続、Ansible によるサーバーの設定、Web サーバーの公開、片付け
  • その後、同じ環境を AWS で作る連載に進みます

次回は、Terraform とは何かを、HashiCorp の解説に沿って整理します。

あわせて読む