Dans ce guide de démarrage rapide, vous allez créer un fichier de configuration Terraform qui provisionne un bucket de stockage et y importe un objet sample_file.txt
. Pour suivre ce guide de démarrage rapide, vous allez utiliser votre shell et votre terminal locaux, ou l'éditeur et le terminal Cloud Shell. Vous utiliserez également la CLI Terraform, qui est préinstallée dans Cloud Shell.
Avant de commencer
Pour configurer un projet pour ce guide de démarrage rapide, procédez comme suit :
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage API.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Storage API.
Créer la structure de dossiers et le fichier de configuration Terraform
Pour créer le fichier de configuration Terraform et le fichier que vous allez importer en tant qu'objet dans Cloud Storage, procédez comme suit :
Cloud Shell
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
- Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform :
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
- Dans le terminal Cloud Shell, définissez le répertoire d'accueil comme répertoire actif :
cd
- Créez un dossier nommé
terraform
:
mkdir terraform
- Lancez l'éditeur Cloud Shell en cliquant sur Ouvrir l'éditeur dans la barre d'outils de la fenêtre Cloud Shell.
- Dans le volet Explorateur, effectuez un clic droit sur le dossier
terraform
, puis cliquez sur Nouveau fichier. - Saisissez
main.tf
comme nom de fichier, puis cliquez sur OK. - Dans le volet Explorateur, effectuez un clic droit sur le dossier
terraform
, puis cliquez sur Nouveau fichier. - Saisissez
sample_file.txt
comme nom de fichier, puis cliquez sur OK.
Interface système locale
- Si ce n'est pas déjà fait, installez et configurez Terraform.
Assurez-vous d'installer et d'initialiser Google Cloud CLI.
Par défaut, Terraform lit la configuration créée par Google Cloud CLI et déploie les ressources que vous spécifiez ultérieurement dans votre projet Google Cloud CLI actif.
- Dans votre terminal, définissez le répertoire d'accueil comme répertoire actif:
cd
- Créez un dossier nommé
terraform
:
mkdir terraform
- Dans l'éditeur de texte de votre choix, créez un fichier nommé
main.tf
dans votre dossierterraform
. - Dans l'éditeur de texte de votre choix, créez un fichier nommé
sample_file.txt
dans votre dossierterraform
.
Définir l'infrastructure dans le fichier de configuration Terraform
Pour définir l'infrastructure que vous souhaitez provisionner dans votre fichier de configuration Terraform, procédez comme suit :
Ouvrez le fichier
main.tf
.Copiez l'exemple suivant dans le fichier
main.tf
.# Create new storage bucket in the US # location with Standard Storage resource "google_storage_bucket" "static" { name = "BUCKET_NAME" location = "US" storage_class = "STANDARD" uniform_bucket_level_access = true } # Upload a text file as an object # to the storage bucket resource "google_storage_bucket_object" "default" { name = "OBJECT_NAME" source = "OBJECT_PATH" content_type = "text/plain" bucket = google_storage_bucket.static.id }
Remplacez :
BUCKET_NAME par le nom du bucket que vous souhaitez créer. Par exemple,
my-bucket
.OBJECT_NAME par le nom de l'objet que vous souhaitez importer. Pour ce guide de démarrage rapide, saisissez le nom
sample_file.txt
.OBJECT_PATH par le chemin d'accès à l'objet que vous souhaitez importer. Pour ce guide de démarrage rapide, saisissez le chemin d'accès
~/terraform/sample_file.txt
.
Enregistrez le fichier
main.tf
.
Initialiser le répertoire de travail contenant le fichier de configuration Terraform
Pour initialiser Terraform} et le répertoire contenant votre fichier de configuration Terraform, procédez comme suit :
Dans votre terminal, définissez le dossier
terraform
comme répertoire de travail actuel:cd ~/terraform
Initialisez Terraform :
terraform init
Si vous utilisez Cloud Shell et que vous êtes invité à l'autoriser, cliquez sur Autoriser.
Terraform initialise le répertoire de travail. Si l'initialisation du répertoire de travail réussit, Terraform renvoie un résultat semblable à celui-ci :
Terraform has been successfully initialized! You may now begin working with Terraform. Try running "terraform plan" to see any changes that are required for your infrastructure. All Terraform commands should now work. If you ever set or change modules or backend configuration for Terraform, rerun this command to reinitialize your working directory. If you forget, other commands will detect it and remind you to do so if necessary.
Prévisualiser le plan d'exécution
Le plan d'exécution Terraform est basé sur la configuration Terraform et indique les modifications que Terraform prévoit d'apporter à l'infrastructure et aux services Cloud Storage.
Affichez le plan d'exécution Terraform :
terraform plan
Exemple de résultat :
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# google_storage_bucket.static will be created
+ resource "google_storage_bucket" "static" {
+ force_destroy = false
+ id = (known after apply)
+ location = "US"
+ name = "my-bucket"
+ project = "my-project"
+ public_access_prevention = (known after apply)
+ self_link = (known after apply)
+ storage_class = "STANDARD"
+ uniform_bucket_level_access = true
+ url = (known after apply)
+ versioning {
+ enabled = (known after apply)
}
+ website {
+ main_page_suffix = (known after apply)
+ not_found_page = (known after apply)
}
}
# google_storage_bucket_object.default will be created
+ resource "google_storage_bucket_object" "default" {
+ bucket = (known after apply)
+ content_type = "text/plain"
+ crc32c = (known after apply)
+ detect_md5hash = "different hash"
+ id = (known after apply)
+ kms_key_name = (known after apply)
+ md5hash = (known after apply)
+ media_link = (known after apply)
+ name = "sample_file.txt"
+ output_name = (known after apply)
+ self_link = (known after apply)
+ source = "sample_file.txt"
+ storage_class = (known after apply)
}
Plan: 2 to add, 0 to change, 0 to destroy.
Appliquer les modifications proposées dans le plan d'exécution
Pour appliquer les modifications dans votre fichier de configuration Terraform, procédez comme suit :
Appliquez les modifications du plan d'exécution à l'infrastructure Cloud Storage en utilisant la commande suivante. Lorsque vous appliquez les modifications, Terraform crée un bucket de stockage et y importe
sample_file.txt
.terraform apply
Exemple de résultat :
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_storage_bucket.static will be created + resource "google_storage_bucket" "static" { + force_destroy = false + id = (known after apply) + location = "US" + name = "my-bucket" + project = "my-project" + public_access_prevention = (known after apply) + self_link = (known after apply) + storage_class = "STANDARD" + uniform_bucket_level_access = true + url = (known after apply) + versioning { + enabled = (known after apply) } + website { + main_page_suffix = (known after apply) + not_found_page = (known after apply) } } # google_storage_bucket_object.default will be created + resource "google_storage_bucket_object" "default" { + bucket = (known after apply) + content_type = "text/plain" + crc32c = (known after apply) + detect_md5hash = "different hash" + id = (known after apply) + kms_key_name = (known after apply) + md5hash = (known after apply) + media_link = (known after apply) + name = "sample_file.txt" + output_name = (known after apply) + self_link = (known after apply) + source = "sample_file.txt" + storage_class = (known after apply) } Plan: 2 to add, 0 to change, 0 to destroy. Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value:
Saisissez
yes
et appuyez sur Entrée.Si l'opération réussit, Terraform renvoie un résultat semblable à celui-ci :
Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
Afficher votre bucket de stockage et l'objet importé
Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.Le nouveau bucket contenant l'objet sample_file.txt
s'affiche. Notez que le provisionnement des ressources peut prendre quelques minutes après l'exécution de terraform apply
.
Nettoyer votre projet
Afin d'éviter que des frais inattendus ne soient facturés sur les ressources Google Cloud que vous avez créées dans le cadre du présent guide de démarrage rapide, procédez comme suit pour nettoyer les ressources :
Dans votre terminal, définissez le dossier
terraform
comme répertoire de travail actuel:cd ~/terraform
Supprimez les ressources Cloud Storage que vous avez créées sur la base de votre fichier de configuration Terraform :
terraform destroy
Si l'opération réussit, Terraform renvoie un résultat semblable à celui-ci :
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols: - destroy Terraform will perform the following actions: # google_storage_bucket.static will be destroyed - resource "google_storage_bucket" "static" { - default_event_based_hold = false -> null - force_destroy = false -> null - id = "my-bucket" -> null - labels = {} -> null - location = "US" -> null - name = "" -> null - project = "example-project" -> null - public_access_prevention = "inherited" -> null - requester_pays = false -> null - self_link = "https://www.googleapis.com/storage/v1/b/cbonnie-bucket-9" -> null - storage_class = "STANDARD" -> null - uniform_bucket_level_access = true -> null - url = "gs://BUCKET_NAME" -> null } # google_storage_bucket_object.default will be destroyed - resource "google_storage_bucket_object" "default" { - bucket = "my-bucket" -> null - content_type = "text/plain" -> null - crc32c = "yZRlqg==" -> null - detect_md5hash = "XrY7u+Ae7tCTyyK7j1rNww==" -> null - event_based_hold = false -> null - id = "my-bucket-sample_file.txt" -> null - md5hash = "XrY7u+Ae7tCTyyK7j1rNww==" -> null - media_link = "https://storage.googleapis.com/download/storage/v1/b/BUCKET_NAME/o/sample_file.txt?generation=1675800386233102&alt=media" -> null - metadata = {} -> null - name = "sample_file.txt" -> null - output_name = "sample_file.txt" -> null - self_link = "https://www.googleapis.com/storage/v1/b/BUCKET_NAME/o/sample_file.txt" -> null - source = "sample_file.txt" -> null - storage_class = "STANDARD" -> null - temporary_hold = false -> null } Plan: 0 to add, 0 to change, 2 to destroy. Do you really want to destroy all resources? Terraform will destroy all your managed infrastructure, as shown above. There is no undo. Only 'yes' will be accepted to confirm. Enter a value:
Saisissez
yes
et appuyez sur Entrée. Si l'opération réussit, Terraform renvoie un résultat semblable à celui-ci :Destroy complete! Resources: 2 destroyed.
Dans votre terminal, supprimez le dossier
terraform
.rm -rf ~/terraform
Pour vérifier que le bucket et l'objet ont été supprimés, accédez à la page Buckets de la console Google Cloud.
Étapes suivantes
- Consultez la section Ressources Terraform disponibles pour Cloud Storage.
- Consultez la page Ressources Terraform pour d'autres produits Google Cloud.