Les conceptions qui incluent des configurations Terraform nécessitent un accès à un environnement d'exécution Terraform que vous intégrez au produit sur site Automation Assembler.

Ajout d'une exécution Terraform

L'environnement d'exécution se compose d'un cluster Kubernetes qui exécute des commandes de l'interface de ligne de commande Terraform pour effectuer les opérations demandées. En outre, l'environnement d'exécution collecte des journaux et renvoie les résultats des commandes de l'interface de ligne de commande Terraform.

Le produit sur site VMware Aria Automation nécessite que les utilisateurs configurent leur propre cluster Kubernetes d'exécution Terraform. Un seul environnement d'exécution Terraform par organisation est pris en charge. Tous les déploiements Terraform pour cette organisation utilisent le même environnement d'exécution.

Note :

Pour exécuter des commandes et des états Terraform, vous avez besoin d'un environnement d'exécution Terraform qui s'exécute sur K8s. Lorsque vous créez votre intégration Terraform dans une instance de VMware Aria Automation sur site, vous pouvez choisir entre un K8s géré (un cluster K8s déjà géré par VMware Aria Automation) ou un cluster K8s externe, (un cluster K8s qui n'est pas géré par VMware Aria Automation) et l'espace de noms dans lequel les espaces Terraform seront créés. Si vous utilisez un cluster externe, vous devez fournir un accès Kubeconfig au cluster K8s pour la cible d'exécution Terraform. Kubeconfig est une norme K8s et kubeconfig n'a pas besoin d'être un kubeconfig administrateur. Vous pouvez utiliser un compte de service avec des autorisations minimales, par exemple l'autorisation d'exécuter des espaces dans un espace de noms et l'autorisation de générer un fichier Kubeconfig à utiliser avec l'intégration d'exécution Terraform VMware Aria Automation.

  1. Vérifiez que vous disposez d'un cluster Kubernetes sur lequel vous souhaitez exécuter l'interface de ligne de commande Terraform.
    • Tous les utilisateurs peuvent fournir un fichier kubeconfig pour exécuter l'interface de ligne de commande Terraform sur un cluster Kubernetes non géré.
    • Les utilisateurs de licence Enterprise peuvent choisir d'exécuter l'interface de ligne de commande Terraform sur un cluster Kubernetes géré par VMware Aria Automation.

      Dans Automation Assembler, accédez à Infrastructure > Ressources > Kubernetes, et vérifiez que vous disposez d'un cluster Kubernetes. Consultez Utilisation de Kubernetes dans Automation Assembler si vous devez en ajouter un.

  2. Si le cluster Kubernetes a été récemment ajouté ou modifié, attendez que sa collecte de données se termine.

    La collecte de données récupère la liste des espaces de noms et d'autres informations, et peut prendre jusqu'à 5 minutes selon le fournisseur.

  3. Une fois la collecte de données terminée, accédez à Infrastructure > Connexions > Intégrations > Ajouter une intégration, puis sélectionnez la fiche Exécution Terraform.
  4. Entrée les paramètres.
    Figure 1. Exemple d'intégration d'exécution Terraform
    Exemple d'intégration d'exécution Terraform pour les utilisateurs de licence avancée
    Paramètre Description
    Nom Donnez un nom unique à l'intégration d'exécution.
    Description Expliquez à quoi sert l'intégration.
    Intégration d'exécution Terraform :
    Type d'exécution (Enterprise uniquement) Les utilisateurs de licence Enterprise peuvent choisir d'exécuter l'interface de ligne de commande Terraform sur un cluster Kubernetes géré par VMware Aria Automation ou sur un cluster non géré.
    Kubernetes kubeconfig (tous les utilisateurs)

    Pour un cluster Kubernetes non géré, collez l'intégralité du contenu du fichier kubeconfig pour le cluster externe.

    Pour utiliser une exécution externe de Kubernetes avec un serveur proxy, consultez Ajout de la prise en charge du proxy.

    Cette option est disponible pour tous les utilisateurs.

    Kubernetes cluster (Enterprise uniquement)

    Pour les clusters Kubernetes gérés par VMware Aria Automation, sélectionnez le cluster dans lequel vous voulez exécuter l'interface de ligne de commande Terraform.

    Le cluster et son fichier kubeconfig doivent être accessibles. Vous pouvez valider l'accès à kubeconfig avec une commande GET sur /cmx/api/resources/k8s/clusters/{clusterId}/kube-config.

    Cette option n'est disponible que pour les licences Enterprise.

    Espace de noms Kubernetes Sélectionnez l'espace de noms à utiliser dans le cluster pour créer des espaces qui exécutent l'interface de ligne de commande Terraform.
    Paramètres du conteneur d'exécution :
    Image Entrez le chemin d'accès à l'image du conteneur de la version de Terraform que vous souhaitez exécuter.
    Note : Le bouton VALIDER ne vérifie pas l'image du conteneur.
    Demande de CPU Entrez la quantité de CPU pour les conteneurs en cours d'exécution. La valeur par défaut est 250 millicœurs.
    Limite de CPU Entrez le CPU maximum autorisé pour l'exécution de conteneurs. La valeur par défaut est 250 millicœurs.
    Demande de mémoire Entrez la quantité de mémoire pour les conteneurs en cours d'exécution. La valeur par défaut est 512 Mo.
    Limite de mémoire Entrez la mémoire maximale autorisée pour les conteneurs en cours d'exécution. La valeur par défaut est 512 Mo.
  5. Cliquez sur VALIDER et ajustez les paramètres selon vos besoins.
  6. Cliquez sur AJOUTER.

Les paramètres sont mis en cache. Après l'ajout de l'intégration, vous pouvez modifier des paramètres tels que le cluster ou l'espace de noms, mais il peut s'écouler jusqu'à 5 minutes pour qu'une modification soit détectée et pour que l'interface de ligne de commande Terraform s'exécute sous les nouveaux paramètres.

Dépannage de l'exécution Terraform

Certains problèmes de déploiement de la configuration Terraform peuvent être liés à l'intégration d'exécution.

Problème Cause Résolution
La validation échoue avec une erreur indiquant que l'espace de noms n'est pas valide. Vous avez modifié le cluster, mais vous avez laissé l'espace de noms précédent dans l'interface utilisateur. Resélectionnez toujours un espace de noms après avoir modifié la sélection du cluster.
La liste déroulante d'espaces de noms est vide ou ne répertorie pas les espaces de noms récemment ajoutés. La collecte de données pour le cluster n'est pas terminée. La collecte de données prend jusqu'à 5 minutes après la saisie ou la modification du cluster et jusqu'à 10 minutes lors de la saisie ou de la modification de l'espace de noms. Pour un nouveau cluster avec des espaces de noms existants, attendez jusqu'à 5 minutes pour que la collecte de données se termine.

Pour un nouvel espace de noms dans un cluster existant, attendez jusqu'à 10 minutes pour que la collecte de données se termine.

Si le problème persiste, supprimez le cluster et rajoutez-le de nouveau sous Infrastructure > Ressources > Kubernetes.

Les conteneurs de l'interface de ligne de commande Terraform sont créés dans un cluster précédent, un espace de noms précédent ou avec des paramètres d'exécution précédents, même après la mise à jour du compte d'intégration. Le client de l'API Kubernetes utilisée par VMware Aria Automation est mis en cache pendant 5 minutes. Les modifications peuvent nécessiter jusqu'à 5 minutes pour prendre effet.
La validation ou une opération de déploiement Terraform échoue avec une erreur indiquant que kubeconfig n'est pas disponible. Ces erreurs se produisent parfois, car le cluster n'est pas accessible depuis VMware Aria Automation.

Dans d'autres cas, les informations d'identification de l'utilisateur, les jetons ou les certificats ne sont pas valides.

L'erreur kubeconfig peut se produire pour plusieurs raisons et peut nécessiter l'implication du support technique pour le dépannage.

Ajout de la prise en charge du proxy

Pour que votre cluster de runtime Kubernetes externe se connecte via un serveur proxy, suivez ces étapes.

  1. Connectez-vous à votre serveur de cluster Kubernetes.
  2. Créez un dossier vide.
  3. Dans le nouveau dossier, ajoutez les lignes suivantes à un nouveau fichier nommé Dockerfile.
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. Modifiez les valeurs d'espaces réservés de telle sorte que les variables d'environnement https_proxy et http_proxy incluent les paramètres du serveur proxy que vous utilisez pour accéder à Internet.

    protocol sera http ou https en fonction des éléments utilisés par votre serveur proxy, qui peut ne pas correspondre au nom de la variable d'environnement https_proxy ou http_proxy.

  5. Enregistrez et fermez Dockerfile.
  6. Dans le dossier vide, exécutez la commande suivante. Selon vos privilèges de compte, vous devrez peut-être exécuter la commande en mode sudo.

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    La commande crée une image Docker custom-terraform-runtime:1.0 locale.

  7. Dans Automation Assembler, sous Infrastructure > Connexions > Intégrations, accédez à l'intégration d'exécution Terraform.
  8. Créez ou modifiez les paramètres du conteneur d'exécution pour utiliser l'image custom-terraform-runtime:1.0.
    Image de proxy d'exécution Terraform