Bijlage – AWS Deployment Toolbox

Dit onderwerp bevat tools en alternatieve implementatieopties voor de referentiearchitectuur bij het implementeren in AWS. Dit onderwerp beschrijft specifiek hoe u de AWS-voorbeeldimplementatie kunt automatiseren die in de EDG wordt beschreven.

Geautomatiseerd installatiescript TabDeploy4EDG

Het TabDeploy4EDG-script(Link wordt in een nieuw venster geopend) automatiseert de Tableau-implementatie met vier knooppunten die wordt beschreven in Deel 4 – Tableau Server installeren en configureren. Als u de AWS-voorbeeldimplementatie volgt zoals beschreven in deze handleiding, kunt u mogelijk TabDeploy4EDG uitvoeren.

Vereisten. Om het script uit te voeren, moet u de AWS-omgeving voorbereiden en configureren volgens de voorbeeldimplementatie in Deel 3 – De implementatie van Tableau Server Enterprise voorbereiden:

  • VPC, subnet en beveiligingsgroepen moeten zijn geconfigureerd zoals beschreven. IP-adressen hoeven niet overeen te komen met de adressen die in de voorbeeldimplementatie worden weergegeven.
  • Vier EC2-instanties met de nieuwste, bijgewerkte builds van AWS Linux 2.
  • PostgreSQL is geïnstalleerd en geconfigureerd zoals beschreven in PostgreSQL installeren, configureren en tarren.
  • Een in Stap 1 gemaakt tar-back-upbestand bevindt zich op de EC2-instantie waar PostgreSQL is geïnstalleerd, zoals beschreven in Tar-back-up van PostgreSQL Stap 1 maken.
  • De EC2-instantie die knooppunt 1 van de Tableau Server-implementatie zal uitvoeren, is geconfigureerd om te communiceren met PostgreSQL zoals beschreven in Deel 4 – Tableau Server installeren en configureren.
  • U bent bij elke EC2-instantie ingelogd met een SSH-sessie vanaf de bastionhost.

Het script heeft ongeveer 1,5 tot 2 uur nodig om de vier Tableau-servers te installeren en configureren. Het script configureert Tableau volgens de voorgeschreven instellingen van de referentiearchitectuur. Het script voert de volgende acties uit:

  • Herstelt de Stap 1-back-up van de PostgreSQL-host als u een pad naar het tar-bestand van de PostgreSQL-host opgeeft.
  • Verwijdert bestaande Tableau-installaties voor alle knooppunten.
  • Voert sudo yum update uit voor alle knooppunten.
  • Downloadt en kopieert het Tableau rpm-pakket naar elk knooppunt.
  • Downloadt en installeert afhankelijkheden voor elk knooppunt.
  • Creëert /app/tableau_server en installeert het pakket voor alle knooppunten.
  • Installeert Knooppunt 1 met een lokale identiteitenarchief en configureert een externe opslagplaats met PostgreSQL.
  • Voert bootstrap-installatie en initiële configuratie van Knooppunt 2 tot Knooppunt 4 uit.
  • Verwijdert het bootstrap-bestand en het configuratiebestand voor TabDeploy4EDG.
  • Configureert services in het Tableau-cluster volgens de specificaties van de referentiearchitectuur.
  • Valideert de installatie en retourneert de status voor elk knooppunt.

Het script downloaden en kopiëren naar de bastionhost

  1. Kopieer het script van de TabDeploy4EDG-voorbeeldpagina(Link wordt in een nieuw venster geopend) en plak de code in een bestand met de naam: TabDeploy4EDG.
  2. Sla het bestand op in de homedirectory van de EC2-host die als bastionhost fungeert.
  3. Voer de volgende opdracht uit om de modus van het bestand te wijzigen, zodat het uitvoerbaar wordt:

     sudo chmod +x TabDeploy4EDG

TabDeploy4EDG uitvoeren

TabDeploy4EDG moet worden uitgevoerd vanaf de bastionhost. Het script is geschreven met de veronderstelling dat u onder de context van ssh agent forwarding draait zoals beschreven in Voorbeeld: verbinding maken met bastionhost in AWS. Als u niet met ssh agent forwarding-context werkt, wordt u tijdens het installatieproces om wachtwoorden gevraagd.

  1. Maak een registratiebestand (registration.json) aan, bewerk het en sla het op. Het bestand moet een correct geformatteerd JSON-bestand zijn. Kopieer de volgende sjabloon en pas die aan:

    {
    	"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. Voer de volgende opdracht uit om een sjabloonconfiguratiebestand te genereren:

    ./TabDeploy4EDG -g edg.config              
  3. Open het configuratiebestand om te bewerken:

    sudo nano edg.config              

    U moet minimaal de IP-adressen van elke EC2-host, een bestandspad naar het registratiebestand en een geldige licentiesleutel toevoegen.

  4. Wanneer u klaar bent met het bewerken van het configuratiebestand, slaat u het op en sluit u het.

  5. Om TabDeploy4EDG uit te voeren, gebruikt u de volgende opdracht:

    ./TabDeploy4EDG -f edg.config         

Voorbeeld: de implementatie van AWS-infrastructuur automatiseren met Terraform

In deze sectie wordt beschreven hoe u Terraform configureert en uitvoert om de EDG-referentiearchitectuur in AWS te implementeren. De hier gepresenteerde Terraform-voorbeeldconfiguratie implementeert een AWS VPC met de subnetten, beveiligingsgroepen en EC2-instanties zoals beschreven in Deel 3 – De implementatie van Tableau Server Enterprise voorbereiden.

Voorbeelden van Terraform-sjablonen zijn beschikbaar op de website met Tableau-voorbeelden via https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(Link wordt in een nieuw venster geopend). Deze sjablonen moeten worden geconfigureerd en aangepast voor uw organisatie. De configuratie-inhoud in deze sectie beschrijft de minimale vereiste sjabloonwijzigingen die u moet aanbrengen alvorens te kunnen implementeren.

Doel

De Terraform-sjablonen en inhoud die hier worden aangeboden, zijn bedoeld om een werkend voorbeeld te bieden waarmee u EDG snel kunt implementeren in een ontwikkel-/testomgeving.

We hebben ons uiterste best gedaan om de Terraform-voorbeeldimplementatie te testen en te documenteren. Het gebruik van Terraform om EDG in een productieomgeving te implementeren en onderhouden, vereist echter Terraform-expertise die buiten het bereik van dit voorbeeld valt. Tableau biedt geen ondersteuning voor de hier beschreven Terraform-voorbeeldoplossing.

Eindstatus

Volg de procedure in deze sectie om een VPC in AWS in te stellen die functioneel gelijkwaardig is aan de VPC die is gespecificeerd in Deel 3 – De implementatie van Tableau Server Enterprise voorbereiden.

De voorbeeld Terraform-sjablonen en ondersteunende inhoud in deze sectie:

  • Maken een VPC met een elastisch IP-adres, twee beschikbaarheidszones en een subnetorganisatie zoals hierboven weergegeven (IP-adressen zijn verschillend).
  • Maken de beveiligingsgroepen Bastion, Openbaar, Privé en Data aan.
  • Stellen de meeste in- en uitgangsregels in voor de beveiligingsgroepen. U moet de beveiligingsgroepen bewerken nadat Terraform is uitgevoerd.
  • Maken de volgende EC2-hosts aan (elk met AWS Linux2): bastion, proxy 1 proxy 2, Tableau-knooppunt 1, Tableau-knooppunt 2, Tableau-knooppunt 3, Tableau-knooppunt 4.
  • EC2-hosts voor PostgreSQL worden niet aangemaakt. U moet EC2 handmatig aanmaken in de beveiligingsgroep Data en vervolgens PostgreSQL installeren en configureren zoals beschreven in PostgreSQL installeren, configureren en tarren.

Vereisten

  • AWS-account: u moet toegang hebben tot een AWS-account waarmee u VPC's kunt maken.
  • Als u Terraform vanaf een Windows-computer uitvoert, moet u AWS CLI installeren.
  • Een beschikbaar elastisch IP-adres in uw AWS-account.
  • Een domein dat geregistreerd is in AWS Route 53. Terraform creëert een DNS-zone en bijbehorende SSL-certificaten in Route 53. Daarom moet het profiel waaronder Terraform draait ook de juiste machtigingen hebben in Route 53.

Voordat u begint

  • De voorbeelden van de opdrachtregels in deze procedure zijn voor het gebruik van een terminal met Apple OS. Als u Terraform op Windows gebruikt, moet u de opdrachten mogelijk aanpassen met de juiste bestandspaden.
  • Een Terraform-project bestaat uit een groot aantal tekstconfiguratiebestanden (bestandsextensie .tf). U configureert Terraform door deze bestanden aan te passen. Als u niet over een krachtige teksteditor beschikt, installeer dan Atom of Text++.
  • Als u het Terraform-project met anderen deelt, raden wij u aan het project in Git op te slaan voor wijzigingsbeheer.

Stap 1 – Omgeving voorbereiden

A. Terraform downloaden en installeren

https://www.terraform.io/downloads(Link wordt in een nieuw venster geopend)

B. Een sleutelpaar privé-openbaar genereren

Dit is de sleutel die u gebruikt om toegang te krijgen tot AWS en de resulterende VPC-omgeving. Wanneer u Terraform uitvoert, neemt u daarin de openbare sleutel op.

Open de terminal en voer de volgende opdrachten uit:

  1. Maak een privésleutel. Bijvoorbeeld my-key.pem:

    openssl genrsa -out my-key.pem 1024
  2. Maak een openbare sleutel. Deze sleutelindeling wordt niet gebruikt voor Terraform. Later in deze procedure converteert u deze naar een ssh-sleutel:

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. Stel machtigingen in voor de privésleutel:

    sudo chmod 0600 my-key.pem

    Voor het instellen van machtigingen in Windows:

    • Vind het bestand in Windows Verkenner, klik er met de rechtermuisknop op en selecteer Eigenschappen. Navigeer naar het tabblad Beveiliging en klik vervolgens op Geavanceerd.
    • Wijzig de eigenaar naar uzelf, schakel overerving uit en verwijder alle machtigingen. Geef uzelf Volledig beheer en klik dan op Opslaan. Markeer het bestand als alleen-lezen.
  4. Maak een openbare ssh-sleutel. Dit is de sleutel die u later in het proces naar Terraform kopieert.

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

C. Project downloaden en statusdirectory toevoegen

  1. Download het EDG Terraform-project(Link wordt in een nieuw venster geopend), pak het uit en sla het op uw lokale computer op. Nadat u de download hebt uitgepakt, hebt u een hoofddirectory, edg-terraform en een reeks subdirectory's.

  2. Maak een directory met de naam state, op hetzelfde niveau als de hoofddirectory edg-terraform.

Stap 2 – De Terraform-sjablonen aanpassen

U moet de Terraform-sjablonen aanpassen aan uw AWS- en EDG-omgeving. Het onderstaande voorbeeld toont de minimale aanpassingen die de meeste organisaties in een sjabloon moeten doorvoeren. Het is mogelijk dat uw specifieke omgeving andere aanpassingen vereist.

Deze sectie is georganiseerd op sjabloonnaam.

Zorg ervoor dat u alle wijzigingen opslaat voordat u verdergaat naar Stap 3 – Terraform uitvoeren.

versies.tf

Er zijn drie instanties van de bestanden versions.tf waar het veld required_version overeen moet komen met de versie van terraform.exe die u gebruikt. Controleer de versie van Terraform (terraform.exe -version) en werk elk van de volgende instanties bij:

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

sleutelpaar.tf

  1. Open de openbare sleutel die u in stap 1B hebt gegenereerd en kopieer de sleutel:

     less my-key-ssh.pub

    Windows: kopieer de inhoud van uw openbare sleutel.

  2. Kopieer de openbare sleutelreeks naar het public_key argument, bijvoorbeeld:

    resource "aws_key_pair" "tableau" {
    key_name = "my-key"
    public_key = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQ (truncated example) dZVHambOCw=="

Zorg ervoor dat de waarde key_name uniek is in het datacenter, anders zal terraform apply mislukken.

lokale.tf

Werk user.owner bij naar uw naam of alias. De waarde die u hier invoert, wordt gebruikt voor de tag 'Naam' in AWS voor de resources die Terraform maakt.

aanbieders.tf

  1. Voeg tags toe volgens de vereisten van uw organisatie. Bijvoorbeeld:

    default_tags {
      tags = {
          
       "Application" = "tableau",
       "Creator" = "alias@example.com",
       "DeptCode" = "8675309",
       "Description" = "EDG",
       "Environment" = "test",
       "Group" = "itcloud@example.com"
      }
    }
  2. Als u gebruik maakt van provider, voeg dan commentaar toe aan de lijnen assume_role:

    /* assume_role {
    role_arn     = "arn:aws:iam::310946706895:role/terraform-backend"
    session_name = "terraform"
    }*/  

elb.tf

Kies onder 'resource "aws_lb" "tableau" {' een unieke waarde om te gebruiken voor name en tags.Name.

Als een andere AWS-loadbalancer dezelfde naam heeft in het datacenter, dan zal terraform apply mislukken.

Voeg idle_timeout toe:

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

variabelen.tf

Rootdomeinnaam bijwerken. Deze naam moet overeenkomen met het domein dat u bij Route 53 hebt geregistreerd.

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

Standaard is het subdomein, tableau, opgegeven als de VPC DNS-domeinnaam. Om dit te veranderen, werkt u subdomain bij:

variable "subdomain" {
 default = "tableau"
}

modules/tableau_instantie/ec2.tf

Het project bevat twee ec2.tf-bestanden. Deze aanpassing is voor de Tableau-instantie van ec2.tf in de directory: modules/tableau_instance/ec2.tf.

  • Voeg indien nodig blobtags toe:

    tags = { 
     "Name" : var.ec2_name,
     "user.owner" = "ALIAS",
     "Application" = "tableau",
     "Creator" = "ALIAS@example.com",
     "DeptCode" = "8675309",
     "Description" = "EDG",
     "Environment" = "test",
     "Group" = "itcloud@example.com"
     }
    }
  • Indien nodig kunt u uw opslag bijwerken om aan uw datavereisten te voldoen:

    Rootvolume:

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    Toepassingsvolume:

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

Stap 3 – Terraform uitvoeren

A. Terraform initialiseren

Ga op de terminal naar de directory edg-terraform en voer de volgende opdracht uit:

terraform init

Als de initialisatie succesvol is, gaat u verder met de volgende stap. Als de initialisatie mislukt, volgt u de instructies in de Terraform-uitvoer.

B. Terraform plannen

Voer vanuit dezelfde directory de opdracht 'plan' uit:

terraform plan

Deze opdracht kan meerdere keren worden uitgevoerd. Voer het zo vaak uit als nodig is om fouten te herstellen. Wanneer deze opdracht foutloos is uitgevoerd, gaat u verder met de volgende stap.

C. Terraform toepassen

Voer vanuit dezelfde directory de opdracht 'apply' uit:

terraform apply

Terraform zal u vragen om de implementatie te verifiëren. Typ Yes.

Optioneel: Terraform vernietigen

U kunt de volledige VPC vernietigen door de opdracht 'destroy' uit te voeren:

terraform destroy

De vernietigingsopdracht vernietigt alleen wat het zelf heeft gecreëerd. Als u handmatige wijzigingen hebt aangebracht in een aantal objecten in AWS (bijvoorbeeld beveiligingsgroepen, subnetten, enz.) zal destroy mislukken. Om een mislukte/vastgelopen vernietigingsbewerking te beëindigen, typt u Control + C. Vervolgens moet u de VPC handmatig opschonen en terugbrengen naar de staat waarin deze zich bevond toen Terraform deze oorspronkelijk aanmaakte. Dan kunt u de opdracht destroy uitvoeren.

Stap 4 – Verbinding maken met bastion

Alle opdrachtregelverbindingen verlopen via de bastionhost op TCP 22 (SSH-protocol).

  1. Maak in AWS een inkomende regel in de beveiligingsgroep Bastion (AWS > Beveiligingsgroepen > Bastion > Inkomende regels bewerken) en maak een regel om SSH (TCP 22)-verbindingen toe te staan vanaf het IP-adres of subnetmasker waarop u terminal-opdrachten uitvoert.

    Optioneel: het kan handig zijn om het kopiëren van bestanden tussen de EC2-instanties in de groepen Privé en Openbaar toe te staan tijdens de implementatie. Maak inkomende SSH-regels:

    • Privé: maak een inkomende regel om SSH toe te staan vanaf Openbaar
    • Openbaar: maak een inkomende regel om SSH toe te staan vanaf Privé en Openbaar
  2. Gebruik de pem-sleutel die u in stap 1.B hebt gemaakt om verbinding te maken met de bastionhost:

    Op een Mac-terminal:

    Voer de volgende opdrachten uit vanuit de directory waar de pem-sleutel is opgeslagen:

    ssh-add —apple-use-keychain <keyName>.pem

    Als u een waarschuwing krijgt dat de privésleutel voor anderen toegankelijk is, voer dan de volgende opdracht uit: chmod 600 <keyName.pem> en voer daarna de opdracht ssh-add opnieuw uit.

    Maak verbinding met de bastionhost door middel van deze opdracht: ssh -A ec2-user@IPaddress

    Bijvoorbeeld: ssh -A ec2-user@3.15.12.112.

    Op Windows, gebruikmakend van PuTTY en Pageant:

    1. Maak een ppk van een pem-sleutel: gebruik PuTTY Key Generator. Laad de pem-sleutel die u in stap 1.B hebt gemaakt. Klik na het importeren van de sleutel op Privésleutel opslaan. Hiermee wordt een ppk-bestand gemaakt.

    2. Open in PuTTY de configuratie en breng de volgende wijzigingen aan:

      • Sessies>Hostnaam: voeg het IP-adres van de bastionhost toe.
      • Sessies>Poort: 22
      • Verbinding>Data>Automatisch inloggen gebruikersnaam: ec2-user
      • Verbinding>SSH>Auth>Agent forwarding toestaan
      • Verbinding>SSH>Auth> Voor de privésleutel klikt u op Bladeren en selecteert u het .ppk-bestand dat u zojuist hebt gemaakt.
    3. Installeer Pageant en laad de ppk in de toepassing.

    Stap 5 – PostgreSQL installeren

    De Terraform-sjabloon installeert PostgreSQL niet voor gebruik als externe opslagplaats. De bijbehorende beveiligingsgroep en het bijbehorende subnet worden echter wel aangemaakt. Als u de externe opslagplaats op een EC2-instantie met PostgreSQL wilt installeren, moet u de EC2-instantie implementeren zoals beschreven in Deel 3 – De implementatie van Tableau Server Enterprise voorbereiden.

    Vervolgens installeert en configureert u PostgreSQL en maakt u er een tar-back-up van, volgens de beschrijving in Deel 4 – Tableau Server installeren en configureren.

    Stap 6 – (Optioneel) DeployTab4EDG uitvoeren

    Het TabDeploy4EDG-script automatiseert de Tableau-implementatie met vier knooppunten die wordt beschreven in Deel 4. Zie Geautomatiseerd installatiescript TabDeploy4EDG.

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.