Apéndice: Caja de herramientas de implementación de AWS

Este tema incluye herramientas y opciones de implementación alternativas para la arquitectura de referencia cuando se implementa en AWS. Específicamente, este tema describe cómo automatizar la implementación de AWS de ejemplo que se describe en toda la EDG.

Script de instalación automatizada TabDeploy4EDG

El script TabDeploy4EDG(El enlace se abre en una ventana nueva) automatiza la implementación de la implementación de Tableau de cuatro nodos que se describe en la Paso 4: Instalar y configurar Tableau Server. Si sigue el ejemplo de implementación de AWS que se describe en esta guía, es posible que pueda ejecutar el TabDeploy4EDG.

Requisitos. Para ejecutar el script, debe preparar y configurar el entorno de AWS de acuerdo con la implementación de ejemplo de la Parte 3: preparación para la implementación de Tableau Server Enterprise:

  • La VPC, la subred y los grupos de seguridad se han configurado como se describe. Las direcciones IP no tienen que coincidir con las que se muestran en la implementación de ejemplo.
  • Cuatro instancias EC2 que ejecutan las compilaciones más recientes y actualizadas de AWS Linux 2
  • PostgreSQL está instalado y configurado como se describe en Instalar, configurar y convertir en .tar PostgreSQL .
  • Un archivo de copia de seguridad tar del Paso 1 se encuentra en la instancia EC2 donde está instalado PostgreSQL, como se describe en Realizar una copia de seguridad de tar del paso 1 de PostgreSQL.
  • La instancia EC2 que ejecutará el nodo 1 de la implementación de Tableau Server se ha configurado para comunicarse con PostgreSQL como se describe en Paso 4: Instalar y configurar Tableau Server.
  • Ha iniciado sesión en cada instancia EC2 con una sesión SSH desde el host de Bastion.

El script tarda entre 1,5 y 2 horas en instalar y configurar los cuatro servidores de Tableau. El script configura Tableau según la configuración prescrita de la arquitectura de referencia. El script realiza las siguientes acciones:

  • Restaura la copia de seguridad de la etapa 1 del host de PostgreSQL si especifica una ruta al archivo tar del host de PostgreSQL.
  • Elimina las instalaciones de Tableau existentes en todos los nodos.
  • Ejecuta sudo yum update en todos los nodos.
  • Descarga y copia el paquete rpm de Tableau en cada nodo.
  • Descarga e instala las dependencias de cada nodo.
  • Crea /app/tableau_server e instala el paquete en todos los nodos.
  • Instala el nodo 1 con un almacén de identidades local y configura un repositorio externo con PostgreSQL.
  • Realiza la instalación del archivo de arranque y la configuración inicial del nodo 2-nodo 4.
  • Elimina el archivo de arranque y el archivo de configuración de TabDeploy4EDG.
  • Configura los servicios en el clúster de Tableau de acuerdo con las especificaciones de la arquitectura de referencia.
  • Valida la instalación y devuelve el estado de cada nodo.

Descargar y copiar el script en el host de Bastion

  1. Copie el script de la página de muestras TabDeploy4EDG(El enlace se abre en una ventana nueva) y pegue el código en un archivo llamado TabDeploy4EDG.
  2. Guarde el archivo en el directorio de inicio del host EC2 que actúa como host de Bastion.
  3. Ejecute el siguiente comando para cambiar el modo en el archivo y hacerlo ejecutable:

     sudo chmod +x TabDeploy4EDG

Ejecutar TabDeploy4EDG

TabDeploy4EDG debe ejecutarse desde el host de Bastion. El script se ha escrito asumiendo que se está ejecutando en el contexto del agente de reenvío ssh como se describe en Ejemplo: conectarse al host de Bastion en AWS. Si no está ejecutando el contexto del agente de reenvío ssh, se le solicitarán contraseñas durante todo el proceso de instalación.

  1. Cree, edite y guarde un archivo de registro (registration.json). El archivo debe ser un archivo json con el formato adecuado. Copie y personalice la siguiente plantilla:

    {
    	"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. Ejecute el siguiente comando para generar un archivo de configuración de plantillas:

    ./TabDeploy4EDG -g edg.config              
  3. Abra el archivo de configuración para editar:

    sudo nano edg.config              

    Como mínimo, debe agregar las direcciones IP de cada host EC2, una ruta de acceso al archivo de registro y una clave de licencia válida.

  4. Cuando haya terminado de editar el archivo de configuración, guárdelo y luego ciérrelo.

  5. Para ejecutar TabDeploy4EDG, ejecute el siguiente comando:

    ./TabDeploy4EDG -f edg.config         

Ejemplo: Automatice la implementación de la infraestructura de AWS con Terraform

Esta sección describe cómo configurar y ejecutar Terraform para implementar la arquitectura de referencia de EDG en AWS. El ejemplo de configuración de Terraform que se presenta aquí implementa una AWS VPC con las subredes, los grupos de seguridad y las instancias EC2 que se describen en la Parte 3: preparación para la implementación de Tableau Server Enterprise.

Las plantillas de Terraform de muestra están disponibles en el sitio web de muestras de Tableau en https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(El enlace se abre en una ventana nueva). Estas plantillas deben configurarse y personalizarse para su organización. El contenido de configuración proporcionado en esta sección describe los cambios de plantilla mínimos necesarios que deben personalizar para implementar.

Meta

Las plantillas y el contenido de Terraform proporcionados aquí están destinados a proporcionar una muestra de trabajo que le permitirá implementar EDG rápidamente en un entorno de prueba de desarrollo.

Hemos hecho todo lo posible por probar y documentar la implementación de ejemplo de Terraform. Sin embargo, usar Terraform para implementar y mantener EDG en un entorno de producción requerirá experiencia en Terraform que está más allá del ámbito de este ejemplo. Tableau no brinda soporte para la solución Terraform de ejemplo que se documenta aquí.

Estado final

Siga el procedimiento de esta sección para configurar una VPC en AWS que sea funcionalmente equivalente a la VPC que se especifica en la Parte 3: preparación para la implementación de Tableau Server Enterprise.

Las plantillas de Terraform de muestra y el contenido de apoyo en esta sección:

  • Crea una VPC con una dirección IP elástica, dos zonas de disponibilidad y una organización de subredes como se muestra arriba (las direcciones IP son diferentes)
  • Crea los grupos de seguridad Bastion, Public, Private y Data.
  • Establece la mayoría de las reglas de entrada y salida en los grupos de seguridad. Deberá editar los grupos de seguridad después de ejecutar Terraform.
  • Crea los siguientes hosts EC2 (cada uno con AWS Linux2): bastion, proxy 1, proxy 2, nodo 1 de Tableau, nodo 2 de Tableau, nodo 3 de Tableau, nodo 4 de Tableau.
  • No se crean hosts EC2 para PostgreSQL. Debe crear el EC2 manualmente en el grupo de seguridad de datos y luego instalar y configurar PostgreSQL como se describe en Instalar, configurar y convertir en .tar PostgreSQL.

Requisitos

  • Cuenta de AWS: debe tener acceso a una cuenta de AWS que le permita crear VPC.
  • Si está ejecutando Terraform desde un equipo con Windows, deberá instalar AWS CLI.
  • Una dirección IP elástica disponible en su cuenta de AWS.
  • Un dominio que está registrado en AWS Route 53. Terraform creará una zona DNS y certificados SSL relacionados en Route 53. Por lo tanto, el perfil con el que se ejecuta Terraform también debe tener los permisos adecuados en Route 53.

Antes de empezar

  • Los ejemplos de línea de comandos en este procedimiento son para Terminal con Apple OS. Si está ejecutando Terraform en Windows, es posible que deba adaptar los comandos con las rutas de los archivos según corresponda.
  • Un proyecto de Terraform se compone de muchos archivos de configuración de texto (extensión de archivo .tf). Configure Terraform personalizando estos archivos. Si no tiene un editor de texto fiable, instale Atom o Text++.
  • Si está compartiendo el proyecto de Terraform con otras personas, le recomendamos almacenar el proyecto en Git para la gestión de cambios.

Paso 1: Preparar el entorno

A. Descargue e instale Terraform

https://www.terraform.io/downloads(El enlace se abre en una ventana nueva)

B. Generar un par de claves públicas y privadas

Esta es la clave que utilizará para acceder a AWS y al entorno de VPC resultante. Cuando ejecute Terraform, incluirá la clave pública.

Abra Terminal y ejecute los siguientes comandos:

  1. Create a private key. For example, my-key.pem:

    openssl genrsa -out my-key.pem 1024
  2. Crear una clave pública. Este formato de clave no se utiliza para Terraform. La convertirá en una clave ssh más adelante en este procedimiento:

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. Establecer permisos en la clave privada:

    sudo chmod 0600 my-key.pem

    Para establecer permisos en Windows:

    • Localice el archivo en el Explorador de Windows, haga clic derecho sobre él y luego seleccione Propiedades. Vaya a la pestaña Seguridad y luego haga clic en Avanzado.
    • Cambie el propietario por usted, deshabilite la herencia y elimine todos los permisos. Concédase Control total y luego haga clic en Guardar. Marque el archivo como de solo lectura.
  4. Cree la clave pública ssh. Esta es la clave que copiará en Terraform más adelante en el proceso.

    ssh-keygen -y -f my-key.pem >my-key-ssh.pub

C. Descargar proyecto y agregar directorio de estado

  1. Descargue y descomprima el proyecto EDG Terraform(El enlace se abre en una ventana nueva) y guárdelo en su equipo local. Después de descomprimir la descarga, tendrá un directorio de nivel superior, edg-terraform y una serie de subdirectorios.

  2. Cree un directorio llamadostate, como un compañero del directorio de nivel superior edg-terraform.

Paso 2: Personalizar plantillas de Terraform

Debe personalizar las plantillas de Terraform para que se adapten a su entorno de AWS y EDG. El ejemplo aquí proporciona las personalizaciones de plantilla mínimas que la mayoría de las organizaciones necesitarán hacer. Es probable que su entorno particular requiera otras personalizaciones.

Esta sección está organizada por nombre de plantilla.

Asegúrese de guardar todos los cambios antes de continuar con el Paso 3: Ejecutar 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. Abra la clave pública que generó en el Paso 1B y copie la clave:

     less my-key-ssh.pub

    Windows: Copie el contenido de su clave pública.

  2. Copie la cadena de clave pública en el argumento public_key, por ejemplo:

    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. Agregue categorías según los requisitos de su organización. Por ejemplo:

    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

Actualice el nombre de dominio raíz. Este nombre debe coincidir con el dominio que tiene registrado en Ruta 53.

variable "root_domain_name" {
 default = "example.com"
 }

De forma predeterminada, el subdominio tableau se especifica para el nombre de dominio DNS de la VPC. Para cambiar esto, actualice 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.

  • Si es necesario, agregue categorías 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"
     }
    }
  • Según sea necesario, opcionalmente actualice su almacenamiento para manejar sus requisitos de datos:

    Volumen de la raíz:

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    Volumen de aplicación:

    resource "aws_ebs_volume" "tableau" {
     availability_zone = data.aws_subnet.tableau.availability_zone
     size              = 500
     type              = "gp3"
    }

Paso 3: Ejecutar Terraform

A. Inicializar Terraform

En Terminal, cambie al directorio edg-terraform y ejecute el siguiente comando:

terraform init

Si la inicialización se realiza correctamente, continúe con el próximo paso. Si la inicialización falló, siga las instrucciones en la salida de Terraform.

B. Planear Terraform

Desde el mismo directorio, ejecute el comando del plan:

terraform plan

Este comando se puede ejecutar varias veces. Ejecute tantas veces como sea necesario para corregir errores. Cuando este comando se ejecute sin errores, continúe con el siguiente paso.

C. Aplicar Terraform

Desde el mismo directorio, ejecute el comando de aplicación:

terraform apply

Terraform will prompt you to verify deployment, type Yes.

Opcional: destruir Terraform

Puede destruir toda la VPC ejecutando el comando destroy:

terraform destroy

El comando destroy solo destruirá lo que ha creado. Si ha realizado cambios manuales en algunos objetos de AWS (es decir, grupos de seguridad, subredes, etc.), entonces el comando destroy fallará. Para salir de una operación de destrucción fallida/bloqueada, escribaControl + C. Luego, debe limpiar la VPC manualmente al estado en el que se encontraba cuando Terraform la creó originalmente. Después puede ejecutar el comando destroy.

Paso 4: Conéctese a bastion

Toda la conexión de la línea de comandos se realiza a través del host de bastion en TCP 22 (protocolo SSH).

  1. En AWS, cree una regla de entrada en el grupo de seguridad de bastion (AWS > Grupos de seguridad > Bastion SG > Editar reglas de entrada) y cree una regla para permitir conexiones SSH (TCP 22) desde la dirección IP o la máscara de subred donde ejecutará los comandos de Terminal.

    Opcional: Puede resultarle útil permitir la copia de archivos entre las instancias EC2 en los grupos Público y Privado durante la implementación. Crear reglas SSH de entrada:

    • Privado: cree una regla de entrada para permitir SSH desde Público
    • Público: cree una regla de entrada para permitir SSH desde Privado y desde Público
  2. Use la clave pem que creó en el Paso 1.B para conectarse al host de bastion:

    En terminales Mac:

    Ejecute los siguientes comandos desde el directorio donde está almacenada la clave 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.

    En Windows usando PuTTY y Pageant:

    1. Cree ppk a partir de la clave pem: use el generador de claves PuTTY. Cargue la clave pem que ha creado en el paso 1.B. Después de importar la clave, haga clic en Guardar clave privada. Esto crea un archivo ppk.

    2. En PuTTY: abra la configuración y realice los siguientes cambios:

      • Sessions>Host Name: agregue la dirección IP del host de bastion.
      • Sessions>Port: 22
      • Connection>Data>Auto-login username: ec2-user
      • Connection>SSH>Auth>Allow agent forwarding
      • Connection>SSH>Auth> Para la clave privada, haga clic en Examinar y seleccione el archivo .ppk que acaba de crear.
    3. Instale Pageant y cargue el ppk en la aplicación.

    Paso 5: Instalar PostgreSQL

    La plantilla de Terraform no instala PostgreSQL para su uso como repositorio externo. Sin embargo, se crea el grupo de seguridad y la subred asociados. Si va a instalar el repositorio externo en una instancia EC2 que ejecuta PostgreSQL, debe implementar la instancia EC2 como se describe en la Parte 3: preparación para la implementación de Tableau Server Enterprise.

    Luego, instale, configure y haga una copia de seguridad tar de PostgreSQL como se describe en la Paso 4: Instalar y configurar Tableau Server.

    Paso 6: (Opcional) Ejecute DeployTab4EDG

    El script TabDeploy4EDG automatiza la implementación de Tableau de cuatro nodos que se describe en la Parte 4. Consulte Script de instalación automatizada TabDeploy4EDG.

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!