はじめに
naritomoと申します。
本職はインフラエンジニアを行っています。
最近扱ったterraformについて、更に進めたAzureインフラを作ってみました。
いろいろアドバイスいただけると嬉しいです。
立ち上げ概要
Azureにて2つのサブネットを作成し、それぞれのサブネットでWindows/Linuxを立ち上げ、片方のサブネットのVMにパブリックIPを割り当てる。
ソースは以下になります。
前提
以下のページなどを参考に、terraform稼働環境を作成し、OCIでの適当なリソースが作成できる状態にあること。
Dockerを使用しない場合、以下のコマンドを利用できている状態になっていること。
aws
brew
*Terraform導入時に必要
tfenv
*terraform稼働コンテナを利用しない場合は必要
(コンテナ利用しない場合)指定バージョン(1.5.7)のterraformを導入する。
tfenv install
terraformソースファイル入手
terraformを動かすフォルダ内にて、以下コマンドを稼働する。
git clone https://github.com/naritomo08/terraform_azure_source_public.git
cd terraform_oci_source_public
rm -rf .git
作成(tfstate保存ストレージ作成)
tfstateフォルダ内へ入り、リソース作成を実施する。
cd tfstate
terraform init
terraform plan
terraform apply
cd ..
作成実施したときに出てくるtfstate_nameの値を控える。
ストレージパス設定
az login
export ARM_ACCESS_KEY=$(az storage account keys list --resource-group tfstate --account-name <ストレージアカウント名> --query '[0].value' -o tsv)
→新しくターミナルを立ち上げるたびに設定すること。
作成(リソースグループ作成)
networkフォルダ内へ入り、リソース作成を実施する。
cd ResourceGroup
vi backend.tf
<ストレージ名>を保存ストレージ作成で控えた名前をいれる。
terraform init
terraform plan
terraform apply
cd ..
作成(基本ネットワーク作成)
networkフォルダ内へ入り、リソース作成を実施する。
cd network
vi backend.tf
<ストレージ名>を保存ストレージ作成で控えた名前をいれる。
terraform init
terraform plan
terraform apply
cd ..
作成(PublicVM(Windows/Linux)作成)
publicvmフォルダ内へ入り、リソース作成を実施する。
cd publicvm
vi backend.tf
<ストレージ名>を保存ストレージ作成で控えた名前をいれる。
terraform init
terraform plan
terraform apply
cd ..
applyコマンド実施後に出てくるIPを控え、
"vmXX.tf"内の以下のパラメータを使用してRDPログインする。
admin_username
admin_password
作成(PrivateVM(Windows/Linux)作成)
publicvmフォルダ内へ入り、リソース作成を実施する。
cd privatevm
vi backend.tf
<ストレージ名>を保存ストレージ作成で控えた名前をいれる。
terraform init
terraform plan
terraform apply
cd ..
applyコマンド実施後に出てくるIPを控え、
"vmXX.tf"内の以下のパラメータを使用してRDPログインする。
admin_username
admin_password
削除方法
作成とは逆の手順で削除する。
以下のコマンドで削除可能
一度作成できれば最後のコマンドのみでよい。
terraform destroy
仮想マシンについては仮想ディスクのみ残るため、
リソースグループ消す前にこれらもコンソールから消すこと。
一部リソースのみの削除手順
terraform state list
→リソース確認
terraform apply --target="リソース名"
→再作成対象のリソース指定
terraform destroy --target="リソース名"
→削除対象のリソース指定
おわりに
この記事がterraformを扱う方の助けになればと思います。