---
schema_version: "1"
id: c7ef1e630b1b6eeaf9dc3abf75d1e263515674c55c1008a868e6632c1b9e4328
title: 附录 - AWS 部署工具箱
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/guides/enterprise-deployment/edg_part_app-aws.md
canonical_url: https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part_app-aws.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 11d69e15117453900b7be3ed2a5c9c4e0c580660f7ff9fa217e1cb9ad912efa7
description: AWS deployment toolbox with the TabDeploy4EDG script and Terraform automation examples.
---
[跳转到主要内容](#main-content)

# 附录 - AWS 部署工具箱

**注意**：Tableau 不再更新《Enterprise 部署指南》。尽管我们仍然推荐将此处描述的参考架构作为 AWS 中 Tableau Server 的有效部署模型，但自上次更新以来，特定的配置过程可能已更改。请始终将这些步骤与最新的 [Tableau Server 帮助](https://help.tableau.com/current/server/zh-cn/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/current/guides/enterprise-deployment/zh-cn/edg_part4.htm)中描述的四节点 Tableau 部署。如果您遵循本指南中描述的示例 AWS/Linux 实施，那么您可能能够运行 TabDeploy4EDG。

**要求。**若要运行该脚本，您必须根据[第 3 部分 - 准备 Tableau Server 企业部署](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part3.htm)中的示例实现来准备和配置 AWS 环境：

- VPC、子网和安全组已按所述方式进行配置。IP 地址不必与示例实现中显示的地址相匹配。
- 运行最新、更新的 AWS Linux 2 版本的四个 EC2 实例
- PostgreSQL 已安装并已按照[安装、配置 PostgreSQL 和创建 PostgreSQL 的 tar 备份](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part4.htm#Install,) 中所述方式进行配置。
- 步骤 1 tar 备份文件位于安装了 PostgreSQL 的 EC2 实例上，如[进行 PostgreSQL 步骤 1 tar 备份](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part4.htm#Take)中所述。
- 将运行 Tableau Server 部署的节点 1 的 EC2 实例已配置为与 PostgreSQL 通信，如[第 4 部分 - 安装并配置 Tableau Server](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/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 中的堡垒主机](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/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 企业部署](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/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 企业部署](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part3.htm)中指定的 VPC。

![Tableau Server 的 AWS 架构图。](/tableau/current/zh-cn/guides/enterprise-deployment/zh-cn/Img/edg-vpc-terraform.png)

本部分中的示例 Terraform 模板和支持内容：

- 按上文所示方式创建具有弹性 IP 地址、两个可用区和子网组织的 VPC（IP 地址不同）
- 创建 Bastion、Public、Private 和 Data 安全组。
- 在安全组上设置大多数入口和出口规则。在 Terraform 运行后，您将需要编辑安全组。
- 创建以下 EC2 主机（每个都运行 AWS Linux2）：堡垒、代理 1 代理 2、Tableau 节点 1、Tableau 节点 2、Tableau 节点 3、Tableau 节点 4。
- 未创建 PostgreSQL 的 EC2 主机。您必须在 Data 安全组中手动创建 EC2，然后按照[安装、配置 PostgreSQL 和创建 PostgreSQL 的 tar 备份](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part4.htm#Install,)中所述安装和配置 PostgreSQL。

### 要求

- 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 - 准备环境

#### A. 下载并安装 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 资源管理器中找到该文件，右键单击它，然后选择“属性”s。导航到“安全”选项卡，然后单击“高级”。
    - 将所有者更改为您，禁用继承并删除所有权限。授予自己完全控制权，然后单击“保存”。将文件标记为只读。
4. 创建 ssh 公钥。这是稍后您将复制到 Terraform 中的密钥。
    
    ssh-keygen -y -f my-key.pem >my-key-ssh.pub

#### C. 下载项目并添加 state 目录

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

Update `user.owner` to your name or alias. The value you enter here will be used for the "Name" tag in AWS on the resources that Terraform creates.

#### 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"
 }

默认情况下，将为 VPC DNS 域名指定子域 `tableau`。若要更改此设置，请更新 `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

从同一目录中，运行 plan 命令：

terraform plan

该命令可以多次运行。根据需要运行多次以修复错误。当此命令运行无错误时，继续执行下一步。

#### C. 应用 Terraform

从同一目录中，运行 apply 命令：

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 - 连接到堡垒

所有命令行连接都通过 TCP 22（SSH 协议）上的堡垒主机进行。

1. 在 AWS 中，在 bastion 安全组中创建一个入站规则（**“AWS”**\>**“Security Groups”（安全组）**\>**“Bastion SG”（堡垒 SG）**\>**“Edit inbound rules”（编辑入站规则）**），并创建一个规则以允许来自将运行终端命令的 IP 地址或子网掩码的 SSH (TCP 22) 连接.
    
    可选：您可能会发现，在部署期间允许在 Private 组和 Public 组中的 EC2 实例之间复制文件很有帮助。创建入站 SSH 规则：
    
    - Private：创建入站规则以允许来自 Public 的 SSH
    - Public：创建入站规则以允许来自 Private 和 Public 的 SSH
2. 使用您在步骤 1.B 中创建的 pem 密钥连接到堡垒主机：
    
    **在 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`
    
    For example: `ssh -A ec2-user@3.15.12.112`.
    
    **在 Windows 上，使用 PuTTY 和 Pageant：**
    
    1. 从 pem 密钥创建 ppk：使用 PuTTY 密钥生成器。打开您在步骤 1.B 中创建的 pem 密钥。密钥导入后，点击**“Save private key”（保存私钥）**。这将创建一个 ppk 文件。
    2. 在 PuTTY 中 - 打开配置并进行以下更改：
        
        - “Sessions”（会话）>“Host Name”（主机名）：添加堡垒机的 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 企业部署](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part3.htm)中所述部署 EC2 实例。
    
    然后安装、配置 PostgreSQL 并创建 PostgreSQL 的 tar 备份，如[第 4 部分 - 安装并配置 Tableau Server](https://help.tableau.com/current/guides/enterprise-deployment/zh-cn/edg_part4.htm)中所述。
    
    ### 步骤 6 -（可选）运行 DeployTab4EDG
    
    TabDeploy4EDG 会自动执行第 4 部分中描述的四节点 Tableau 部署的实施。请参见[TabDeploy4EDG 自动安装脚本](#EDGSetup)。