仕事でTerraformを使用する機会をもらえたので作業ログ
Azureのqiita少なくないですか…?
環境
ホストPC: Mac
Terraform v0.11.7
Azure CLI 0.10.18
Terraformをインストール
tfenv
を使ってインストールします
Macユーザーの方はHomebrew
を使ってインストールできます
$ brew install tfenv
tfenv install/uninstall
指定したversionをインストール/アンインストールすることが出来ます。
今回はlatest
で最新版をインストールします
$ tfenv install 0.8.0
$ tfenv install latest # 最新のversion
$ tfenv uninstall 0.8.0
tfenv use
terraformの利用するversionを切り替えることが出来ます
$ tfenv use 0.8.0
Azure CLI 2.0をインストールする
まず、Azureリソースを管理するために必要なコマンドラインツールであるAzure CLIをインストールします。
これはTerraform から Azure にアクセスするための設定になります
Macを使っている方は、Homebrewを使用するのが最も簡単です。
$ brew update && brew install azure-cli
CLIインストール後は、az
コマンドでAzure CLIを実行することが出来ます
Azure CLIを設定する
まずは次のコマンドを実行しAzure CLIにログインします
$ az login
そうするとWebブラウザを開くようにと指示されます
To sign in, use a web browser to open the page https://aka.ms/devicelogin and enter the code XXXXXXXX to authenticate.
https://aka.ms/devicelogin
にログインし、指示通りにcodeをうちこみます
ログイン後は次のコマンドを実行することでアカウントに紐付いている サブスクリプションの一覧を表示することが出来ます
$ az account list
実行結果
[
{
"cloudName": "AzureCloud",
"id": "00000000-0000-0000-0000-000000000000",
"isDefault": true,
"name": "PAYG Subscription",
"state": "Enabled",
"tenantId": "00000000-0000-0000-0000-000000000000",
"user": {
"name": "user@example.com",
"type": "user"
}
}
]
サブスクリプション一覧の中から自分が利用したいものを選択し、次のコマンドでサブスクリプションをを設定します。
$ az account set --subscription="SUBSCRIPTION_ID"
アカウントを照会してサブスクリプション ID とテナント ID の値を取得します。
$ az account show --query "{subscriptionId:id, tenantId:tenantId}"
実行結果
{
"subscriptionId": "***********************",
"tenantId": "********************"
}
そして、terraform用に別個の資格情報を作成します
$ az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/${SUBSCRIPTION_ID}"
実行結果
{
"appId": "****************************:",
"displayName": "***********************",
"name": "************************",
"password": "**********************************",
"tenant": "************************************"
}
資格情報のテストは下記コマンドを実行します
$ az login --service-principal -u SP_NAME -p PASSWORD --tenant TENANT
$ az vm list-sizes --location westus
Terraformの環境変数を構成する
Azureリソースを作成する時に以下の設定を使用するようにTerraformを構成します
- ARM_SUBSCRIPTION_ID
- ARM_CLIENT_ID
- ARM_CLIENT_SECRET
- ARM_TENANT_ID
- ARM_ENVIRONMENT
次のシェルスクリプトを使用して設定します
それぞれにAzure CLIで確認した項目を入力していきます
echo "Setting environment variables for Terraform"
export ARM_SUBSCRIPTION_ID=your_subscription_id
export ARM_CLIENT_ID=your_appId
export ARM_CLIENT_SECRET=your_password
export ARM_TENANT_ID=your_tenant_id
Terraformを実行する
terraform
ディレクトリを作成し、test.tf
ファイルを作成
provider "azurerm" {
}
resource "azurerm_resource_group" "test" {
name = "testResourceGroup"
location = "westus"
}
test.tf
ファイルを保存し、terraform init
コマンドを実行
このコマンドを実行することによってAzureリソースグループを作成するために必要なAzureモジュールがダウンロードされます
terraform plan
terraform plan
コマンドは、作成したテンプレートに誤りが無いかと、テンプレートを適用した結果意図したリソースが作成されるか(実行計画)を確認するためのコマンドになります
$ terraform plan
terraform apply
terraform plan
の結果、問題ないことが確認できたら、実際にリソースグループを作成していきます。
$ terraform apply
実行結果
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
+ azurerm_resource_group.rg
id: <computed>
location: "westus"
name: "testResourceGroup"
tags.%: <computed>
azurerm_resource_group.rg: Creating...
location: "" => "westus"
name: "" => "testResourceGroup"
tags.%: "" => "<computed>"
azurerm_resource_group.rg: Creation complete after 1s
できでる〜〜
今回は
- Terraformのインストール
- Azrue資格情報の構成
- Azureリソースグループの作成
を行いました。次はAzure VMを作成していきます!
ありがとうございました!
参考
https://docs.microsoft.com/ja-jp/azure/virtual-machines/linux/terraform-install-configure
https://www.terraform.io/docs/providers/azurerm/authenticating_via_azure_cli.html