Appendice - Toolbox per la distribuzione di AWS

Questo argomento include strumenti e opzioni di distribuzione alternative per l’architettura di riferimento quando viene distribuita in AWS. Nello specifico, questo argomento descrive come automatizzare la distribuzione AWS di esempio illustrata nella Guida alla distribuzione per le organizzazioni di grandi dimensioni.

Script di installazione automatizzata TabDeploy4EDG

Lo script TabDeploy4EDG(Il collegamento viene aperto in una nuova finestra) automatizza l’implementazione della distribuzione di Tableau a quattro nodi descritta in Parte 4 - Installazione e configurazione di Tableau Server. Se stai seguendo l’esempio di implementazione AWS descritto in questa guida, potresti essere in grado di eseguire TabDeploy4EDG.

Requisiti. Per eseguire lo script, devi preparare e configurare l’ambiente AWS in base all’implementazione di esempio in Parte 3 - Preparazione per la distribuzione di Tableau Server per le organizzazioni di grandi dimensioni:

  • VPC, la subnet e i gruppi di sicurezza sono stati configurati come descritto. Gli indirizzi IP non devono corrispondere a quelli mostrati nell’implementazione di esempio.
  • Quattro istanze EC2 che eseguono le build più recenti e aggiornate di AWS Linux 2
  • PostgreSQL è installato ed è stato configurato come descritto in Installare, configurare e creare il backup tar di PostgreSQL.
  • Un file di backup tar della fase 1 è disponibile nell’istanza EC2 in cui è installato PostgreSQL, come descritto in Creare il backup tar di PostgreSQL della fase 1.
  • L’istanza EC2 che eseguirà il Nodo 1 della distribuzione di Tableau Server è stata configurata in modo da comunicare con PostgreSQL come descritto in Parte 4 - Installazione e configurazione di Tableau Server.
  • Hai effettuato l’accesso a ciascuna istanza EC2 con una sessione SSH dall’host bastion.

Lo script impiega circa 1,5-2 ore per installare e configurare i quattro sistemi Tableau Server. Lo script configura Tableau in base alle impostazioni prescritte dell’architettura di riferimento. Lo script esegue le seguenti azioni:

  • Ripristina il backup della fase 1 dell’host PostgreSQL, se specifichi un percorso del file tar dell’host PostgreSQL.
  • Rimuove le installazioni di Tableau esistenti su tutti i nodi.
  • Esegue sudo yum update su tutti i nodi.
  • Scarica e copia il pacchetto rpm di Tableau in ogni nodo.
  • Scarica e installa le dipendenze in ogni nodo.
  • Crea /app/tableau_server e installa il pacchetto in tutti i nodi.
  • Installa il Nodo 1 con un archivio identità locale e configura il repository esterno con PostgreSQL.
  • Esegue l’installazione bootstrap e la configurazione iniziale di Nodo 2-Nodo 4.
  • Elimina il file di bootstrap e il file di configurazione per TabDeploy4EDG.
  • Configura i servizi nel cluster Tableau in base alle specifiche dell’architettura di riferimento.
  • Convalida l’installazione e restituisce lo stato per ogni nodo.

Scaricare e copiare lo script sull’host bastion

  1. Copia lo script dalla pagina degli esempi di TabDeploy4EDG(Il collegamento viene aperto in una nuova finestra) e incolla il codice in un file denominato TabDeploy4EDG.
  2. Salva il file nella home directory dell’host EC2 che opera come host bastion.
  3. Esegui questo comando per modificare la modalità sul file in modo da renderlo eseguibile:

     sudo chmod +x TabDeploy4EDG

Eseguire TabDeploy4EDG

TabDeploy4EDG deve essere eseguito dall’host bastion. Lo script è stato creato partendo dal presupposto che l’esecuzione avvenga nel contesto dell’agente di inoltro ssh come descritto in Esempio: connettersi all’host bastion in AWS. Se l’esecuzione non avviene nel contesto dell’agente di inoltro ssh, ti verranno richieste le password durante il processo di installazione.

  1. Crea, modifica e salva un file di registrazione (registration.json). Il file deve essere un file json formattato correttamente. Copia e personalizza il seguente modello:

    {
    	"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. Esegui questo comando per generare un file di configurazione modello:

    ./TabDeploy4EDG -g edg.config              
  3. Apri il file di configurazione da modificare:

    sudo nano edg.config              

    Come minimo, devi aggiungere gli indirizzi IP di ciascun host EC2, il percorso del file di registrazione e un codice di licenza valido.

  4. Al termine della modifica del file di configurazione, salvalo e chiudilo.

  5. Per eseguire TabDeploy4EDG, esegui questo comando:

    ./TabDeploy4EDG -f edg.config         

Esempio: automatizza la distribuzione dell’infrastruttura AWS con Terraform

Questa sezione descrive come configurare ed eseguire Terraform per distribuire l’architettura di riferimento EDG in AWS. La configurazione Terraform di esempio presentata qui distribuisce un VPC AWS con le sottoreti, i gruppi di sicurezza e le istanze EC2 descritti nella Parte 3 - Preparazione per la distribuzione di Tableau Server per le organizzazioni di grandi dimensioni.

I modelli Terraform di esempio sono disponibili sul sito web Tableau Samples all’indirizzo https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(Il collegamento viene aperto in una nuova finestra) . Questi modelli devono essere configurati e personalizzati per la tua organizzazione. Il contenuto della configurazione fornito in questa sezione descrive le modifiche minime richieste al modello da personalizzare per la distribuzione.

Obiettivo

I modelli e i contenuti Terraform qui forniti hanno lo scopo di fornire un esempio funzionante che ti consentirà di distribuire rapidamente EDG in un ambiente di test di sviluppo.

Abbiamo fatto del nostro meglio per testare e documentare la distribuzione Terraform di esempio. Tuttavia, l’utilizzo di Terraform per distribuire e mantenere EDG in un ambiente di produzione richiede competenze su Terraform che esulano dall’ambito di questo esempio. Tableau non fornisce supporto per la soluzione Terraform di esempio qui documentata.

Stato finale

Segui la procedura in questa sezione per configurare un VPC in AWS che sia funzionalmente equivalente al VPC specificato nella Parte 3 - Preparazione per la distribuzione di Tableau Server per le organizzazioni di grandi dimensioni.

Modelli Terraform di esempio e contenuti di supporto in questa sezione:

  • Crea un VPC con un indirizzo IP elastico, due zone di disponibilità e un’organizzazione di sottoreti come mostrato sopra (gli indirizzi IP sono diversi)
  • Crea i gruppi di sicurezza Bastion, Pubblico, Privato e Dati.
  • Imposta la maggior parte delle regole di ingresso e uscita sui gruppi di sicurezza. Dopo l’esecuzione di Terraform dovrai modificare i gruppi di sicurezza.
  • Crea i seguenti host EC2 (ciascuno esegue AWS Linux2): bastion, proxy 1 proxy 2, Tableau node 1, Tableau node 2, Tableau node 3, Tableau node 4.
  • Gli host EC2 per PostgreSQL non vengono creati. È necessario creare manualmente EC2 nel gruppo di sicurezza Dati, quindi installare e configurare PostgreSQL come descritto in Installare, configurare e creare il backup tar di PostgreSQL.

Requisiti

  • Account AWS: devi avere accesso a un account AWS che ti consenta di creare i VPC.
  • Se esegui Terraform da un computer Windows, dovrai installare AWS CLI.
  • Un indirizzo IP elastico disponibile nel tuo account AWS.
  • Un dominio registrato in AWS Route 53. Terraform creerà una zona DNS e i relativi certificati SSL in Route 53. Pertanto, anche il profilo con cui viene eseguito Terraform deve disporre delle autorizzazioni appropriate in Route 53.

Prima di iniziare

  • Gli esempi di riga di comando in questa procedura sono per un terminale con sistema operativo Apple. Se esegui Terraform su Windows, potresti dover adattare i comandi con i percorsi dei file in modo appropriato.
  • Un progetto Terraform è costituito da molti file di configurazione di testo (estensione file .tf). Puoi configurare Terraform personalizzando questi file. Se non disponi di un editor di testo affidabile, installa Atom o Text++.
  • Se condividi il progetto Terraform con altri, ti consigliamo di archiviare il progetto in Git per la gestione delle modifiche.

Fase 1: preparare l’ambiente

A. Scarica e installa Terraform

https://www.terraform.io/downloads(Il collegamento viene aperto in una nuova finestra)

B. Genera una coppia di chiavi pubblica-privata

Queste sono le chiavi che utilizzerai per accedere ad AWS e all’ambiente VPC risultante. Quando esegui Terraform, includerai la chiave pubblica.

Apri il terminale ed esegui i seguenti comandi:

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

    openssl genrsa -out my-key.pem 1024
  2. Crea una chiave pubblica. Questo formato di chiave non viene utilizzato per Terraform. Lo convertirai in una chiave ssh più avanti in questa procedura:

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. Imposta le autorizzazioni sulla chiave privata:

    sudo chmod 0600 my-key.pem

    Per impostare le autorizzazioni in Windows:

    • Individua il file in Esplora risorse, fai clic con il pulsante destro del mouse su di esso, quindi seleziona Proprietà. Passa alla scheda Sicurezza e poi fai clic su Avanzate.
    • Cambia il proprietario in te, disabilita l’ereditarietà ed elimina tutte le autorizzazioni. Concediti il Controllo completo e fai clic su Salva. Contrassegna il file come di sola lettura.
  4. Crea una chiave pubblica ssh. Questa è la chiave che copierai in Terraform più avanti nella procedura.

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

C. Scarica il progetto e aggiungi la directory di stato

  1. Scarica e decomprimi il progetto EDG Terraform(Il collegamento viene aperto in una nuova finestra) e salvalo nel tuo computer locale. Dopo aver decompresso il download avrai una directory di primo livello, edg-terraform, e una serie di sottodirectory.

  2. Crea una directory con il nome state allo stesso livello della directory edg-terraform.

Fase 2: personalizzare i modelli Terraform

Devi personalizzare i modelli Terraform per adattarli al tuo ambiente AWS ed EDG. L’esempio qui fornisce le personalizzazioni minime del modello che deve effettuare la maggior parte delle organizzazioni. È probabile che il tuo particolare ambiente richieda altre personalizzazioni.

Questa sezione è organizzata per nome del modello.

Assicurati di salvare tutte le modifiche prima di procedere alla Fase 3: eseguire 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. Apri la chiave pubblica che hai generato nella fase 1B e copiala:

     less my-key-ssh.pub

    Windows: copia il contenuto della tua chiave pubblica.

  2. Copia la stringa della chiave pubblica nell’argomento public_key, ad esempio:

    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. Aggiungi dei tag in base ai requisiti della tua organizzazione. Ad esempio:

    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

Aggiorna il nome del dominio principale. Il nome deve corrispondere al dominio che hai registrato in Route 53.

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

Per impostazione predefinita, il sottodominio tableau è specificato per il nome di dominio DNS VPC. Per cambiarlo, aggiorna 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.

  • Se necessario, aggiungi un blob di tag:

    tags = { 
     "Name" : var.ec2_name,
     "user.owner" = "ALIAS",
     "Application" = "tableau",
     "Creator" = "ALIAS@example.com",
     "DeptCode" = "8675309",
     "Description" = "EDG",
     "Environment" = "test",
     "Group" = "itcloud@example.com"
     }
    }
  • Se necessario, aggiorna facoltativamente lo spazio di archiviazione per gestire i tuoi requisiti di dati:

    Volume radice:

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    Volume dell’applicazione:

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

Fase 3: eseguire Terraform

A. Inizializza Terraform

Nel terminale, cambia la directory in edg-terraform ed esegui il comando seguente:

terraform init

Se l’inizializzazione ha esito positivo, vai alla fase successiva. Se l’inizializzazione non riesce, segui le istruzioni nell’output di Terraform.

B. Pianificare Terraform

Dalla stessa directory, esegui il comando plan:

terraform plan

Questo comando può essere eseguito più volte. Eseguilo tutte le volte necessarie per correggere gli errori. Quando questo comando viene eseguito senza errori, vai alla fase successiva.

C. Applicare Terraform

Dalla stessa directory esegui il comando apply:

terraform apply

Terraform will prompt you to verify deployment, type Yes.

Opzionale: distruggere Terraform

Puoi distruggere l’intero VPC eseguendo il comando destroy:

terraform destroy

Il comando destroy distruggerà solo ciò che ha creato. Se hai apportato modifiche manuali ad alcuni oggetti in AWS (ad esempio, gruppi di sicurezza, sottoreti ecc.), il comando destroy avrà esito negativo. Per uscire da un’operazione di distruzione in errore/sospesa, digita Control + C. Poi devi ripulire manualmente il VPC riportandolo allo stato in cui si trovava quando Terraform lo ha originariamente creato. Potrai poi eseguire il comando destroy.

Fase 4: connessione al bastion

Tutta la connessione della riga di comando avviene tramite l’host bastion su TCP 22 (protocollo SSH).

  1. In AWS crea una regola in entrata nel gruppo di sicurezza bastion (AWS > Gruppi di sicurezza > GS Bastion > Modifica regole in entrata) e crea una regola per consentire le connessioni SSH (TCP 22) dall’indirizzo IP o dalla maschera di sottorete in cui eseguirai i comandi del terminale.

    Facoltativo: potresti trovare utile consentire la copia dei file tra le istanze EC2 nei gruppi privato e pubblico durante la distribuzione. Crea regole SSH in entrata:

    • Privato: crea una regola in entrata per consentire SSH da Pubblico
    • Pubblico: crea una regola in entrata per consentire SSH da privato e da pubblico
  2. Usa la chiave pem che hai creato nella Fase 1.B per connetterti all’host bastion:

    Sul terminale Mac:

    Esegui i seguenti comandi dalla directory in cui è memorizzata la chiave 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

    Ad esempio: ssh -A ec2-user@3.15.12.112.

    Su Windows usando PuTTY e Pageant:

    1. Crea un ppk dalla chiave pem: usa PuTTY Key Generator. Carica la chiave pem che hai creato nella fase 1.B. Dopo l’importazione della chiave, fai clic su Salva chiave privata. Questo crea un file ppk.

    2. In PuTTY: apri la configurazione e apporta le seguenti modifiche:

      • Sessioni>Nome host: aggiungi l’indirizzo IP dell’host bastion.
      • Sessioni>Porta: 22
      • Connessione>Dati>Nome utente accesso automatico: ec2-user
      • Connessione>SSH>Auth>Consenti inoltro agente
      • Connessione>SSH>Auth> Per la chiave privata, fai clic su Sfoglia e seleziona il file .ppk appena creato.
    3. Installa Pageant e carica il ppk nell’applicazione.

    Fase 5: installare PostgreSQL

    Il modello Terraform non installa PostgreSQL per l’uso come repository esterno. Tuttavia, vengono creati il gruppo di sicurezza e la sottorete associati. Se installi il repository esterno su un’istanza EC2 che esegue PostgreSQL, devi distribuire l’istanza EC2 come descritto nella Parte 3 - Preparazione per la distribuzione di Tableau Server per le organizzazioni di grandi dimensioni.

    Quindi installa, configura ed esegui il backup di PostgreSQL come descritto nella Parte 4 - Installazione e configurazione di Tableau Server.

    Fase 6: (facoltativo) eseguire DeployTab4EDG

    Lo script TabDeploy4EDG automatizza l’implementazione della distribuzione di Tableau a quattro nodi descritta nella Parte 4. Vedi Script di installazione automatizzata TabDeploy4EDG.

Grazie per il tuo feedback.Il tuo feedback è stato inviato. Grazie!