Terraform-provider-archive
terraform archive 是一個 HashiCorp 公司提供的一個 Provider,可以讓使用者在 Terraform 中,將指定的目錄或檔案打包(例如 zip )。
雲端上運行的無伺服器計算服務非常熱門,著名的如 AWS Lambda 、 Azure Functions、GCP Cloud Functions,也常使用 terraform 工具來進行部屬。這時再使用 terraform archive ,方便地把例如 python code 打包成 zip,簡便地部署到服務上。
terraform archive 使用起來十分簡單,提供了一個 Terraform Data Source ,可以把:
- 內容(content)
- 單個 file 、或多個 files
- directory
以上列出的範例,都可以方便地做成一個 archive 檔案。下面給一個簡單的範例,把 archive 傳到 google storage bucket 上 :
resource "random_id" "code" {
byte_length = 8
}
resource "google_storage_bucket" "test" {
project = var.project_id
name = "test-${random_id.code.hex}"
location = var.bucket_location
}
resource "google_storage_default_object_acl" "policy" {
bucket = google_storage_bucket.test.name
role_entity = [
"READER:allUsers",
]
}
data "archive_file" "test" {
type = "zip"
source_dir = "${path.module}/source/test"
output_path = "${path.module}/source/test.zip"
}
resource "google_storage_bucket_object" "source" {
name ="test.zip"
source = data.archive_file.test.output_path
bucket = google_storage_bucket.test.name
}