AIと一緒に設計図は書けましたか? 「AIが思うように動いてくれなかった」「エラーが出てしまった」という方のために、今回の正解コードと、僕自身の宿題回答を公開します!
1. 答え合わせ:サンプルコード集
プロンプトの出し方や環境によって多少の差異は出ますが、以下の構成になっていれば「正解」です。
① variables.tf(変数の定義)
まずは「何を設定項目にするか」のラベルを貼ります。
variable "rg_name" {
description = "リソースグループの名前"
type = string
}
variable "location" {
description = "リソースをデプロイする場所"
type = string
default = "Japan East"
}
② terraform.tfvars(具体的な値)
環境変数のように、実際の名前や場所を指定します。
rg_name = "rg-terraform-study"
location = "Japan East"
③ main.tf(設計図本体)
変数を呼び出しながら、一気に組み立てる指示書です。
provider "azurerm" {
features {}
}
# 1. リソースグループの作成
resource "azurerm_resource_group" "rg" {
name = var.rg_name
location = var.location
}
# 2. ネットワーク(土地と区画)の作成
resource "azurerm_virtual_network" "vnet" {
name = "vnet-terraform"
address_space = ["10.0.0.0/16"]
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
}
resource "azurerm_subnet" "subnet" {
name = "snet-default"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.0.1.0/24"]
}
# 3. 仮想マシン(Ubuntu)の最小構成
resource "azurerm_network_interface" "nic" {
name = "nic-vm"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
ip_configuration {
name = "internal"
subnet_id = azurerm_subnet.subnet.id
private_ip_address_allocation = "Dynamic"
}
}
resource "azurerm_linux_virtual_machine" "vm" {
name = "vm-terraform"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
size = "Standard_B1s" # 最小・最安クラス
admin_username = "adminuser"
network_interface_ids = [azurerm_network_interface.nic.id]
admin_password = "P@ssw0rd1234!"
disable_password_authentication = false
os_disk {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts"
version = "latest"
}
}
2. ✍️ 僕の「宿題」回答
Q1:AI(Copilot)に指示を出すとき、一番うまく伝わった「言葉(プロンプト)」は?
回答: 単に「VM作って」と頼むよりも、「variables.tfの変数を使って、リソースグループ、VNet、Subnet、Ubuntu VMを最小構成で作って」と、参照先と範囲を具体的に指定した時が一番正確でした。AIには「前提条件」を丁寧に伝えるのがコツですね。
3. 次はいよいよ最終回!
これで、あなたは「コードでインフラを操る技術」を手にしました。
次回は全連載の締めくくり。 今回作ったこの「最小構成」を、どうやって「構成図」に落としていくのかを解説していきます。


コメント