クラウドの環境を、画面の操作ではなくコードで作る方法を「IaC(Infrastructure as Code)」と呼びます。この連載では、IaC の道具である Terraform を使い、Oracle Cloud Infrastructure(OCI)にサーバーの環境を作るところから始めます。
2回目の今回は、手を動かす前に、Terraform で何ができるか、この連載で何を作るかを整理します。
手作業での構築と何が違うのか
クラウドの環境は、管理画面(コンソール)を操作すれば作れます。設計で定めた設定値を、手順書に従って画面で1つずつ設定し、ネットワークやサーバーを作る、という進め方です。
この進め方には、同じ環境をもう一度作るときに困る点があります。手順書を見ながら同じ操作を繰り返すことになり、設定漏れや入力の誤りが起きやすくなります。
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 と実際の環境を比べて、差分だけを示します。

図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 の解説に沿って整理します。