Anhang – AWS Deployment Toolbox

Dieses Thema umfasst Tools und alternative Bereitstellungsoptionen für die Referenzarchitektur, wenn diese in AWS bereitgestellt wird. In diesem Thema wird insbesondere beschrieben, wie die im Bereitstellungshandbuch beschriebene AWS-Bereitstellung automatisiert werden kann.

TabDeploy4EDG – Skript für automatisierte Installation

Das TabDeploy4EDG-Skript(Link wird in neuem Fenster geöffnet) automatisiert die Implementierung der Tableau-Bereitstellung mit vier Knoten, die in Teil 4 – Installieren und Konfigurieren von Tableau Server beschrieben wird. Wenn Sie die in diesem Leitfaden beschriebene AWS-Beispielimplementierung verwenden, können Sie TabDeploy4EDG ausführen.

Anforderungen: Um das Skript auszuführen, müssen Sie die AWS-Umgebung gemäß der Beispielimplementierung in Teil 3 - Vorbereiten der Bereitstellung von Tableau Server Enterprise vorbereiten und konfigurieren:

Das Skript braucht rund 1,5 bis 2 Stunden, um die vier Tableau-Server zu installieren und zu konfigurieren. Das Skript konfiguriert Tableau gemäß den vorgeschriebenen Einstellungen der Referenzarchitektur. Das Skript führt die folgenden Aktionen aus:

  • Stellt die Sicherung der Stufe 1 des PostgreSQL-Hosts wieder her, wenn Sie einen Pfad zur tar-Datei des PostgreSQL-Hosts angeben.
  • Es entfernt vorhandene Tableau-Installationen auf allen Knoten.
  • Es führt den Befehl sudo yum update auf allen Knoten aus.
  • Es lädt das Tableau-RPM-Paket herunter und kopiert es auf jeden Knoten.
  • Es lädt Abhängigkeiten auf jeden Knoten herunter und installiert sie.
  • Es erstellt /app/tableau_server und installiert das Paket auf allen Knoten.
  • Es installiert Knoten 1 mit einem lokalen Identitätsspeicher und konfiguriert ein externes Repository mit PostgreSQL.
  • Es führt die Bootstrap-Installation und die Erstkonfiguration von Knoten 2 bis Knoten 4 durch.
  • Löscht die Bootstrap-Datei und die Konfigurationsdatei für TabDeploy4EDG.
  • Es konfiguriert Dienste im gesamten Tableau-Cluster gemäß den Spezifikationen der Referenzarchitektur.
  • Validiert die Installation und gibt den Status für jeden Knoten zurück.

Herunterladen und Kopieren des Skripts auf den Bastion-Host

  1. Kopieren Sie das Skript auf der TabDeploy4EDG-Beispielseite(Link wird in neuem Fenster geöffnet) und fügen Sie den Code in eine Datei namens TabDeploy4EDG ein.
  2. Speichern Sie die Datei im Basisverzeichnis auf dem EC2-Host, der als Bastion-Host dient.
  3. Führen Sie den folgenden Befehl aus, um den Modus der Datei so zu ändern, dass sie ausgeführt werden kann:

     sudo chmod +x TabDeploy4EDG

Ausführen von TabDeploy4EDG

TabDeploy4EDG muss auf dem Bastion-Host ausgeführt werden. Das Skript wurde unter der Annahme geschrieben, dass Sie im Kontext des ssh-Forward-Agenten arbeiten, wie unter Beispiel: Herstellen einer Verbindung mit dem Bastion-Host in AWS beschrieben. Wenn Sie nicht mit ssh-Forward-Agent-Kontext arbeiten, werden Sie während des gesamten Installationsprozesses zur Eingabe von Kennwörtern aufgefordert.

  1. Erstellen, bearbeiten und speichern Sie eine Registrierungsdatei (registration.json). Die Datei muss eine ordnungsgemäß formatierte JSON-Datei sein. Kopieren Sie die folgende Vorlage und passen Sie sie an:

    {
    	"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. Führen Sie den folgenden Befehl aus, um eine Beispielkonfigurationsdatei zu erstellen:

    ./TabDeploy4EDG -g edg.config              
  3. Öffnen Sie die Konfigurationsdatei zum Bearbeiten:

    sudo nano edg.config              

    Sie müssen mindestens die IP-Adressen der einzelnen EC2-Hosts, einen Dateipfad zur Registrierungsdatei und einen gültigen Lizenzschlüssel hinzufügen.

  4. Wenn Sie mit dem Bearbeiten der Konfigurationsdatei fertig sind, speichern und schließen Sie sie.

  5. Führen Sie TabDeploy4EDG mit dem folgenden Befehl aus:

    ./TabDeploy4EDG -f edg.config         

Beispiel: Automatisieren der Bereitstellung einer AWS-Infrastruktur mit Terraform

In diesem Abschnitt wird beschrieben, wie Terraform konfiguriert und ausgeführt wird, um die EDG-Referenzarchitektur in AWS bereitzustellen. Die hier vorgestellte Terraform-Beispielkonfiguration stellt einen AWS VPC mit den Subnetzen, Sicherheitsgruppen und EC2-Instanzen bereit, die in Teil 3 - Vorbereiten der Bereitstellung von Tableau Server Enterprise beschrieben werden.

Terraform-Beispielvorlagen sind auf der Tableau-Website für Beispiele unter https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(Link wird in neuem Fenster geöffnet) verfügbar. Diese Vorlagen müssen für Ihre Organisation konfiguriert und angepasst werden. Der in diesem Abschnitt bereitgestellte Konfigurationsinhalt beschreibt die mindestens erforderlichen Vorlagenänderungen, die Sie für die Bereitstellung anpassen müssen.

Zielstellung

Die hier bereitgestellten Terraform-Vorlagen und -Inhalte sollen Ihnen ein funktionierendes Beispiel bieten, mit dem Sie EDG in einer Entwicklungstestumgebung schnell bereitstellen können.

Wir haben uns nach Kräften bemüht, die Terraform-Beispielbereitstellung zu überprüfen und zu dokumentieren. Die Verwendung von Terraform zum Bereitstellen und Verwalten von EDG in einer Produktionsumgebung erfordert jedoch gründliche Fachkenntnisse über Terraform, die den Rahmen dieses Beispiels sprengen würden. Tableau bietet keinen Support für die hier dokumentierte Terraform-Beispiellösung.

Endergebnis

Folgen Sie den Verfahren in diesem Abschnitt, um einen VPC in AWS einzurichten, der funktional dem VPC entspricht, der in Teil 3 - Vorbereiten der Bereitstellung von Tableau Server Enterprise spezifiziert ist.

Die Terraform-Beispielvorlagen und unterstützende Inhalte in diesem Abschnitt:

  • Erstellen einen VPC mit einer elastischen IP-Adresse, zwei Verfügbarkeitszonen und einer Subnetzorganisation, wie oben gezeigt (IP-Adressen sind unterschiedlich)
  • Erstellen die Sicherheitsgruppen "Bastion", "Public", "Private" und "Data".
  • Legen die meisten Eingangs- und Ausgangsregeln für die Sicherheitsgruppen fest. Sie müssen Sicherheitsgruppen bearbeiten, nachdem Terraform ausgeführt wird.
  • Erstellen die folgenden EC2-Hosts (auf denen jeweils AWS Linux2 ausgeführt wird): "Bastion", "Proxy 1", "Proxy 2", "Tableau-Knoten 1", "Tableau-Knoten 2", "Tableau-Knoten 3" und "Tableau-Knoten 4".
  • EC2-Hosts für PostgreSQL werden nicht erstellt. Sie müssen den EC2 manuell in der Daten-Sicherheitsgruppe "Datensicherheit" erstellen und dann PostgreSQL installieren und konfigurieren, wie unter Installieren, Konfigurieren und Anfertigen einer tar-Sicherung von PostgreSQL beschrieben.

Anforderungen

  • AWS-Konto – Sie müssen Zugriff auf ein AWS-Konto haben, mit dem Sie VPCs erstellen können.
  • Wenn Sie Terraform auf einem Windows-Computer ausführen, müssen Sie AWS CLI installieren.
  • Eine verfügbare elastische IP-Adresse in Ihrem AWS-Konto.
  • Eine Domäne, die in AWS Route 53 registriert ist. Terraform wird eine DNS-Zone und zugehörige SSL-Zertifikate in Route 53 erstellen. Daher muss das Profil, unter dem Terraform ausgeführt wird, auch über entsprechende Berechtigungen in Route 53 verfügen.

Voraussetzungen

  • Die Befehlszeilenbeispiele in diesem Verfahren sind für Terminal mit Apple iOS gedacht. Wenn Sie Terraform unter Windows ausführen, müssen Sie möglicherweise Befehle mit Dateipfaden entsprechend anpassen.
  • Ein Terraform-Projekt besteht aus vielen Textkonfigurationsdateien (Dateierweiterung .tf). Sie konfigurieren Terraform, indem Sie diese Dateien anpassen. Wenn Sie keinen soliden Texteditor haben, installieren Sie Atom oder Text++.
  • Wenn Sie das Terraform-Projekt mit anderen teilen, empfehlen wir, das Projekt zur Änderungsverwaltung in Git zu speichern.

Schritt 1: Vorbereiten der Umgebung

A.) Herunterladen und Installieren von Terraform

https://www.terraform.io/downloads(Link wird in neuem Fenster geöffnet)

B.) Generieren eines privaten/öffentlichen-Schlüsselpaares

Das ist der Schlüssel, den Sie verwenden werden, um auf AWS und die resultierende VPC-Umgebung zuzugreifen. Wenn Sie Terraform ausführen, werden Sie den öffentlichen Schlüssel mit einbeziehen.

Öffnen Sie ein Terminal und führen Sie die folgenden Befehle aus:

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

    openssl genrsa -out my-key.pem 1024
  2. Erstellen Sie einen öffentlichen Schlüssel. Dieses Schlüsselformat wird für Terraform nicht verwendet. Sie werden ihn später in diesem Verfahren in einen SSH-Schlüssel konvertieren:

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. Legen Sie Berechtigungen für den privaten Schlüssel fest:

    sudo chmod 0600 my-key.pem

    So legen Sie Berechtigungen unter Windows fest:

    • Suchen Sie die Datei im Windows Explorer, klicken Sie mit der rechten Maustaste auf die Datei und wählen Sie dann Eigenschaften aus. Navigieren Sie auf die Registerkarte Sicherheit und klicken Sie dann auf Erweitert.
    • Ändern Sie den Eigentümer so, dass Sie es sind, deaktivieren Sie Vererbung und löschen Sie alle Berechtigungen. Gewähren Sie sich Vollzugriff und klicken Sie dann auf Speichern. Kennzeichnen Sie die Datei als schreibgeschützt.
  4. Erstellen Sie den öffentlichen SSH-Schlüssel. Das ist der Schlüssel, den Sie später in diesem Verfahren nach Terraform kopieren werden.

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

C.) Herunterladen des Projekts und Hinzufügen eines "State"-Verzeichnisses

  1. Laden Sie das EDG-Terraform-Projekt(Link wird in neuem Fenster geöffnet) herunter, entpacken Sie es und speichern Sie alles auf Ihrem lokalen Computer. Nachdem Sie den Download entpackt haben, verfügen Sie über ein Verzeichnis der obersten Ebene ("edg-terraform") und eine Reihe von Unterverzeichnissen.

  2. Erstellen Sie ein Verzeichnis namensstate als gleichwertiges Gegenstück zu dem edg-terraform-Verzeichnis der obersten Ebene.

Schritt 2: Anpassen der Terraform-Vorlagen

Sie müssen die Terraform-Vorlagen an Ihre AWS- und EDG-Umgebung anpassen. Das hier gezeigte Beispiel gibt die mindestens erforderlichen Anpassungen an, die in den meisten Organisationen vorgenommen werden müssen. Es ist wahrscheinlich, dass Ihre konkrete Umgebung andere Anpassungen erfordert.

Dieser Abschnitt ist nach Vorlagennamen organisiert.

Vergessen Sie nicht, alle vorgenommenen Änderungen zu speichern, bevor Sie mit Schritt 3: Ausführen von Terraform – fortfahren.

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. Öffnen Sie den öffentlichen Schlüssel, den Sie in Schritt 1B generiert haben, und kopieren Sie den Schlüssel:

     less my-key-ssh.pub

    Windows: Kopieren Sie den Inhalt Ihres öffentlichen Schlüssels.

  2. Kopieren Sie die Zeichenfolge des öffentlichen Schlüssels in das Argument "public_key", zum Beispiel:

    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. Fügen Sie Tags gemäß den Anforderungen Ihrer Organisation hinzu. Beispiel:

    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

Aktualisieren Sie den Namen der Stammdomäne. Dieser Name muss mit der Domäne übereinstimmen, die Sie in Route 53 registriert haben.

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

In der Standardeinstellung ist die Unterdomäne tableau als VPC-DNS-Domänenname angegeben. Um dies zu ändern, aktualisieren Siesubdomain wie folgt:

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.

  • Falls erforderlich, fügen Sie einen Tags-Blob hinzu:

    tags = { 
     "Name" : var.ec2_name,
     "user.owner" = "ALIAS",
     "Application" = "tableau",
     "Creator" = "ALIAS@example.com",
     "DeptCode" = "8675309",
     "Description" = "EDG",
     "Environment" = "test",
     "Group" = "itcloud@example.com"
     }
    }
  • Aktualisieren Sie gegebenenfalls Ihren Speicher, um Ihre Datenanforderungen zu erfüllen:

    Stammvolume:

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    Anwendungsvolume:

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

Schritt 3: Ausführen von Terraform

A.) Initialisieren von Terraform

Wechseln Sie in Terminal in das Verzeichnis edg-terraform und führen Sie den folgenden Befehl aus:

terraform init

Wenn die Initialisierung erfolgreich war, fahren Sie mit dem nächsten Schritt fort. Wenn die Initialisierung fehlgeschlagen ist, folgen Sie den Anweisungen in der Terraform-Ausgabe.

B.) Planen von Terraform

Führen Sie im gleichen Verzeichnis den Planbefehl ("plan") aus:

terraform plan

Dieser Befehl kann mehrmals ausgeführt werden. Führen Sie ihn so oft aus, bis alle Fehler behoben sind. Sobald dieser Befehl fehlerfrei ausgeführt wird, können Sie mit dem nächsten Schritt fortfahren.

C.) Anwenden von Terraform

Führen Sie im gleichen Verzeichnis den Anwendungsbefehl ("apply") aus:

terraform apply

Terraform will prompt you to verify deployment, type Yes.

Optional: Löschen von Terraform

Sie können den gesamten VPC löschen, indem Sie den Löschbefehl ("destroy") ausführen:

terraform destroy

Dieser Befehl löscht nur das, was er geschaffen hat. Wenn Sie an einigen Objekten in AWS (z. B. Sicherheitsgruppen, Subnetze usw.) manuelle Änderungen vorgenommen haben, wird der destroy-Befehl fehlschlagen. Um einen fehlgeschlagenen oder nicht mehr reagierenden Löschvorgang zu beenden, geben Sie die Tastenkombination Control + C ein. Anschließend müssen Sie den VPC manuell so bereinigen, dass der Originalzustand wiederhergestellt wird, in dem er ursprünglich von Terraform erstellt wurde. Dann können Sie den Befehl destroy ausführen.

Schritt 4: Herstellen einer Verbindung zu Bastion

Alle Befehlszeilenverbindungen erfolgen über den Bastion-Host an TCP 22 (SSH-Protokoll).

  1. Erstellen Sie in AWS eine Regel für eingehenden Datenverkehr in der Bastion-Sicherheitsgruppe (AWS > Security Groups > Bastion SG > Edit inbound rules (AWS > Sicherheitsgruppen > Bastion-SG > Eingangsregel bearbeiten)) und erstellen Sie eine Regel, um SSH-Verbindungen (TCP 22) von der IP-Adresse oder Subnetzmaske zuzulassen, von der aus Sie Terminal-Befehle ausführen werden.

    Optional: Es kann hilfreich sein, während der Bereitstellung das Kopieren von Dateien zwischen den EC2-Instanzen in der privaten und der öffentlichen Gruppe ("Private" und "Public") zu erlauben. Erstellen von Regeln für eingehenden SSH-Datenverkehr:

    • Private: Erstellen Sie eine eingehende Regel, um SSH von "Public" zuzulassen.
    • Public: Erstellen Sie eine eingehende Regel, um SSH von "Private" und von "Public" zuzulassen.
  2. Verwenden Sie den pem-Schlüssel, den Sie in Schritt 1.B erstellt haben, um eine Verbindung zu dem Bastion-Host herzustellen:

    In einem Mac-Terminal:

    Führen Sie die folgenden Befehle in dem Verzeichnis aus, in dem der pem-Schlüssel gespeichert ist:

    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.

    Unter Windows mit PuTTY und Pageant:

    1. Erstellen Sie eine ppk-Datei aus dem pem-Schlüssel: Verwenden Sie den PuTTY Key Generator. Laden Sie den pem-Schlüssel, den Sie in Schritt 1.B erstellt haben. Klicken Sie nach dem Schlüsselimport auf Privaten Schlüssel speichern. Dadurch wird eine ppk-Datei erstellt.

    2. In PuTTY: Öffnen Sie die Konfiguration und nehmen Sie die folgenden Änderungen vor:

      • Sessions > Host name (Sitzungen > Hostname): Fügen Sie die IP-Adresse des Bastion-Hosts hinzu.
      • Sessions > Port (Sitzungen > Port): 22
      • Connection > Data > Auto-login username (Verbindung > Daten > Benutzername für automatische Anmeldung): ec2-user
      • Connection > SSH > Auth > Allow agent forwarding (Verbindung > SSH > Authentifizierung > Agentenweiterleitung zulassen)
      • Connection > SSH > Auth > (Verbindung > SSH > Authentifizierung >) Klicken Sie für den privaten Schlüssel auf "Browse" (Durchsuchen) und wählen Sie die .ppk-Datei aus, die Sie eben erstellt haben.
    3. Installieren Sie Pageant und laden Sie die ppk in die Anwendung.

    Schritt 5: Installieren von PostgreSQL

    Die Terraform-Vorlage installiert nicht PostgreSQL, um als externes Repository verwendet zu werden. Allerdings werden die zugehörige Sicherheitsgruppe und das Subnetz erstellt. Wenn Sie das externe Repository auf einer EC2-Instanz installieren möchten, auf der PostgreSQL ausgeführt wird, müssen Sie die EC2-Instanz wie in Teil 3 - Vorbereiten der Bereitstellung von Tableau Server Enterprise beschrieben bereitstellen.

    Installieren, konfigurieren und sichern Sie dann PostgreSQL in einer tar-Datei, wie in Teil 4 – Installieren und Konfigurieren von Tableau Server beschrieben.

    Schritt 6 (optional): Ausführen von DeployTab4EDG

    Das Skript "TabDeploy4EDG" automatisiert die Implementierung der Tableau-Bereitstellung auf vier Knoten, die in Teil 4 beschrieben wird. Siehe dazu TabDeploy4EDG – Skript für automatisierte Installation.

Vielen Dank für Ihr Feedback!