Bilaga – AWS Deployment Toolbox

Det här ämnet erbjuder verktyg och alternativa driftsättningsalternativ för referensarkitekturen när den driftsätts i AWS. Mer bestämt beskrivs i det här avsnittet hur du automatiserar det exempel på AWS-driftsättning som används i hela EDG.

TabDeploy4EDG – automatiserat installationsskript

TabDeploy4EDG-skriptet(Länken öppnas i ett nytt fönster) automatiserar implementeringen av Tableau-driftsättningen med fyra noder som beskrivs i Del 4 – Installera och konfigurera Tableau Server. Om du följer exemplet på AWS-implementeringen som beskrivs i den här guiden kan du kanske köra TabDeploy4EDG.

Krav. För att köra skriptet måste du först förbereda och konfigurera AWS-miljön enligt exemplet med implementeringen i Del 3 – förbereda för företagsdriftsättning av Tableau Server:

  • VPC-, subnät- och säkerhetsgrupper har konfigurerats enligt beskrivningen. IP-adresser behöver inte matcha de som visas i exemplet med implementeringen.
  • Fyra EC2-instanser som kör de senaste och uppdaterade versionerna av AWS Linux 2
  • PostgreSQL är installerat och har konfigurerats såsom beskrivs i Installera, konfigurera och tar PostgreSQL.
  • Tar-backupfilen för steg 1 finns på EC2-instansen där PostgreSQL är installerat, såsom beskrivs i Skapa tar-säkerhetskopia (PostgreSQL steg 1).
  • EC2-instansen som ska köra nod 1 av Tableau Server-driftsättning har konfigurerats för att kommunicera med PostgreSQL såsom beskrivs i Del 4 – Installera och konfigurera Tableau Server.
  • Du har loggat in på varje EC2-instans med en SSH-session från bastionvärden.

Skriptet tar cirka 1,5–2 timmar att installera och konfigurera de fyra Tableau-servrarna. Skriptet konfigurerar Tableau enligt de föreskrivna inställningarna från referensarkitekturen. Skriptet utför följande åtgärder:

  • Återställer en steg 1-säkerhetskopia av PostgreSQL-värden om du anger en sökväg till PostgreSQL-värdens tar-fil.
  • Tar bort befintliga Tableau-installationer på alla noder.
  • Kör sudo yum update på alla noder.
  • Laddar ner och kopierar Tableau rpm-paketet till varje nod.
  • Laddar ner och installerar beroenden till varje nod.
  • Skapar /app/tableau_server och installerar paket på alla noder.
  • Installerar nod 1 med ett lokalt identitetsregister och konfigurerar en extern lagringsplats med PostgreSQL.
  • Utför en bootstrap-installation och initial konfiguration av nod 2 – nod 4.
  • Tar bort bootstrap-filen och konfigurationsfilen för TabDeploy4EDG.
  • Konfigurerar tjänster över Tableau-klustret enligt specifikationerna i referensarkitekturen.
  • Validerar installationen och returnerar status för varje nod.

Ladda ner och kopiera skriptet till bastionvärden

  1. Kopiera skriptet från exempelsidan med TabDeploy4EDG(Länken öppnas i ett nytt fönster) och klistra in koden i en fil som heter TabDeploy4EDG.
  2. Spara filen i arbetskatalogen på EC2-värden som fungerar som bastionvärd.
  3. Kör följande kommando för att ändra läget på filen och göra den körbar:

     sudo chmod +x TabDeploy4EDG

Köra TabDeploy4EDG

TabDeploy4EDG måste köras från bastionvärden. Skriptet antar att du kör under sammanhanget ssh forward agent såsom beskrivs i Exempel: Anslut till en bastion-värd i AWS. Om du inte kör med sammanhanget ssh forward agent blir du tillfrågad om lösenord under hela installationsprocessen.

  1. Skapa, redigera och spara en registreringsfil (registration.json). Filen måste vara en korrekt formaterad json-fil. Kopiera och anpassa följande mall:

    {
    	"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. Kör följande kommando för att skapa en konfigurationsfil som mall:

    ./TabDeploy4EDG -g edg.config              
  3. Öppna konfigurationsfilen för att redigera:

    sudo nano edg.config              

    Minsta kravet är att du lägger till IP-adresserna för varje EC2-värd, en sökväg till registreringsfilen och en giltig licensnyckel.

  4. Spara konfigurationsfilen och stäng den sedan när du är klar med att redigera den.

  5. Kör följande kommando för att köra TabDeploy4EDG:

    ./TabDeploy4EDG -f edg.config         

Exempel: Automatisera driftsättning av AWS-infrastruktur med Terraform

Det här avsnittet beskriver hur du konfigurerar och kör Terraform för att driftsätta EDG-referensarkitekturen i AWS. Exemplet på Terraform-konfigurationen som presenteras här driftsätter en AWS VPC med subnäten, säkerhetsgrupperna och EC2-instanserna som beskrivs i Del 3 – förbereda för företagsdriftsättning av Tableau Server.

Exempel på Terraform-mallar finns på Tableau-exempelwebbplatsen på https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(Länken öppnas i ett nytt fönster) . Dessa mallar måste konfigureras och anpassas för varje enskild organisation. Konfigurationsinnehållet i det här avsnittet beskriver de minsta nödvändiga ändringarna i mallarna som du måste anpassas för driftsättning.

Mål

Terraform-mallarna och innehållet som tillhandahålls här är avsedda att erbjuda ett fungerande exempel som låter dig snabbt driftsätta EDG i en utvecklingstestmiljö.

Vi har gjort vårt bästa för att verifiera och dokumentera exemplet på Terraform-driftsättningen. Att använda Terraform för att driftsätta och underhålla EDG i en produktionsmiljö kräver dock Terraform-expertis som inte inkluderas i det här exemplet. Tableau erbjuder inte support för exemplet på Terraform-lösningen som dokumenteras här.

Sluttillstånd

Följ proceduren i det här avsnittet för att konfigurera en VPC i AWS som är funktionellt likvärdig med den VPC som anges i Del 3 – förbereda för företagsdriftsättning av Tableau Server.

Exempel på Terraform-mallar och stödjande innehåll i det här avsnittet:

  • Skapar en VPC med en elastisk IP-adress, två tillgänglighetszoner och organisation av subnät såsom visas ovan (IP-adresserna kan skilja sig)
  • Skapar säkerhetsgrupperna Bastion, Offentlig, Privat och Data.
  • Konfigurerar de flesta in- och utträdesregler för säkerhetsgrupperna. Säkerhetsgrupperna måste redigeras efter att Terraform har körts.
  • Skapar följande EC2-värdar (var och en kör AWS Linux2): bastion, proxy 1 proxy 2, Tableau nod 1, Tableau nod 2, Tableau nod 3, Tableau nod 4.
  • EC2-värdar för PostgreSQL skapas inte. EC2 måste skapas manuellt i säkerhetsgruppen Data. PostgreSQL ska sedan installeras och konfigurera enligt beskrivningen i Installera, konfigurera och tar PostgreSQL.

Krav

  • AWS-konto – du måste ha tillgång till ett AWS-konto som gör det möjligt att skapa VPC:er.
  • Om du kör Terraform från en Windows-dator måste AWS CLI installeras.
  • En tillgänglig elastisk IP-adress för AWS-kontot.
  • En domän som är registrerad i AWS Route 53. Terraform skapar en DNS-zon och relaterade SSL-certifikat i Route 53. Därför måste profilen som används för att köra Terraform även ha lämpliga behörigheter i Route 53.

Innan du börjar

  • Exemplen på kommandoraderna i den här proceduren är för Terminal med Apple OS. Om Terraform körs på Windows kan kommandon behöva anpassas med filsökvägar, efter behov.
  • Ett Terraform-projekt består av många textbaserade konfigurationsfiler (.tf-filtillägg). Terraform kan konfigureras genom att anpassa dessa filer. Atom eller Text++ kan användas då de är robusta textredigerare.
  • Om Terraform-projektet delas med andra rekommenderar vi att projektet sparas i Git för förändringshantering.

Steg 1 – förbereda miljön

A. Ladda ner och installera Terraform:

https://www.terraform.io/downloads(Länken öppnas i ett nytt fönster)

B. Generera privata-offentliga nyckelpar

Detta är nyckeln som används för att komma åt AWS och den resulterande VPC-miljön. När Terraform körs inkluderas även den publika nyckeln.

Öppna Terminal och kör följande kommando:

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

    openssl genrsa -out my-key.pem 1024
  2. Skapa en offentlig nyckel. Detta nyckelformat används inte för Terraform. Det konverteras till en ssh-nyckel vid ett senare tillfälle i den här proceduren:

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. Ange behörigheter för den privata nyckeln:

    sudo chmod 0600 my-key.pem

    Så ställer du in behörigheter i Windows:

    • Leta upp filen i Utforskaren, högerklicka på den och välj Egenskaper. Gå till fliken Säkerhet och klicka på Avancerat.
    • Ändra ägare till dig själv, inaktivera arv och ta bort alla behörigheter. Ge dig själv full kontroll och klicka sedan på Spara. Markera filen som skrivskyddad.
  4. Skapa en offentlig ssh-nyckel. Det här är nyckeln som ska kopieras till Terraform senare i processen.

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

C. Ladda ner projektet och lägg till en tillståndskatalog

  1. Ladda ner och packa upp EDG Terraform-projektet(Länken öppnas i ett nytt fönster) och spara det på den lokala datorn. När nedladdningen har packats upp finns en katalog på toppnivå som heter edg-terraform samt en serie underkataloger.

  2. Skapa en katalog som heter state , som är likvärdig katalogen edg-terraform som finns på toppnivå.

Steg 2: Anpassa Terraform-mallarna

Terraform-mallarna måste anpassas för att passa till AWS- och EDG-miljöerna. Exemplet som följer visar de minsta passningar av mallarna som de flesta organisationer behöver göra. Det är troligt att just din miljö kan kräva andra anpassningar.

Det här avsnittet är organiserat per mallnamn.

Se till att spara alla ändringar innan du fortsätter till steg 3 – köra 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. Öppna den publika nyckeln som genererades i steg 1B och kopiera den:

     less my-key-ssh.pub

    Windows: Kopiera innehållet i den publika nyckeln.

  2. Kopiera den publika nyckelsträngen till argumentet public_key, såsom:

    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. Lägg till taggar enligt organisationens krav. Exempel:

    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

Uppdatera rotdomännamnet. Det här namnet måste matcha domänen som du har registrerat i Route 53.

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

Som standard specificeras underdomänen, tableau för VPC DNS-domännamnet. Uppdatera subdomain för att ändra detta:

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.

  • Lägg till taggar blob om det behövs:

    tags = { 
     "Name" : var.ec2_name,
     "user.owner" = "ALIAS",
     "Application" = "tableau",
     "Creator" = "ALIAS@example.com",
     "DeptCode" = "8675309",
     "Description" = "EDG",
     "Environment" = "test",
     "Group" = "itcloud@example.com"
     }
    }
  • Vid behov kan du eventuellt uppdatera lagringen för att hantera datakrav:

    Rotvolym:

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    Applikationsvolym:

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

Steg 3 – kör Terraform

A. Initiera Terraform

Byt till katalogen edg-terraform i Terminal och kör följande kommando:

terraform init

Fortsätt till nästa steg om initieringen lyckas. Följ instruktionerna i Terraform-utmatningen om initieringen misslyckades.

B. Planera Terraform

Kör planneringskommandot från samma katalog:

terraform plan

Det här kommandot kan köras flera gånger. Kör så många gånger som behövs för att åtgärda fel. Fortsätt till nästa steg när det här kommando körs felfritt.

C. Tillämpa Terraform

Kör tillämpningskommandot från samma katalog:

terraform apply

Terraform will prompt you to verify deployment, type Yes.

Valfritt: Förstör Terraform

Du kan förstöra hela VPC:n genom att köra förstörelsekommandot:

terraform destroy

Förstörelsekommandot kommer bara att förstöra det som har skapats. Om manuella ändringar har gjorts av vissa objekt i AWS (såsom säkerhetsgrupper, subnät, osv.), misslyckas destroy. Ange Control + C . VPC:n måste sedan rensas upp manuellt till det tillstånd där den var när Terraform ursprungligen skapade den. Du kan sedan köra kommandot destroy.

Steg 4 – ansluta till Bastion

Alla kommandoradsanslutningar sker via bastionvärden på TCP 22 (SSH-protokoll).

  1. Skapa en inkommande regel i AWS i säkerhetsgruppen Bastion ( AWS > Säkerhetsgrupper > Bastion SG > Redigera inkommande regler) och skapa en regel för att tillåta SSH (TCP 22)-anslutningar från IP-adressen eller subnätmasken där Terminal-kommandon kommer att köras.

    Valfritt: Det kan vara bra att tillåta filkopiering mellan EC2-instanserna i de privata och offentliga grupperna under driftsättningen. Skapa inkommande SSH-regler:

    • Privat: skapa inkommande regel för att tillåta SSH från Offentlig
    • Offentlig: skapa inkommande regel för att tillåta SSH från Privat och från Offentlig
  2. Använd pem-nyckeln som du skapade i steg 1.B för att ansluta till bastionvärden:

    På Mac-terminalen:

    Kör följande kommandon från katalogen där pem-nyckeln finns lagrad:

    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.

    På Windows med PuTTY och Pageant:

    1. Skapa en ppk-fil från pem-nyckeln: använd PuTTY Key Generator. Ladda pem-nyckeln som skapades i steg 1.B. Klicka på Spara privat nyckel efter import av nyckeln. Detta skapar en ppk-fil.

    2. I PuTTY – öppna konfigurationen och gör följande ändringar:

      • Sessioner > Värdnamn: lägg till IP-adressen för bastionvärden.
      • Sessioner > Port: 22
      • Anslutning > Data > Användarnamn för automatisk inloggning: ec2-user
      • Anslutning > SSH > Auth > Tillåt agentvidarebefordran
      • Anslutning > SSH > Auth > För privat nyckel – klicka på Bläddra och välj .ppk-filen som skapades.
    3. Installera Pageant och ladda ppk-filen i applikationen.

    Steg 5 – Installera PostgreSQL

    Terraform-mallen installerar inte PostgreSQL för att användas som den externa lagringsplatsen. Den associerade säkerhetsgruppen och subnätet skapas dock. Om den externa lagringsplatsen ska installeras på en EC2-instans som kör PostgreSQL måste EC2-instansen driftsättas enligt beskrivningen i Del 3 – förbereda för företagsdriftsättning av Tableau Server.

    Installera och konfigurera PostgreSQL samt säkerhetskopiera .tar enligt beskrivningen i Del 4 – Installera och konfigurera Tableau Server.

    Steg 6 – (valfritt) kör DeployTab4EDG

    Skriptet TabDeploy4EDG automatiserar implementeringen av Tableau-driftsättningen med fyra noder som beskrivs i del 4. Se TabDeploy4EDG – automatiserat installationsskript.

Tack för din feedback!Din feedback har skickats in. Tack!