はじめに
テスト目的でTerraformとAzure Blob Storageで静的Webサイトをホストすることがあったので備忘録的に残します。
Webサイトをホストする必要がなくシンプルにAzure Blob Storage作成したい場合は下記の記事をご参照ください。
とりあえずTerraformでAzure Blob Storageをつくってみる
方法
1. まず適当なhtmlファイルを用意します。
# サンプル <!DOCTYPE html> <html> <head> <title>Hello, World!</title> </head> <body> <h1>Hello, Wold!</h1> </body> </html>
ファイル名をindex.html
として保存してください。
2. 次にTerraformのファイルを以下の内容で作成します。
resource "random_integer" "test" { min = 1 max = 100 } resource "random_pet" "test" { length = 1 separator = "" } resource "azurerm_resource_group" "test" { name = "blobstorage-test-rg" location = "japaneast" } resource "azurerm_storage_account" "test" { name = "${random_pet.test.id}${random_integer.test.result}" resource_group_name = azurerm_resource_group.test.name location = azurerm_resource_group.test.location account_tier = "Standard" account_kind = "StorageV2" account_replication_type = "LRS" static_website { index_document = "index.html" } } resource "azurerm_storage_blob" "test" { name = "index.html" storage_account_name = azurerm_storage_account.test.name storage_container_name = "$web" type = "Block" content_type = "text/html" source = "./index.html" }
ファイル名をmain.tf
などにして保存してください。
どのように静的Webサイトを構築しているのか具体的に説明すると、azurerm_storage_account
内のstatic_website
でストレージアカウントの静的webサイトの機能を有効化して、index.html
をインデックスドキュメントとして指定しています。
azurerm_storage_blob
ではストレージアカウントの$web
コンテナにindex.html
をアップロードしています。$web
コンテナは静的Webサイトをホスティングする際の特別なコンテナです。
これらの記述をすることで静的Webサイトを構築することが可能です。
あとは、terraformのコマンドでリソースの作成を行なってください。
terraform init terraform plan -out main.tfplan terraform apply main.tfplan
Blob Storage作成後にURLにアクセスしたい場合は、以下の記述をTerraformのコードに追加してください。
output "website_url" { value = azurerm_storage_account.test.primary_web_endpoint }
必要であれば、Github上にコード全体を載せるのでぜひ参考にしてください。
https://github.com/tkhs1121/terraform-azure-sample/tree/master/blobstorage-website
さいごに
誰かの参考になれば幸いです。