Pour tout déploiement, vous pouvez inspecter ou modifier le fichier d'état. Par exemple, vous pouvez importer ou supprimer des ressources du déploiement, ce que vous faites en modifiant le fichier d'état.
Cette page explique comment utiliser le fichier d'état Terraform créé pour chaque déploiement et chaque révision. Pour en savoir plus sur le fichier d'état, consultez la section État.
Les instructions de cette page partent du principe que vous connaissez bien Terraform.
Avant de commencer
Assurez-vous de disposer des autorisations requises pour utiliser le fichier d'état. Le rôle
config.admin
inclut les autorisations requises. Les autorisations spécifiques requises sont les suivantes:config.deployments.lock
config.revisions.getState
config.deployments.updateState
config.deployments.unlock
config.deployments.getLock
config.deployments.getState
Assurez-vous de disposer d'une copie locale de la configuration Terraform. Il s'agit de la configuration qui correspond au fichier d'état avec lequel vous travaillez.
La copie locale de la configuration vous permet d'exécuter des commandes telles que
terraform refresh
outerraform plan
localement lorsque vous modifiez le fichier d'état.Installez Terraform pour utiliser la CLI Terraform sur votre machine locale.
Muter ou inspecter le fichier d'état
Pour muter (modifier) ou inspecter le fichier d'état, vous devez verrouiller le déploiement et télécharger le fichier d'état. Vous pouvez ensuite modifier ou inspecter le fichier d'état.
Après avoir modifié le fichier d'état, vous l'importez pour qu'Infra Manager l'utilise dans votre déploiement.
Verrouiller le déploiement
Verrouillez le déploiement pour empêcher toute modification du déploiement pendant que vous modifiez le fichier d'état. Le déploiement doit être verrouillé pour pouvoir télécharger le fichier d'état.
gcloud infra-manager deployments lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Remplacez :
- DEPLOYMENT_ID par l'identifiant de déploiement.
- PROJECT_ID par le projet dans lequel le déploiement s'exécute.
- LOCATION par l'emplacement où le déploiement s'exécute.
Le résultat de cette commande contient un
lock ID
qui permet d'importer et de déverrouiller le fichier d'état.Pour récupérer l'ID de la serrure à tout moment, utilisez la commande suivante:
gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION
Télécharger le fichier d'état
Pour télécharger le fichier d'état, vous devez utiliser une URL Cloud Storage signée:
SIGNED_STATE_DOWNLOAD_URL=$(gcloud infra-manager deployments export-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(signedUri)")
curl -s -X GET --output terraform.tfstate ${SIGNED_STATE_DOWNLOAD_URL}
Muter le fichier d'état en local
Vérifiez que la configuration (fichiers
*.tf
) se trouve dans le même répertoire que le fichier d'état téléchargé (terraform.tfstate
).Initialisez Terraform :
terraform init
Si vous avez déjà initialisé Terraform, vous devrez peut-être l'initialiser avec l'option de reconfiguration:
terraform init -reconfigure
Utilisez le fichier d'état selon vos besoins. Par exemple, vous pouvez effectuer des opérations d'inspection de l'état ou de mutation. Pour en savoir plus sur l'utilisation du fichier d'état, consultez la section Manipuler l'état Terraform.
Si vous apportez des modifications aux fichiers de configuration Terraform localement, importez la configuration modifiée. Importez cette configuration dans le bucket de stockage ou le dépôt git public que vous utilisez comme source pour déployer la configuration.
Importer le fichier d'état
Utilisez une URL Cloud Storage signée pour importer le fichier d'état:
Obtenez l'ID de la serrure:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Obtenez l'URL d'importation:
SIGNED_STATE_UPLOAD_URL=$(gcloud infra-manager deployments import-statefile DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID} --format="get(signedUri)") curl -s -X PUT --upload-file terraform.tfstate $SIGNED_STATE_UPLOAD_URL
Déverrouiller le déploiement
Obtenez l'ID de la serrure:
LOCK_ID=$(gcloud infra-manager deployments export-lock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --format="get(lockId)")
Déverrouillez le déploiement:
gcloud infra-manager deployments unlock DEPLOYMENT_ID --project PROJECT_ID --location LOCATION --lock-id ${LOCK_ID}
Étape suivante
- En savoir plus sur Terraform avec Google Cloud
- Mettre à jour un déploiement
- Afficher l'état d'un déploiement
- Afficher les ressources déployées
- Supprimez un déploiement.