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

Cette rubrique présente des outils et d’autres options de déploiement 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 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 sur quatre nœuds décrit dans la Partie 4 - Installer et configurer Tableau Server. Si vous suivez l’exemple d’implémentation AWS décrit dans ce guide, vous pourrez peut-être exécuter le script TabDeploy4EDG.

Exigences. Pour exécuter le script, vous devez préparer et configurer l’environnement AWS conformément à l’exemple d’implémentation 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 d’implémentation.
  • 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 PostgreSQL et créer une sauvegarde tar.
  • 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 bootstrap et le fichier de configuration pour TabDeploy4EDG.
  • Configure les services dans le cluster 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écharger et copier le script sur l’hôte bastion

  1. Copiez le script 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

Vous devez exécuter TabDeploy4EDG 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éez, modifiez et enregistrez 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 du fichier d’enregistrement et une clé produit 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 pour déployer 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 de modèle minimales requises que vous devez personnaliser pour le déploiement.

Objectif

Les modèles et le contenu Terraform fournis ici sont conçus pour 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 de 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 de support pour l’exemple de solution Terraform documenté ici.

État final

Suivez la procédure de cette section pour configurer un VPC dans AWS dont le fonctionnement est équivalent à celui du VPC spécifié dans Partie 3 - Préparer le déploiement de Tableau Server en entreprise.

Exemples de modèles Terraform et contenu associé de cette section :

  • Création d’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)
  • Création des groupes de sécurité Bastion, Public, Privé et Données.
  • Définition de 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.
  • Création des hôtes EC2 suivants (chacun exécutant AWS Linux2) : bastion, proxy 1 proxy 2, Tableau node 1, Tableau node 2, Tableau node 3, Tableau node 4.
  • Les hôtes EC2 pour PostgreSQL ne sont pas créés. Vous devez créer EC2 manuellement dans le groupe de sécurité des données, puis installer et configurer PostgreSQL comme décrit dans Installer, configurer PostgreSQL et créer une sauvegarde tar.

Exigences

  • Compte AWS : vous devez avoir accès à un compte AWS qui vous permet de créer des VPC.
  • Si vous exécutez Terraform à partir d’un ordinateur Windows, vous devrez installer l’interface en ligne de commande AWS.
  • Une adresse IP élastique disponible dans votre compte AWS.
  • Un domaine enregistré dans AWS Route 53. Terraform créera 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 avec Apple OS. 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 nombreux fichiers de configuration 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

Il s’agit de la clé que vous utiliserez pour accéder à AWS et à l’environnement VPC résultant. Lorsque vous exécutez Terraform, vous incluez la clé publique.

Ouvrez le Terminal et entrez 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 plus tard dans cette procédure :

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

    sudo chmod 0600 my-key.pem

    Pour définir des autorisations sous Windows :

    • Localisez le fichier dans l’Explorateur Windows, faites un clic droit dessus puis sélectionnez Propriétés. Accédez à l’onglet Sécurité, puis cliquez sur Avancé.
    • Modifiez le propriétaire sur votre nom, désactivez l’héritage et supprimez toutes les autorisations. Accordez-vous le Contrôle total , puis cliquez sur Enregistrer. Marquez le fichier en lecture seule.
  4. Créez une clé publique ssh. Il s’agit de la clé que vous copierez dans Terraform plus tard dans le processus.

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

C. Télécharger le projet et ajouter le 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-les 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 appelé state, en tant qu’homologue du répertoire 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. Le présent exemple fournit les personnalisations de modèle minimales que la plupart des organisations devront effectuer. Il est probable que votre environnement particulier nécessitera 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 :

     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 indiqué comme nom de domaine DNS VPC. Pour le modifier, 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 le 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 a échoué, 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. Une fois que 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 : Supprimer Terraform

Vous pouvez supprimer l’intégralité du VPC en exécutant la commande destroy :

terraform destroy

La commande destroy ne détruira que ce qu’elle a créé. Si vous avez apporté des modifications manuelles à certains objets dans AWS (par exemple, des groupes de sécurité, des sous-réseaux, etc.), la commande destroy échouera. Pour sortir d’une opération de destruction en échec/suspendue, tapez Control + C. Vous devez ensuite nettoyer manuellement le VPC pour le remettre dans l’état où il se trouvait lorsque Terraform l’avait créé à l’origine. Vous pouvez alors exécuter la commande destroy.

Étape 4 - Connexion à bastion

Toutes les connexions en ligne de commande se font via 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é > Bastion SG > Modifier les règles entrantes) et créez une règle pour 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 : vous trouverez peut-être 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 pour autoriser SSH depuis Public
    • Public : créer une règle entrante pour autoriser SSH depuis le privé et depuis le public
  2. Utilisez la clé pem que vous avez créée à l’étape 1.B pour vous connecter à l’hôte bastion :

    Sur le Terminal Mac :

    Exécutez les commandes suivantes à partir du répertoire sur 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éer 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. Cela crée un fichier ppk.

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

      • Sessions>Nom d’hôte : ajoutez l’adresse IP de l’hôte bastion.
      • Sessions>Port : 22
      • Connexion> Données> Nom d’utilisateur de connexion automatique : ec2-user
      • Connexion>SSH>Auth>Autoriser le transfert de l’agent
      • 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 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. Par contre, 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 comme décrit dans Partie 3 - Préparer le déploiement de Tableau Server en entreprise.

    Ensuite, installez, configurez PostgreSQL et sauvegardez-le 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’exemple d’installation du déploiement Tableau à quatre nœuds qui est décrit dans la Partie 4. Voir Script d’installation automatisée TabDeploy4EDG.

Merci de vos commentaires !Avis correctement envoyé. Merci