如何使用 Terraform 在 GCP 上建立外部和內部的區域 IP 地址

更新 發佈閱讀 7 分鐘


raw-image

👨‍💻 簡介

這篇文章將會說明如何快速在 Google Cloud Platform 上使用 Terraform 建立外部和內部的區域 IP 。

前提條件

  • Google Cloud Platform (GCP) 帳號: 確保有一個有效的 GCP 帳號。
  • 安裝 Terraform: 還沒安裝可以參考 Terraform 安裝指南 。
  • 基礎 Terraform 知識: 瞭解基本的 Terraform 命令和概念,如果需要,可參考 Terraform 入門指南

🎯setup

1:建立 provider.tf

定義 GCP Provider 和所需的 Terraform 版本。

terraform {
required_providers {
google = {
source = "hashicorp/google"
version = ">=4.0"
}
}
}

provider "google" {
project = "project-id"
region = "asia-east1"
}

2:建立 main.tf

在此檔案中定義外部和內部 IP 地址資源。

  • External IP
resource "google_compute_address" "external_ip" {
name = "external-region-ip"
region = "asia-east1"
address_type = "EXTERNAL"
network_tier = "PREMIUM"
labels = {
"dept" = "devops",
"env" = "dev",
"type" = "external"
}
}
  • Internal IP
resource "google_compute_address" "internal_ip" {
name = "internal-region-ip"
region = "asia-east1"
address_type = "INTERNAL"
subnetwork = "default"
ip = "10.140.0.5"
labels = {
"dept" = "devops",
"env" = "dev",
"type" = "internal"
}
}

參數介紹

  • name:ip name
  • region:ip region
  • address_type:建立的網路類型,分為內網 (Internal) 以及外網 (External)
  • network_tier:使用的網路等級,僅限外網使用
  • ip:指定內網 IP
  • labels:使用的 label,有助於資源分類和管理。

3:初始化 Terraform

terraform init

4:執行 Dry Run

terraform plan

5:部署

terraform apply

🛠️模組化

1. 改寫main.tf

resource "google_compute_address" "internal_ip" {
name = var.name
region = var.region
address_type = var.address_type
subnetwork = var.subnetwork
address = var.address
labels = var.labels
}

2. 定義變數

觀察一下哪些欄位是經常替換的,將經常變更的欄位提取為變數以提高靈活性

variable "name" {
description = "The name of the resource"
type = string
}

variable "region" {
description = "The region of the resource"
type = string
}

variable "address_type" {
description = "The address type"
type = string
}

variable "subnetwork" {
description = "The subnetwork"
type = string
}

variable "address" {
description = "The IP address"
type = string
}

variable "labels" {
description = "The labels for the resource"
type = map(string)
}

3. 模組化

建立名為 compute_address的資料夾並建立一份 module.tf

module "google_compute_address" {
source = "../"

name = "internal-region-ip"
region = "asia-east1"
address_type = "EXTERNAL"
subnetwork = "default"
address = "10.140.0.5"
labels = {
"dept" = "devops",
"env" = "dev",
"type" = "internal"
}
}

source的部分會去套用到上一層的 main.tf裡,並使用定義好的變數

4. 部署

進入到compute_address 資料夾進行部署

資源刪除

部署完成後,如果需要清理資源,可執行:

terraform destroy

📚Reference

留言
avatar-img
留言分享你的想法!
avatar-img
Alan的開發者天地
19會員
83內容數
golang
你可能也想看
Thumbnail
雙11於許多人而言,不只是單純的折扣狂歡,更是行事曆裡預定的,對美好生活的憧憬。 錢錢沒有不見,它變成了快樂,跟讓臥房、辦公桌、每天早晨的咖啡香升級的樣子! 這次格編突擊辦公室,也邀請 vocus「野格團」創作者分享掀開蝦皮購物車的簾幕,「加入購物車」的瞬間,藏著哪些靈感,或是對美好生活的想像?
Thumbnail
雙11於許多人而言,不只是單純的折扣狂歡,更是行事曆裡預定的,對美好生活的憧憬。 錢錢沒有不見,它變成了快樂,跟讓臥房、辦公桌、每天早晨的咖啡香升級的樣子! 這次格編突擊辦公室,也邀請 vocus「野格團」創作者分享掀開蝦皮購物車的簾幕,「加入購物車」的瞬間,藏著哪些靈感,或是對美好生活的想像?
Thumbnail
雙11購物節準備開跑,蝦皮推出超多優惠,與你分享實際入手的收納好物,包括貨櫃收納箱、真空收納袋、可站立筆袋等,並分享如何利用蝦皮分潤計畫,一邊購物一邊賺取額外收入,讓你買得開心、賺得也開心!
Thumbnail
雙11購物節準備開跑,蝦皮推出超多優惠,與你分享實際入手的收納好物,包括貨櫃收納箱、真空收納袋、可站立筆袋等,並分享如何利用蝦皮分潤計畫,一邊購物一邊賺取額外收入,讓你買得開心、賺得也開心!
Thumbnail
分享個人在新家裝潢後,精選 5 款蝦皮上的實用家居好物,包含客製化層架、MIT 地毯、沙發邊桌、分類垃圾桶及寵物碗架,從尺寸、功能到價格都符合需求,並提供詳細開箱心得與購買建議。
Thumbnail
分享個人在新家裝潢後,精選 5 款蝦皮上的實用家居好物,包含客製化層架、MIT 地毯、沙發邊桌、分類垃圾桶及寵物碗架,從尺寸、功能到價格都符合需求,並提供詳細開箱心得與購買建議。
Thumbnail
本文介紹如何在GCP上使用Terraform建立CloudFlare DNS解析和模組化。通過閱讀本文,可以瞭解如何設置Terraform建立CloudFlare DNS解析以及取得GCS上的Terraform state file並透過Terraform建立CloudFlare DNS解析的步驟。
Thumbnail
本文介紹如何在GCP上使用Terraform建立CloudFlare DNS解析和模組化。通過閱讀本文,可以瞭解如何設置Terraform建立CloudFlare DNS解析以及取得GCS上的Terraform state file並透過Terraform建立CloudFlare DNS解析的步驟。
Thumbnail
在 Google Cloud 上保留靜態 IP 位址但未使用時,會按小時收取費用。使用 Cloud Functions 和 Cloud Scheduler 來識別和清理浪費的雲端資源,可以自動化的減少浪費的發生
Thumbnail
在 Google Cloud 上保留靜態 IP 位址但未使用時,會按小時收取費用。使用 Cloud Functions 和 Cloud Scheduler 來識別和清理浪費的雲端資源,可以自動化的減少浪費的發生
Thumbnail
👨‍💻簡介 這篇文章將會說明如何快速在 Google Cloud Platform 上使用 Terraform 建立外部與內部的全球 IP 。 前提條件 Google Cloud Platform (GCP) 帳號: 確保有一個有效的 GCP 帳號。 安裝Terraform: 還沒安裝可
Thumbnail
👨‍💻簡介 這篇文章將會說明如何快速在 Google Cloud Platform 上使用 Terraform 建立外部與內部的全球 IP 。 前提條件 Google Cloud Platform (GCP) 帳號: 確保有一個有效的 GCP 帳號。 安裝Terraform: 還沒安裝可
Thumbnail
👨‍💻 簡介 這篇文章將會說明如何快速在 Google Cloud Platform 上使用 Terraform 建立外部和內部的區域 IP 。
Thumbnail
👨‍💻 簡介 這篇文章將會說明如何快速在 Google Cloud Platform 上使用 Terraform 建立外部和內部的區域 IP 。
Thumbnail
👨‍💻簡介 terraform在每次執行terraform plan或terraform apply時,是如何知道應該要管理哪些資源? 其實就是透過在每次執行terraform時,將建立或要變更的資源都記錄在terraform.state這份狀態檔,預設檔案使用JSON格式。
Thumbnail
👨‍💻簡介 terraform在每次執行terraform plan或terraform apply時,是如何知道應該要管理哪些資源? 其實就是透過在每次執行terraform時,將建立或要變更的資源都記錄在terraform.state這份狀態檔,預設檔案使用JSON格式。
Thumbnail
最近在研究terraform與ansible的整合,不過還在摸索中,機器的版控對於維運來講相對重要,這時候有terraform的出現,在建立機器後會隨之產生機器的狀態檔,而ansible則是在建立好機器後幫助我完成我所需的機器相關設定 這是一款terraform結合ansible的小玩具,在gcp環
Thumbnail
最近在研究terraform與ansible的整合,不過還在摸索中,機器的版控對於維運來講相對重要,這時候有terraform的出現,在建立機器後會隨之產生機器的狀態檔,而ansible則是在建立好機器後幫助我完成我所需的機器相關設定 這是一款terraform結合ansible的小玩具,在gcp環
Thumbnail
服務上雲後有時會需要固定一組IP主動對外發出連線,這時要考慮安全性與獨立性的問題,在爬文後發現了GCP推出的Cloud NAT,本篇文章簡單介紹一下這個工具的使用。 什麼是Cloud NAT GCP Cloud NAT是GCP上的一種服務,它提供了一個管理和部署Google Cloud上的NAT(N
Thumbnail
服務上雲後有時會需要固定一組IP主動對外發出連線,這時要考慮安全性與獨立性的問題,在爬文後發現了GCP推出的Cloud NAT,本篇文章簡單介紹一下這個工具的使用。 什麼是Cloud NAT GCP Cloud NAT是GCP上的一種服務,它提供了一個管理和部署Google Cloud上的NAT(N
Thumbnail
本篇將會記錄如何在GCP上建立的Ubuntu虛擬機,進行Wordpress的環境準備與網站安裝。 本篇將會以架式環境與安裝 WordPress 為主,虛擬機平台的註冊與架設將不會太過著重,未來若有機會再進行記錄。 首先需要準備的軟體有 有沒有比較好或是其他區別,在這邊不做討論。
Thumbnail
本篇將會記錄如何在GCP上建立的Ubuntu虛擬機,進行Wordpress的環境準備與網站安裝。 本篇將會以架式環境與安裝 WordPress 為主,虛擬機平台的註冊與架設將不會太過著重,未來若有機會再進行記錄。 首先需要準備的軟體有 有沒有比較好或是其他區別,在這邊不做討論。
Thumbnail
首先要先去Google Cloud Platform申請一個帳號,愉快的點下啟用
Thumbnail
首先要先去Google Cloud Platform申請一個帳號,愉快的點下啟用
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News