---
schema_version: "1"
id: da3396f95ac8273a2972e44ec019a904b4ce0ca5e7e0ef751531416e8edce0ed
title: 附錄 - AWS 部署工具箱
collection: tableau
version: next
locale: zh-tw
portal_url: https://docs.salesforce.com/tableau/next/zh-tw/guides/enterprise-deployment/edg_part_app-aws.md
canonical_url: https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part_app-aws.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 3108034bf38571c4566ecb56e13e7cd2c0654b0c2ba2be61be1e47d50c29408e
description: AWS deployment toolbox with the TabDeploy4EDG script and Terraform automation examples.
---
[跳至主要內容](#main-content)

# 附錄 - AWS 部署工具箱

**附註**：Tableau不再更新《企業部署指南》。儘管我們仍然推薦將此處描述的參考架構作為 AWS 中 Tableau Server 的有效部署模型，但自上次更新以來，具體的設定過程可能已變更。請始終將這些步驟與最新的 [Tableau Server 說明](https://help.tableau.com/current/server/zh-tw/get_started_server.htm) 文件進行交叉引用，以確保準確無誤。

本主題會介紹在 AWS 中進行部署時參考架構的工具和備用部署選項。具體而言，本主題會介紹如何自動化整個 EDG 中所述的範例 AWS 部署。

## TabDeploy4EDG 自動安裝指令碼

[TabDeploy4EDG 指令碼](https://help.tableau.com/samples/en-us/edg/tabdeploy4edg.txt)會自動實作[第 4 部分 - 安裝並設定 Tableau Server](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part4.htm) 中所述的四節點 Tableau 部署。如果遵循本指南中所述的範例 AWS 實作，就能夠執行 TabDeploy4EDG。

**要求。**要執行該指令碼，必須根據 [第 3 部分 - 準備 Tableau Server Enterprise 部署](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part3.htm)中的範例實作來準備和設定 AWS 環境：

- VPC、子網路和安全性群組已按所述進行設定。IP 位址不必與範例實作中顯示的位址相符。
- 四個 EC2 執行個體，正在執行最新的已更新 AWS Linux 2 版本
- PostgreSQL 已安裝，並已如[安裝、設定 PostgreSQL 和建立 tar 備份](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part4.htm#Install,) 中所述進行設定。
- 步驟 1 的 tar 備份文件位於安裝 PostgreSQL 的 EC2 執行個體中，如[使用 PostgreSQL 步驟 1 tar 備份](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part4.htm#Take)中所述。
- 執行 Tableau Server 部署節點 1 的 EC2 執行個體已設定為與 PostgreSQL 通訊，如[第 4 部分 - 安裝並設定 Tableau Server](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part4.htm#Configur)中所述。
- 您已使用來自堡壘主機的 SSH 工作階段登入到每個 EC2 執行個體。

該指令碼大約需要 1.5-2 小時來安裝和設定四個 Tableau 伺服器。該指令碼會根據參考架構的指定設定來設定 Tableau。該指令碼會執行以下動作：

- 若您指定 PostgreSQL 主機 tar 檔案的路徑，則會還原 PostgreSQL 主機的第 1 階段備份。
- 刪除所有節點上的現有 Tableau 安裝。
- 在所有節點上執行 `sudo yum update`。
- 將 Tableau rpm 套件下載並複製到每個節點。
- 將相依項下載並安裝到每個節點。
- 建立 `/app/tableau_server`，並在所有節點上安裝套件。
- 使用本機身分存放區安裝節點 1，並使用 PostgreSQL 設定外部存放庫。
- 執行節點 2 - 節點 4 的啟動程序安裝和初始設定。
- 刪除啟動程序檔案和 TabDeploy4EDG 的設定檔案。
- 根據參考架構規格跨 Tableau 叢集設定服務。
- 驗證安裝並傳回每個節點的狀態。

**將指令碼下載並複制到堡壘主機**

1. 從 [TabDeploy4EDG 範例頁面](https://help.tableau.com/samples/en-us/edg/tabdeploy4edg.txt)複製指令碼，並將程式碼貼上到名為 `TabDeploy4EDG` 的檔案中。
2. 將檔案儲存到作為堡壘主機的 EC2 主機上的主目錄。
3. 執行以下命令，變更檔案的模式以使其可執行：
    
     sudo chmod +x TabDeploy4EDG

**執行 TabDeploy4EDG**

TabDeploy4EDG 必須從堡壘主機執行。編寫該指令碼時已假設該指令碼將在 ssh 轉送代理程式內容中執行，如[範例：連線到 AWS 中的 Bastion 主機](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part3.htm#Example:)中所述。若未在 ssh 轉送代理程式內容中執行，那麼在整個安裝過程中將提示您輸入密碼。

1. 建立、編輯和儲存登錄檔（`registration.json` ）。該檔案必須為格式正確的 json 檔案。複製並自訂以下範本：
    
    {
    	"zip" : "97403",
    	"country" : "USA",
    	"city" : "Springfield",
    	"last\_name" : "Simpson",
    	"industry" : "Energy",
    	"eula" : "yes",
    	"title" : "Safety Inspection Engineer",
    	"phone" : "5558675309",
    	"company" : "Example",
    	"state" : "OR",
    	"department" : "Engineering",
    	"first\_name" : "Homer",
    	"email" : "homer@example.com"
    }
2. 執行以下命令，產生範本設定檔案：
    
    ./TabDeploy4EDG -g edg.config
3. 開啟設定檔案進行編輯：
    
    sudo nano edg.config              
    
    至少必須新增每個 EC2 主機的 IP 位址、登錄檔的檔案路徑以及有效的授權金鑰。
4. 完成設定檔案的編輯後，儲存然後關閉。
5. 要執行 TabDeploy4EDG，請執行以下命令：
    
    ./TabDeploy4EDG -f edg.config

## 範例：使用 Terraform 自動化 AWS 基礎架構部署

本區段介紹如何設定和執行 Terraform 以在 AWS 中部署 EDG 參考架構。此處提供的範例 Terraform 設定部署了一個 AWS VPC，其中包含[第 3 部分 - 準備 Tableau Server Enterprise 部署](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part3.htm)中描述的子網域、安全性群組和 EC2 執行個體。

Tableau 範例網站上提供了範例 Terraform 範本，網址為[https://help.tableau.com/samples/en-us/edg/edg-terraform.zip](https://help.tableau.com/samples/en-us/edg/edg-terraform.zip) 。必須為您的組織設定和自訂這些範本。本區段中提供的設定內容描述了必須自訂部署所需的最少範本變更。

### 目標

此處提供的 Terraform 範本和內容旨在提供工作範例，使您能夠在開發測試環境中快速部署 EDG。

我們已盡最大努力測試和記錄範例 Terraform 部署。但是，使用 Terraform 在生產環境中部署和維護 EDG 需要 Terraform 專業知識，這超出了本範例的範圍。Tableau 不為此處記錄的範例 Terraform 解決方案提供支援。

### 結束狀態

按照本區段中的過程在 AWS 中設定 VPC，該 VPC 的功能等同於[第 3 部分 - 準備 Tableau Server Enterprise 部署](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part3.htm)中指定的 VPC。

![Tableau Server 的 AWS 架構圖。](/tableau/next/zh-tw/guides/enterprise-deployment/zh-tw/Img/edg-vpc-terraform.png)

本區段中的範例 Terraform 範本和支援內容：

- 如上所示建立彈性 IP 位址、兩個可用區域和子網域組織的 VPC（IP 位址不同）
- 建立 Bastion、Public、Private 和 Data 安全性群組。
- 在安全性群組上設定大多數入口和出口規則。在 Terraform 執行後，將需要編輯安全性群組。
- 建立以下 EC2 主機（每個都執行 AWS Linux2）：bastion、proxy 1 proxy 2、Tableau 節點 1、Tableau 節點 2、Tableau 節點 3、Tableau 節點 4。
- 未建立 PostgreSQL 的 EC2 主機。必須在資料安全性群組中手動建立 EC2，然後按照[安裝、設定 PostgreSQL 和建立 tar 備份](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part4.htm#Install,)。

### 需求

- AWS 帳戶 - 必須有權存取允許建立 VPC 的 AWS 帳戶。
- 如果從 Windows 電腦執行 Terraform，則需要安裝 AWS CLI。
- 您的 AWS 帳戶中可用的彈性 IP 位址。
- 在 AWS Route 53 中註冊的網域。Terraform 將在 Route 53 中建立 DNS 區域和相關的 SSL 憑證。因此，執行 Terraform 的設定檔也必須在 Route 53 中具有適當的權限。

### 開始之前

- 此過程中的命令列範例適用於帶有 Apple OS 的終端。要在 Windows 上執行 Terraform，可能需要根據需要調整帶有檔案路徑的命令。
- Terraform 專案由許多文字設定檔案（.tf 檔案副檔名）組成。可以自訂這些檔案來設定 Terraform。如果沒有強大的文字編輯器，請安裝 Atom 或 Text++。
- 如果要與他人共用 Terraform 專案，我們建議將專案存放在 Git 中以進行變更管理。

### 步驟 1 - 準備環境

#### 下載並安裝 Terraform

[https://www.terraform.io/downloads](https://www.terraform.io/downloads)

#### B. 產生公私鑰配對

這是您將用於存取 AWS 和產生的 VPC 環境的金鑰。執行 Terraform 時，將包括公鑰。

開啟命令提示字元並執行以下命令：

1. Create a private key. For example, `my-key.pem`:
    
    openssl genrsa -out my-key.pem 1024
2. 建立公鑰。此金鑰格式不用於 Terraform。稍後將在此過程中將其轉換為 ssh 金鑰：
    
    openssl rsa -in my-key.pem -pubout > my-key.pub
3. 設定私鑰權限：
    
    sudo chmod 0600 my-key.pem
    
    在 Windows 上設定權限：
    
    - 在 Windows 資源管理器中找到該檔案，右鍵點一下它，然後選取「屬性」。巡覽到「安全性」索引標籤，然後點一下「進階」。
    - 將擁有者變更為您，停用繼承並刪除所有權限。授予自己「完全控制權」，然後點一下「儲存」。將檔案標記為唯讀。
4. 建立 ssh 公鑰。這是稍後將複製到 Terraform 中的金鑰。
    
    ssh-keygen -y -f my-key.pem >my-key-ssh.pub

#### C. 下載專案並新增狀態目錄

1. 下載並解壓縮 [EDG Terraform 專案](https://help.tableau.com/samples/en-us/edg/edg-terraform.zip)並將它們儲存到本機電腦。解壓縮下載後，您將擁有一個頂層目錄、edg-terraform 和一系列子目錄。
2. 建立一個名為 `state`，作為頂層 `edg-terraform` 目錄的同儕目錄。

### 步驟 2：自訂 Terraform 範本

必須自訂 Terraform 範本以符合 AWS 和 EDG 環境。此處的範例提供大多數組織需要進行的最少範本自訂。特定環境可能需要其他自訂。

本區段按範本名稱組織。

在繼續執行_步驟 3 - 執行 Terraform_ 之前，請務必儲存所有變更。

#### versions.tf

There are three instances of `versions.tf` files where the `required_version` field must match the version of terraform.exe you're using. Check the version of terraform (`terraform.exe -version`) and update each of the following instances:

- `edg-terraform\versions.tf`
- `edg-terraform\modules\proxy\versions.tf`
- `edg-terraform\modules\tableau_instance\versions.tf`

#### key-pair.tf

1. 開啟步驟 1B 中產生的公鑰並複製該金鑰：
    
     less my-key-ssh.pub
    
    Windows：複製公鑰的內容。
2. 將公鑰字串複製到 public\_key 參數中，例如：
    
    resource "aws\_key\_pair" "tableau" {
    key\_name = "my-key"
    public\_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQ (truncated example) dZVHambOCw=="

Ensure that the `key_name` value is unique in the datacenter or `terraform apply` will fail.

#### locals.tf

將 `user.owner` 更新為您的名稱或別名。您在此處輸入的值將用於 Terraform 建立的資源上 AWS 中的「名稱」標記。

#### providers.tf

1. 根據組織的要求新增標籤。例如：
    
    default\_tags {
      tags = {
          
       "Application" = "tableau",
       "Creator" = "alias@example.com",
       "DeptCode" = "8675309",
       "Description" = "EDG",
       "Environment" = "test",
       "Group" = "itcloud@example.com"
      }
    }
2. If using `provider`, comment out the `assume_role` lines:
    
    /\* assume\_role {
    role\_arn     = "arn:aws:iam::310946706895:role/terraform-backend"
    session\_name = "terraform"
    }\*/

#### elb.tf

Under `'resource "aws_lb" "tableau" {'` choose a unique value to use for `name` and `tags.Name`.

If another AWS load balancer has the same name in the datacenter, then `terraform apply` will fail.

Add `idle_timeout`:

resource "aws\_lb" "tableau" {
name                       = "edg-again-alb"
load\_balancer\_type         = "application"
subnets                    = \[for subnet in aws\_subnet.public : subnet.id\]
security\_groups            = \[aws\_security\_group.public.id\]
drop\_invalid\_header\_fields = true
idle\_timeout               = 400
tags = {
Name = "edg-again-alb"
}
			}

#### variables.tf

更新根網域名稱。此名稱必須與在 Route 53 中註冊的網域相符。

variable "root\_domain\_name" {
 default = "example.com"
 }

預設情況下，子網域，`tableau`，指定為 VPC DNS 網域名稱。要變更此設定，請更新 `subdomain`：

variable "subdomain" {
 default = "tableau"
}

#### modules/tableau\_instance/ec2.tf

There are two ec2.tf files in the project. This customization is for the Tableau instance of the ec2.tf in the directory: `modules/tableau_instance/ec2.tf`.

- 如果需要，請新增標籤 blob：
    
    tags = { 
     "Name" : var.ec2\_name,
     "user.owner" = "ALIAS",
     "Application" = "tableau",
     "Creator" = "ALIAS@example.com",
     "DeptCode" = "8675309",
     "Description" = "EDG",
     "Environment" = "test",
     "Group" = "itcloud@example.com"
     }
    }
- 根據需要，可選取更新存放區以處理資料要求：
    
    根卷：
    
    root\_block\_device {
     volume\_size = 100
     volume\_type = "gp3"
    }
    
    應用卷：
    
    resource "aws\_ebs\_volume" "tableau" {
     availability\_zone = data.aws\_subnet.tableau.availability\_zone
     size              = 500
     type              = "gp3"
    }

### 步驟 3 - 執行 Terraform

#### A. 初始化 Terraform

在終端中，切換到 `edg-terraform` 目錄並執行以下命令：

terraform init

如果初始化成功，請繼續下一步。如果初始化失敗，請按照 Terraform 輸出中的說明進行動作。

#### B. 規劃 Terraform

在同一目錄中，執行計劃命令：

terraform plan

該命令可以多次執行。根據需要執行多次以修復錯誤。當此命令執行無誤時，繼續下一步。

#### C. 套用 Terraform

從同一目錄執行應用命令：

terraform apply

Terraform will prompt you to verify deployment, type `Yes`.

#### 可選：銷毀 Terraform

可以執行 destroy 命令銷毀整個 VPC：

terraform destroy

destroy 命令只會銷毀它建立的內容。如果對 AWS 中的某些物件（即安全性群組、子網域等）進行手動變更，則 `destroy` 將失敗。要退出失敗/當機的銷毀動作，請輸入 `Control + C`。然後，必須手動將 VPC 清理到 Terraform 最初建立它時的狀態。然後可以執行 `destroy` 命令。

### 步驟 4 - 連線到 bastion

所有命令列連線都通過 TCP 22（SSH 協定）上的 bastion 主機。

1. 在 AWS 中，在 bastion 安全性群組中建立輸入規則（**「AWS」**\>**「安全性群組」**\>**「Bastion SG」**\>**「編輯輸入規則」**）並建立規則以允許來自將執行終端命令的 IP 位址或子網域遮罩的 SSH (TCP 22) 連線.
    
    可選：您可能會發現在部署期間允許在「私人」和「公開」群組中的 EC2 執行個體之間複製檔案很有幫助。建立輸入 SSH 規則：
    
    - 私有：建立輸入原則以允許來自「公開」的 SSH
    - Public：建立輸入原則以允許來自「私人」和來自「公開」的 SSH
2. 使用在步驟 1.B 中建立的 pem 金鑰連線到 bastion 主機：
    
    **在 Mac 終端上：**
    
    從存放 pem 金鑰的目錄執行以下命令：
    
    ssh-add —apple-use-keychain <keyName>.pem
    
    If you get a warning about private key being accessible by others, then run this command: `chmod 600 <keyName.pem>` and then run the `ssh-add` command again.
    
    Connect to the bastion host with this command: `ssh -A ec2-user@IPaddress`
    
    例如： `ssh -A ec2-user@3.15.12.112`。
    
    **在使用 PuTTY 和 Pageant 的 Windows 上：**
    
    1. 從 pem 金鑰建立 ppk：使用 PuTTY 金鑰產生器。載入在步驟 1.B 中建立的 pem 金鑰。金鑰匯入後，點一下**「儲存私鑰」**。這將建立一個 ppk 檔案。
    2. 在 PuTTY 中 - 開啟設定並進行以下變更：
        
        - Sessions>Host Name：新增 bastion 主機的IP地址。
        - Sessions>Port: 22
        - Connection>Data>Auto-login username: ec2-user
        - Connection>SSH>Auth>Allow agent forwarding
        - Connection>SSH>Auth> 對於私鑰，點一下 Browse 並選取剛剛建立的 .ppk 檔案。
    3. 安裝 Pageant 並將 ppk 載入到應用程式中。
    
    ### 步驟 5：安裝 PostgreSQL
    
    Terraform 範本不安裝 PostgreSQL 用作外部存放庫。但是，會建立關聯的安全性群組和子網域。如果您在執行 PostgreSQL 的 EC2 執行個體上安裝外部存放庫，則必須按照[第 3 部分 - 準備 Tableau Server Enterprise 部署](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part3.htm)中所述部署 EC2 執行個體。
    
    然後安裝、設定和 tar 備份 PostgreSQL，如[第 4 部分 - 安裝並設定 Tableau Server](https://help.tableau.com/v0.0/guides/enterprise-deployment/zh-tw/edg_part4.htm)中所述。
    
    ### 步驟 6 -（可選）執行 DeployTab4EDG
    
    TabDeploy4EDG 指令碼自動執行步驟 4 中描述的四節點 Tableau 部署。請參見[TabDeploy4EDG 自動安裝指令碼](#EDGSetup)。