Annexe - Boîte à outils de déploiement AWS

Cette rubrique inclut des outils et des options de déploiement alternatives pour l’architecture de référence lorsqu’elle est déployée dans AWS. Plus précisément, cette rubrique décrit comment automatiser l’exemple de déploiement AWS décrit dans l’EDG.

Script d’installation automatisée TabDeploy4EDG

Le script TabDeploy4EDG(Le lien s’ouvre dans une nouvelle fenêtre) automatise la mise en œuvre du déploiement Tableau à quatre nœuds décrit dans la Partie 4 - Installer et configurer Tableau Server. Si vous suivez l’exemple de mise en œuvre AWS tel que décrit dans ce guide, vous pourrez peut-être exécuter TabDeploy4EDG.

Exigences Pour exécuter le script, vous devez préparer et configurer l’environnement AWS conformément à l’exemple de mise en œuvre décrit dans Partie 3 - Préparer le déploiement de Tableau Server en entreprise

  • Le VPC, le sous-réseau et les groupes de sécurité ont été configurés comme décrit. Les adresses IP ne doivent pas nécessairement correspondre à celles qui sont affichées dans l’exemple de mise en œuvre.
  • Quatre instances EC2 exécutant les dernières versions mises à jour d’AWS Linux 2
  • PostgreSQL est installé et a été configuré comme décrit dans Installer, configurer et vérifier PostgreSQL.
  • Un fichier de sauvegarde tar de l’étape 1 se trouve sur l’instance EC2 où PostgreSQL est installé, comme décrit dans Effectuer une sauvegarde tar PostgreSQL de l’Étape 1.
  • L’instance EC2 qui exécutera le Nœud 1 du déploiement de Tableau Server a été configurée pour communiquer avec PostgreSQL comme décrit dans Partie 4 - Installer et configurer Tableau Server.
  • Vous vous êtes connecté à chaque instance EC2 avec une session SSH depuis l’hôte bastion.

Il faut compter environ 1,5 à 2 heures pour installer et configurer les quatre serveurs Tableau à l’aide du script. Le script configure Tableau en fonction des paramètres prescrits de l’architecture de référence. Le script effectue les actions suivantes :

  • Restaure la sauvegarde de l’étape 1 de l’hôte PostgreSQL si vous spécifiez un chemin vers le fichier tar de l’hôte PostgreSQL.
  • Oblitère les installations Tableau existantes sur tous les nœuds.
  • Exécute sudo yum update sur tous les nœuds.
  • Télécharge et copie le package rpm Tableau sur chaque nœud.
  • Télécharge et installe les dépendances sur chaque nœud.
  • Crée /app/tableau_server et installe le package sur tous les nœuds.
  • Installe le Nœud 1 avec un magasin d’identités local et configure le référentiel externe avec PostgreSQL.
  • Effectue l’installation du fichier bootstrap et la configuration initiale du Nœud 2 - Nœud 4.
  • Supprime le fichier d’amorçage et le fichier de configuration pour TabDeploy4EDG.
  • Configure les services dans le groupement Tableau selon les spécifications de l’architecture de référence.
  • Valide l’installation et renvoie l’état de chaque nœud.

Téléchargez et copiez le script sur l’hôte bastion

  1. Copiez le script à partir de la page d’exemples TabDeploy4EDG(Le lien s’ouvre dans une nouvelle fenêtre) et collez le code dans un fichier appelé TabDeploy4EDG.
  2. Enregistrez le fichier dans le répertoire de base sur l’hôte EC2 qui sert d’hôte bastion.
  3. Exécutez la commande suivante pour modifier le mode du fichier afin de le rendre exécutable :

     sudo chmod +x TabDeploy4EDG

Exécuter TabDeploy4EDG

TabDeploy4EDG doit être exécuté depuis l’hôte bastion. Le script a été écrit selon l’hypothèse d’une exécution dans le contexte de l’agent de transfert ssh comme décrit dans Exemple : connexion à l’hôte bastion dans AWS. Si l’exécution n’a pas lieu dans le contexte de l’agent de transfert ssh, vous serez invité à saisir des mots de passe tout au long du processus d’installation.

  1. Créer, modifier et enregistrer un fichier d’enregistrement (registration.json). Le fichier doit être un fichier JSON correctement formaté. Copiez et personnalisez le modèle suivant :

    {
    	"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. Exécutez la commande suivante pour générer un fichier de configuration de modèle :

    ./TabDeploy4EDG -g edg.config              
  3. Ouvrez le fichier de configuration à modifier :

    sudo nano edg.config              

    Au minimum, vous devez ajouter les adresses IP de chaque hôte EC2, un chemin d’accès au fichier d’enregistrement et une clé de licence valide.

  4. Lorsque vous avez terminé de modifier le fichier de configuration, enregistrez-le, puis fermez-le.

  5. Pour exécuter TabDeploy4EDG, exécutez la commande suivante :

    ./TabDeploy4EDG -f edg.config         

Exemple : Automatiser le déploiement de l’infrastructure AWS avec Terraform

Cette section décrit comment configurer et exécuter Terraform en vue du déploiement de l’architecture de référence EDG dans AWS. L’exemple de configuration Terraform présenté ici déploie un VPC AWS avec les sous-réseaux, les groupes de sécurité et les instances EC2 décrits dans Partie 3 - Préparer le déploiement de Tableau Server en entreprise.

Des exemples de modèles Terraform sont disponibles sur le site Web Tableau Samples à l’adresse https://help.tableau.com/samples/en-us/edg/edg-terraform.zip(Le lien s’ouvre dans une nouvelle fenêtre). Ces modèles doivent être configurés et personnalisés pour votre organisation. Le contenu de configuration fourni dans cette section décrit les modifications minimales requises pour le modèle que vous devez personnaliser pour le déploiement.

Objectif

Les modèles et le contenu Terraform fournis ici sont destinés à fournir un exemple de travail qui vous permettra de déployer EDG rapidement dans un environnement de test de développement.

Nous avons tout mis en œuvre pour tester et documenter l’exemple de déploiement Terraform. Cependant, l’utilisation de Terraform pour déployer et maintenir EDG dans un environnement de production nécessitera une expertise Terraform qui dépasse le cadre de cet exemple. Tableau ne fournit pas d’assistance pour l’exemple de solution Terraform documenté dans les présentes.

État final

Suivez la procédure décrite dans la présente section pour configurer un VPC dans AWS qui est équivalent sur le plan fonctionnel au VPC spécifié dans Partie 3 - Préparer le déploiement de Tableau Server en entreprise.

Les exemples de modèles Terraform et le contenu associé de cette section :

  • permettent de créer un VPC avec une adresse IP élastique, deux zones de disponibilité et une organisation de sous-réseaux comme indiqué ci-dessus (les adresses IP sont différentes)
  • permettent de créer des groupes de sécurité Bastion, Public, Privé et Données.
  • permettent de définir la plupart des règles d’entrée et de sortie sur les groupes de sécurité. Vous devrez modifier les groupes de sécurité après l’exécution de Terraform.
  • permettent de créer les hôtes EC2 suivants (chacun exécutant AWS Linux2) : bastion, proxy 1 proxy 2, nœud1 Tableau, nœud2 Tableau, nœud3 Tableau, nœud4 Tableau.
  • Les hôtes EC2 pour PostgreSQL ne sont pas créés. Vous devez créer l’EC2 manuellement dans le groupe de sécurité des données, puis installer et configurer PostgreSQL tel que décrit dans Installer, configurer et vérifier PostgreSQL.

Exigences

  • Compte AWS - vous devez avoir accès à un compte AWS qui vous permet de créer des VPC.
  • Si vous exécutez Terraform depuis un ordinateur Windows, vous devrez installer l’interface en ligne de commande d’AWS.
  • Une adresse IP élastique disponible dans votre compte AWS.
  • Un domaine enregistré dans Route 53 d’AWS. Terraform crée une zone DNS et les certificats SSL associés dans Route 53. Par conséquent, le profil sous lequel Terraform s’exécute doit également disposer des autorisations appropriées dans Route 53.

Avant de commencer

  • Les exemples de ligne de commande de cette procédure concernent Terminal fonctionnant sous le système d’exploitation d’Apple. Si vous exécutez Terraform sous Windows, vous devrez peut-être adapter les commandes avec les chemins d’accès aux fichiers, le cas échéant.
  • Un projet Terraform est composé de plusieurs fichiers de configuration au format texte (extension de fichier .tf). Vous configurez Terraform en personnalisant ces fichiers. Si vous ne disposez pas d’un éditeur de texte robuste, installez Atom ou Text++.
  • Si vous partagez le projet Terraform avec d’autres personnes, nous vous recommandons de stocker le projet dans Git pour la gestion des modifications.

Étape 1 - Préparer l’environnement

A. Télécharger et installer Terraform

https://www.terraform.io/downloads(Le lien s’ouvre dans une nouvelle fenêtre)

B. Générer une paire de clés privée-publique

Vous devrez utiliser cette clé pour accéder à AWS et à l’environnement VPC qui en résulte. Lorsque vous exécutez Terraform, vous devez inclure la clé publique.

Ouvrez Terminal et exécutez les commandes suivantes :

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

    openssl genrsa -out my-key.pem 1024
  2. Créez une clé publique. Ce format de clé n’est pas utilisé pour Terraform. Vous la convertirez en clé ssh à un stade ultérieur du processus :

    openssl rsa -in my-key.pem -pubout > my-key.pub
  3. Définissez les autorisations sur la clé privée :

    sudo chmod 0600 my-key.pem

    Pour définir des autorisations sous Windows :

    • Trouvez l’emplacement du fichier dans l’Explorateur Windows, cliquez avec le bouton droit sur le fichier, puis sélectionnez Propriétés. Accédez à l’onglet Sécurité, puis cliquez sur Avancé.
    • Devenez le propriétaire, désactivez l’héritage et supprimez toutes les autorisations. Accordez-vous le contrôle total, puis cliquez sur Enregistrer. Marquez le fichier comme étant en lecture seule.
  4. Créez une clé publique ssh. Vous devrez copier cette clé dans Terraform à un stade ultérieur du processus.

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

C. Télécharger le projet et ajouter un répertoire d’état

  1. Téléchargez et décompressez le projet EDG Terraform(Le lien s’ouvre dans une nouvelle fenêtre) et enregistrez-le sur votre ordinateur local. Après avoir décompressé le téléchargement, vous aurez un répertoire de niveau supérieur, edg-terraform, et une série de sous-répertoires.

  2. Créez un répertoire nommé state, qui est égal au répertoire de niveau supérieur edg-terraform.

Étape 2 : Personnaliser les modèles Terraform

Vous devez personnaliser les modèles Terraform en fonction de votre environnement AWS et EDG. L’exemple présenté ici fournit les personnalisations minimales du modèle que la plupart des organisations devront effectuer. Votre environnement particulier nécessitera probablement d’autres personnalisations.

Cette section est organisée par nom de modèle.

Assurez-vous d’enregistrer toutes les modifications avant de passer à l’Étape 3 - Exécuter 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. Ouvrez la clé publique que vous avez générée à l’étape 1B et copiez la clé :

     less my-key-ssh.pub

    Windows : copiez le contenu de votre clé publique.

  2. Copiez la chaîne de clé publique dans l’argument public_key, par exemple :

    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. Ajoutez des balises selon les exigences de votre organisation. Par exemple :

    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

Mettez à jour le nom de domaine racine. Ce nom doit correspondre au domaine que vous avez enregistré dans Route 53.

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

Par défaut, le sous-domaine, tableau , est précisé pour le nom de domaine VPC DNS. Pour changer cela, mettez à jour 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 nécessaire, ajoutez des balises 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"
     }
    }
  • Si nécessaire, mettez éventuellement à jour votre espace de stockage pour gérer vos besoins en données :

    Volume racine :

    root_block_device {
     volume_size = 100
     volume_type = "gp3"
    }

    Volume d’applications :

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

Étape 3 - Exécuter Terraform

A. Initialiser Terraform

Dans Terminal, passez au répertoire edg-terraform et exécutez la commande suivante :

terraform init

Si l’initialisation réussit, passez à l’étape suivante. Si l’initialisation échoue, suivez les instructions de la sortie Terraform.

B. Planifier Terraform

Depuis le même répertoire, exécutez la commande plan :

terraform plan

Cette commande peut être exécutée plusieurs fois. Exécutez-la autant de fois que nécessaire pour corriger les erreurs. Lorsque cette commande s’exécute sans erreur, passez à l’étape suivante.

C. Appliquer Terraform

Depuis le même répertoire, exécutez la commande apply :

terraform apply

Terraform will prompt you to verify deployment, type Yes.

Facultatif : Détruire Terraform

Vous pouvez détruire intégralement le VPC en exécutant la commande destroy :

terraform destroy

La commande destroy ne détruit uniquement ce qu’elle a créé. Si vous avez modifié manuellement certains objets dans AWS (par exemple, des groupes de sécurité, des sous-réseaux, etc.), la commande destroy échoue. Pour quitter une opération de destruction qui échoue ou qui est suspendue, tapez Control + C. Vous devez ensuite nettoyer manuellement le VPC pour le remettre dans l’état où il était lorsque Terraform l’a initialement créé. Vous pouvez alors lancer la commande destroy.

Étape 4 - Connexion à Bastion

Toute connexion à partir d’une ligne de commande se fait par l’hôte bastion sur TCP 22 (protocole SSH).

  1. Dans AWS, créez une règle entrante dans le groupe de sécurité bastion ( AWS > Groupes de sécurité > GS Bastion > Modifier les règles entrantes ) et créez une règle de manière à autoriser les connexions SSH (TCP 22) à partir de l’adresse IP ou du masque de sous-réseau où vous exécuterez les commandes Terminal.

    Facultatif : il peut s’avérer utile d’autoriser la copie de fichiers entre les instances EC2 dans les groupes privé et public pendant le déploiement. Créez des règles SSH entrantes :

    • Privé : créez une règle entrante de manière à autoriser une connexion SSH depuis le groupe Public
    • Public : créer une règle entrante de manière à autoriser une connexion SSH depuis les groupes Privé et Public
  2. Utilisez la clé pem que vous avez créée à l’étape 1.B pour vous connecter à l’hôte bastion :

    Sur Terminal sous Mac :

    Exécutez les commandes suivantes depuis le répertoire dans lequel la clé pem est stockée :

    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.

    Sous Windows avec PuTTY et Pageant :

    1. Créez une clé ppk à partir de la clé pem : utilisez le générateur de clé PuTTY. Chargez la clé pem que vous avez créée à l’étape 1.B. Une fois la clé importée, cliquez sur Enregistrer la clé privée. Cette action crée un fichier ppk.

    2. Dans PuTTY - ouvrez la configuration et effectuez les modifications suivantes :

      • Sessions>Nom d’hôte : ajoutez l’adresse IP de l’hôte bastion.
      • Sessions>Port : 22
      • Connexion>Donnée>Nom d’utilisateur pour la connexion automatique : ec2-user
      • Connexion>SSH>Auth>Autoriser le transfert d’agent(s)
      • Connexion>SSH>Auth> Pour la clé privée, cliquez sur Parcourir et sélectionnez le fichier .ppk que vous venez de créer.
    3. Installez Pageant et chargez le fichier ppk dans l’application.

    Étape 5 - Installer PostgreSQL

    Le modèle Terraform n’installe pas PostgreSQL pour une utilisation en tant que référentiel externe. Cependant, le groupe de sécurité et le sous-réseau associés sont créés. Si vous installez le référentiel externe sur une instance EC2 exécutant PostgreSQL, vous devez déployer l’instance EC2 tel que décrit dans Partie 3 - Préparer le déploiement de Tableau Server en entreprise.

    Ensuite, installez, configurez et sauvegardez PostgreSQL au format tar comme décrit dans Partie 4 - Installer et configurer Tableau Server.

    Étape 6 - (Facultatif) Exécuter DeployTab4EDG

    Le script TabDeploy4EDG automatise l’implémentation du déploiement Tableau à quatre nœuds qui est décrit dans la Partie 4. Consultez le Script d’installation automatisée TabDeploy4EDG.

Merci de vos commentaires!Votre commentaire s été envoyé avec succès. Merci!