Accès à l'état distant et à l'espace de travail croisé
IBM Cloud® fournit une gestion à distance intégrée pour Terraform. Les fichiers d'état Terraform sont automatiquement conservés entre les exécutions et sont accessibles par les commandes et les opérations IBM Cloud®. La gestion à distance IBM Cloud® permet le travail en équipe et les opérations partagées de l'espace de travail, avec un verrouillage d'état intégré empêchant les opérations simultanées sur le même fichier d'état.
La gestion intégrée des états distants de l'espace de travail prend en charge un certain nombre de cas d'utilisation Schematics:
- Partage des informations de ressource entre les espaces de travail. Cela permet à votre infrastructure d'être divisée en composants plus petits, avec des informations de ressource en lecture seule transmises entre les environnements à l'aide de sources de données d'état distant Schematics. Les environnements discrets liés par des sources de données permettent de déléguer la responsabilité de différents éléments de l'infrastructure à différentes équipes avec des informations partagées entre les espaces de travail en tant que ressources en lecture seule.
- Intégration des opérations d'espace de travail et d'action à Actions. Les informations sur les ressources de l'espace de travail peuvent être directement transmises en tant qu' inventaire dynamique Ansible sans qu'il soit nécessaire de créer manuellement un inventaire hôte ou d'utiliser des scripts d'inventaire.
Accès aux états et aux sorties de l'espace de travail
Vous pouvez accéder aux informations sur les ressources que vous gérez dans un espace de travail à partir d'autres espaces de travail de votre compte à l'aide des sources de données ibm_schematics_output et ibm_schematics_state.
IBM Cloud® utilise la prise en charge de l'état Terraform intégrée local et n'utilise pas la prise en charge backend de Terraform.
Aucune configuration supplémentaire n'est requise dans votre Terraform configs pour activer la gestion des états à distance IBM Cloud®. Schematics n'utilise pas la source de données Terraform remote_state, mais vous
utilisez la source de données ibm_schematics_output pour accéder aux informations.
En quoi la source de données ibm_schematics_state est-elle différente de la source de données remote_state ?
Lorsque vous utilisez la source de données remote_state, vous devez configurer
un backend pour vous connecter à vos espaces de travail. Avec la source de données ibm_schematics_state, vous avez automatiquement accès au backend intégré Schematics et pouvez accéder directement aux informations de l'espace
de travail.
Que dois-je faire pour accéder aux informations sur les ressources dans d'autres espaces de travail?
A l'instar de la source de données remote_state, vous ne pouvez accéder qu'aux informations que vous avez
configurées en tant que valeurs de sortie dans votre modèle Terraform. Imaginons par exemple que vous disposiez d'un espace de travail que vous avez utilisé pour mettre à disposition un VPC. Pour accéder à l'ID VPC, vous devez définir l'ID
comme variable de sortie dans votre fichier de configuration Terraform.
Pour utiliser la source de données ibm_schematics_output, procédez comme suit :
-
Suivez l'exemple du tutoriel de mise en route pour créer un espace de travail Schematics et provisionner un serveur virtuel dans un VPC. A mesure que vous exécutez les instructions, vérifiez les variables de sortie définies à la fin du fichier de configuration Terraform
vpc.tf.Si vous avez déjà utilisé un fichier de configuration Terraform différent dans l'un de vos espaces de travail, vous pouvez utiliser cet espace de travail pour l'exercice. Prenez soin d'ajouter des valeurs de sortie comme indiqué dans cet exemple à votre fichier de configuration afin de pouvoir accéder ultérieurement à vos informations d'espace de travail.
output sshcommand { value = "ssh root@ibm_is_floating_ip.fip1.address" } output vpc_id { value = ibm_is_vpc.vpc.id }Dans cet exemple, deux valeurs de sortie sont définies, la commande
sshcommandpour accéder à l'instance de serveur virtuel dans votre VPC, et l'IDvpc_id. -
Extrayez l'ID de l'espace de travail VPC que vous avez créé.
A l'aide de la console:
- Dans le Tableau de bord de l'espace de travail
, sélectionnez l'espace de travail VPC.
- Sélectionnez l'onglet Paramètres.
- Recherchez l'ID de l'espace de travail dans la section Récapitulatif.
via l'interface de ligne de commande:
- Répertoriez les espaces de travail disponibles dans votre compte.
ibmcloud schematics workspace list - Recherchez l'ID d'espace de travail dans la colonne ID de la sortie de la ligne de commande.
L'utilisation de la commande Schematics
ibmcloud terraformaffiche un message d'avertissement et de dépréciation car les alias 'terraform' sont dépréciés. Utilisez "schematics" ou "sch" dans vos commandes. - Dans le Tableau de bord de l'espace de travail
-
Créez un autre fichier de configuration Terraform nommé
remotestate.tfpour accéder aux paramètres de sortie du fichiervpc.tfà l'aide de la source de donnéesibm_schematics_output. Pour permettre le contrôle des versions de ce fichier, veillez à stocker ce fichier de configuration dans un référentiel GitHub ou GitLab.data "ibm_schematics_workspace" "vpc" { workspace_id = "<schematics_workspace_ID>" } data "ibm_schematics_output" "vpc" { workspace_id = "<schematics_workspace_ID>" template_id = data.ibm_schematics_workspace.vpc.runtime_data.0.id } output "output_vars" { value = data.ibm_schematics_output.vpc.output_values } output "ssh_command" { value = data.ibm_schematics_output.vpc.output_values.sshcommand } output "vpc_id" { value = data.ibm_schematics_output.vpc.output_values.vpc_id }Composants du fichier de configuration 
Présentation des composants du fichier de configuration data.ibm_schematics_workspace.workspace_idEntrez l'ID de l'espace de travail VPC dans lequel vous avez défini les valeurs de sortie que vous souhaitez accéder. Vous avez besoin de cette source de données pour extraire l'ID modèle de l'espace de travail dans la source de données ibm_schematics_output.data.ibm_schematics_output.workspace_idEntrez l'ID de l'espace de travail VPC dans lequel vous avez défini les valeurs de sortie que vous souhaitez accéder. data.ibm_schematics_output.template_idEntrez data.ibm_schematics_workspace.vpc.runtime_data.0.idpour référencer le modèle Terraform de votre espace de travail.output.output_vars.valueUtilisez la syntaxe d'interpolation Terraform pour accéder à toutes les valeurs de sortie que vous avez définies dans le fichier vpc.tfà l'aide du paramètre de sortieoutput_valuesde la source de donnéesibm_schematics_output. Le paramètre de sortieoutput_valuesrenvoie toutes les valeurs de sortie sous forme de liste.output.sshcomand.valueetoutput.vpc_id.valueVous pouvez accéder à une valeur spécifique dans la liste output_valuesen ajoutant l'ID de la valeur de sortie à votre source de donnéesibm_schematics_output. Par exemple, pour accéder àvpc_id, utilisez simplementdata.ibm_schematics_output.vpc.output_values.vpc_id. -
Créez un espace de travail pointant vers le fichier
remotestate.tfdans votre référentiel GitHub ou GitLab. Si vous voulez télécharger un fichier d'archivage sur bande (.tar) à partir de votre machine locale, utilisez la commandeibmcloud schematics workspace upload. -
Exécutez votre code Terraform dans Schematics. Lorsque vous consultez vos journaux, vous pouvez voir les valeurs de sortie de votre espace de travail VPC dans la section Output.
Exemple de sortie
... 2020/02/21 19:49:30 Terraform show | Outputs: 2020/02/21 19:49:30 Terraform show | 2020/02/21 19:49:30 Terraform show | Output_vars = { 2020/02/21 19:49:30 Terraform show | sshcommand = ssh root@169.61.225.111 2020/02/21 19:49:30 Terraform show | vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a 2020/02/21 19:49:30 Terraform show | } 2020/02/21 19:49:30 Terraform show | sshcommand = ssh root@169.61.225.111 2020/02/21 19:49:30 Terraform show | vpc_id = a1a11aa1-a111-a11a-a111-aa1aa11a1a1a