Terraformとは、HashiCorpが提供しているIaaC(Infrastructure as Code)ツールになります。
AWS,Microsoft Azure,GCPなどのマルチクラウドに対応しています。
今回は、Terraformを使用したMicrosoft Azureへのリソースデプロイ自動化について解説いたします。
事前準備
Terraformのインストール
下記のサイトよりTerraformのインストールを実施します。
Install | Terraform | HashiCorp Developer
Azure CLIのインストール
Microsoft Azureへのログイン操作等に使用するため、Azure CLIのインストールを実施します。
Azure CLI をインストールする方法 | Microsoft Learn
Visual Studio Codeのインストール(推奨)
ソースコードエディターとして使用するため、Visual Studio Code(以下、VSCode)のインストールを実施します。
Download Visual Studio Code - Mac, Linux, Windows
Terraformファイルの作成
事前準備が完了したら、次にTerraformコードを記述した以下のファイルを用意します。
provider.tf
「provider.tf」は、どのクラウドプロバイダーを使用するかを定義するファイルです。
######################################
#Azure Providerの指定
######################################
terraform {
required_providers {
azurerm = {
version = ">=2.68.0"
}
}
}provider "azurerm" {
features {}
}
maint.tf
「maint.tf」は、どのリソースをデプロイするかを定義しているファイルになります。
今回は以下のリソースをMicrosoft Azure上へデプロイします。
・リソースグループ
・VirtualNetwork
・Subnet
######################################
#resource groupの作成
######################################resource "azurerm_resource_group" "rg" {
name = "demorg01" #リソースグループ名を指定
location = "japaneast" #リージョンを指定
}######################################
#VirtualNetworkの作成
######################################resource "azurerm_virtual_network" "virtualnetwork" {
name = "demovnet01" #VirtualNetwork名を指定
resource_group_name = azurerm_resource_group.rg.name
location = "japaneast" #リージョンを指定
address_space = ["192.168.0.0/24"] #VirtualNetworkのアドレス空間を指定
}######################################
#Subnetの作成
######################################resource "azurerm_subnet" "subnet" {
name = "demosubnet01" #Subnet名を指定
virtual_network_name = azurerm_virtual_network.virtualnetwork.name
resource_group_name = azurerm_resource_group.rg.name
address_prefixes = ["192.168.0.0/25"] #Subnetのアドレス空間を指定
}
上記Terraformファイルの作成が完了したら、任意のフォルダへ格納します。
今回はCドライブ直下に「terraform」というフォルダを作成し格納しています。
Terraformコマンドの実行
次に、Terraformコマンドを実行しリソースデプロイをしていきます。
VSCodeを起動し、画面左上のFile>Open FolderでTerraformファイルを格納したフォルダを選択します。
次に画面左上のView>Terminalを選択しTerminalを起動します。
az login
以下のコマンドを実行し、Microsoft Azureへログインします。
az login
terraform init
以下のコマンドを実行します。
terraform init
「terraform init」は、作業用ディレクトリを初期化するコマンドであり、Terraformを動かす際には必ず最初に実行する必要があります。
「Terraform has been successfully initialized!」と出力されたら成功になります。
terraform plan
次に以下のコマンドを実行します。
terraform plan
「terraform plan」はterraformによる実行計画を参照するコマンドあり、どのリソースが追加・変更・削除されるかが分かります。
今回は3つのリソースが追加されるため、「Plan: 3 to add, 0 to change, 0 to destroy.」と出力されていればOKです。
terraform apply
次に以下のコマンドを実行します。
terraform apply
「terraform apply」はリソースをデプロイするコマンドになります。
「Enter a value:」と出力されたら「yes」と入力すると、実際にデプロイが始まります。
「Apply complete! Resources: 3 added, 0 changed, 0 destroyed.」と出力されたらデプロイ完了になります。
Microsoft Azureのポータル画面で確認するとリソースグループ「demorg01」配下に仮想ネットワーク「demovnet01」が作成されています。
更に仮想ネットワーク「demovnet01」にサブネット「demosubnet01」が作成されています。
これで問題なくリソースがデプロイされたことを確認できました。
最後に
今回はTerraformの基本的な部分について解説しました。
本記事がTerraformの理解に役立てたら幸いです。
八鍬 洸祐(日本ビジネスシステムズ株式会社)
ハイブリッドクラウド本部に所属しています。業務では主にMicrosoft Azure,Terraformなどを扱っています。趣味はゲーム,バンドなどです。
担当記事一覧