Μια εισαγωγή στο Terraform για αρχάριους – Εκμάθηση Terraform

Αναρωτιέστε, τι είναι το Terraform; Ας το μάθουμε.

Το Infrastructure as Code (IaC) είναι μια ευρέως διαδεδομένη ορολογία μεταξύ των επαγγελματιών DevOps. Είναι η διαδικασία διαχείρισης και παροχής της πλήρους υποδομής πληροφορικής (που περιλαμβάνει τόσο φυσικές όσο και εικονικές μηχανές) χρησιμοποιώντας αρχεία ορισμού αναγνώσιμα από μηχανή. Είναι μια προσέγγιση μηχανικής λογισμικού προς τις λειτουργίες. Βοηθά στην αυτοματοποίηση του πλήρους κέντρου δεδομένων χρησιμοποιώντας σενάρια προγραμματισμού.

Με όλες τις δυνατότητες που παρέχει το Infrastructure as Code, έχει πολλαπλές προκλήσεις:

  • Πρέπει να μάθουν να κωδικοποιούν
  • Δεν γνωρίζω τον αντίκτυπο της αλλαγής.
  • Χρειάζεται επαναφορά της αλλαγής
  • Δεν είναι δυνατή η παρακολούθηση των αλλαγών
  • Δεν είναι δυνατή η αυτοματοποίηση ενός πόρου
  • Πολλαπλά περιβάλλοντα για υποδομές

Το Terraform έχει δημιουργηθεί για να λύσει αυτές τις προκλήσεις.

Τι είναι το Terraform;

Terraform είναι μια υποδομή ανοιχτού κώδικα ως εργαλείο κώδικα που αναπτύχθηκε από τη HashiCorp. Χρησιμοποιείται για τον ορισμό και την παροχή της πλήρους υποδομής με χρήση μιας δηλωτικής γλώσσας που μαθαίνεται εύκολα.

Είναι ένα εργαλείο παροχής υποδομής όπου μπορείτε να αποθηκεύσετε τη ρύθμιση της υποδομής cloud ως κωδικούς. Μοιάζει πολύ με εργαλεία όπως π.χ CloudFormation, το οποίο θα χρησιμοποιούσατε για να αυτοματοποιήσετε την υποδομή AWS σας, αλλά μπορείτε να το χρησιμοποιήσετε μόνο στο AWS. Με το Terraform, μπορείτε να το χρησιμοποιήσετε και σε άλλες πλατφόρμες cloud.

Παρακάτω είναι μερικά από τα οφέλη της χρήσης Terraform.

  • Κάνει ενορχήστρωση, όχι μόνο διαχείριση διαμόρφωσης
  • Υποστηρίζει πολλούς παρόχους όπως AWS, Azure, GCP, DigitalOcean και πολλούς άλλους
  • Παρέχετε αμετάβλητη υποδομή όπου η διαμόρφωση αλλάζει ομαλά
  • Χρησιμοποιεί εύκολα κατανοητή γλώσσα, HCL (γλώσσα διαμόρφωσης HashiCorp)
  • Εύκολα φορητό σε οποιονδήποτε άλλο πάροχο
  • Υποστηρίζει αρχιτεκτονική μόνο για πελάτη, επομένως δεν χρειάζεται πρόσθετη διαχείριση ρυθμίσεων σε διακομιστή

Έννοιες Terraform Core

Παρακάτω είναι οι βασικές έννοιες/ορολογίες που χρησιμοποιούνται στο Terraform:

  • Μεταβλητές: Χρησιμοποιείται επίσης ως μεταβλητές εισόδου, είναι ζεύγος κλειδιού-τιμής που χρησιμοποιείται από τις μονάδες Terraform για να επιτρέπεται η προσαρμογή.
  • Πάροχος: Είναι μια προσθήκη για την αλληλεπίδραση με τα API της υπηρεσίας και την πρόσβαση στους σχετικούς πόρους της.
  • Module: Είναι ένας φάκελος με πρότυπα Terraform όπου ορίζονται όλες οι διαμορφώσεις
  • Κατάσταση: Αποτελείται από αποθηκευμένες πληροφορίες σχετικά με την υποδομή που διαχειρίζεται η Terraform και τις σχετικές διαμορφώσεις.
  • Πόροι: Αναφέρεται σε ένα μπλοκ ενός ή περισσότερων αντικειμένων υποδομής (υπολογιστικές περιπτώσεις, εικονικά δίκτυα κ.λπ.), τα οποία χρησιμοποιούνται για τη διαμόρφωση και τη διαχείριση της υποδομής.
  • Πηγή δεδομένων: Εφαρμόζεται από τους παρόχους για την επιστροφή πληροφοριών για εξωτερικά αντικείμενα στο terraform.
  • Τιμές εξόδου: Αυτές είναι οι επιστρεφόμενες τιμές μιας μονάδας terraform που μπορούν να χρησιμοποιηθούν από άλλες διαμορφώσεις.
  • Σχέδιο: Είναι ένα από τα στάδια όπου καθορίζει τι πρέπει να δημιουργηθεί, να ενημερωθεί ή να καταστραφεί για να μετακινηθεί από την πραγματική/τρέχουσα κατάσταση της υποδομής στην επιθυμητή κατάσταση.
  • Εφαρμογή: Είναι ένα από τα στάδια όπου εφαρμόζει τις αλλαγές πραγματικής/τρέχουσας κατάστασης της υποδομής για να μεταβεί στην επιθυμητή κατάσταση.

Κύκλος ζωής Terraform

Ο κύκλος ζωής Terraform αποτελείται από – έναρξη, σχεδιασμός, εφαρμογή και καταστροφή.

  • Το Terraform init προετοιμάζει τον κατάλογο εργασίας που αποτελείται από όλα τα αρχεία διαμόρφωσης
  • Το σχέδιο Terraform χρησιμοποιείται για τη δημιουργία ενός σχεδίου εκτέλεσης για την επίτευξη μιας επιθυμητής κατάστασης της υποδομής. Οι αλλαγές στα αρχεία ρυθμίσεων γίνονται για να επιτευχθεί η επιθυμητή κατάσταση.
  • Η εφαρμογή Terraform κάνει στη συνέχεια τις αλλαγές στην υποδομή όπως ορίζονται στο σχέδιο και η υποδομή έρχεται στην επιθυμητή κατάσταση.
  • Η καταστροφή Terraform χρησιμοποιείται για τη διαγραφή όλων των παλαιών πόρων υποδομής, οι οποίοι επισημαίνονται ως μολυσμένοι μετά τη φάση εφαρμογής.

Πώς λειτουργεί το Terraform;

Το Terraform έχει δύο βασικά στοιχεία που συνθέτουν την αρχιτεκτονική του:

Terraform Core

Ο πυρήνας Terraform χρησιμοποιεί δύο πηγές εισόδου για να κάνει τη δουλειά του.

Η πρώτη πηγή εισόδου είναι μια διαμόρφωση Terraform που εσείς, ως χρήστης, διαμορφώνετε. Εδώ, ορίζετε τι πρέπει να δημιουργηθεί ή να προβλεφθεί. Και η δεύτερη πηγή εισόδου είναι μια κατάσταση όπου το terraform διατηρεί την ενημερωμένη κατάσταση για το πώς φαίνεται η τρέχουσα ρύθμιση της υποδομής.

  7 Platform-as-a-Service (PaaS) για προγραμματιστές μηχανικής μάθησης και τεχνητής νοημοσύνης

Έτσι, αυτό που κάνει ο terraform core είναι ότι παίρνει την είσοδο και υπολογίζει το σχέδιο του τι πρέπει να γίνει. Συγκρίνει την κατάσταση, ποια είναι η τρέχουσα κατάσταση και ποια είναι η διαμόρφωση που επιθυμείτε στο τελικό αποτέλεσμα. Καταλαβαίνει τι πρέπει να γίνει για να φτάσετε στην επιθυμητή κατάσταση στο αρχείο διαμόρφωσης. Προσδιορίζει τι πρέπει να δημιουργηθεί, τι πρέπει να ενημερωθεί, τι πρέπει να διαγραφεί για τη δημιουργία και την παροχή της υποδομής.

Παρόχους

Το δεύτερο συστατικό της αρχιτεκτονικής είναι οι πάροχοι για συγκεκριμένες τεχνολογίες. Αυτό θα μπορούσε να είναι πάροχοι cloud όπως AWS, Azure, GCP ή άλλη υποδομή ως πλατφόρμα υπηρεσιών. Είναι επίσης πάροχος για περισσότερα στοιχεία υψηλού επιπέδου όπως το Kubernetes ή άλλα εργαλεία πλατφόρμας ως υπηρεσίας, ακόμη και κάποιο λογισμικό ως εργαλείο αυτοεξυπηρέτησης.

Σας δίνει τη δυνατότητα να δημιουργήσετε υποδομές σε διαφορετικά επίπεδα.

Για παράδειγμα – δημιουργήστε μια υποδομή AWS, στη συνέχεια αναπτύξτε το Kubernetes από πάνω και, στη συνέχεια, δημιουργήστε υπηρεσίες/εξαρτήματα μέσα σε αυτό το σύμπλεγμα Kubernetes.

Η Terraform έχει πάνω από εκατό παρόχους για διαφορετικές τεχνολογίες και κάθε πάροχος δίνει στη συνέχεια στους χρήστες του terraform πρόσβαση στους πόρους του. Έτσι, μέσω του παρόχου AWS, για παράδειγμα, έχετε πρόσβαση σε εκατοντάδες πόρους AWS όπως περιπτώσεις EC2, χρήστες AWS κ.λπ. Με τον πάροχο Kubernetes, έχετε πρόσβαση σε εμπορεύματα, πόρους όπως υπηρεσίες και αναπτύξεις και χώρους ονομάτων κ.λπ.

Έτσι, έτσι λειτουργεί το Terraform και με αυτόν τον τρόπο, προσπαθεί να σας βοηθήσει να παρέχετε και να καλύψετε την πλήρη ρύθμιση της εφαρμογής από την υποδομή μέχρι την εφαρμογή.

Ας κάνουμε μερικά πρακτικά πράγματα. 👨‍💻

Θα εγκαταστήσουμε το Terraform στο Ubuntu και θα παρέχουμε μια πολύ βασική υποδομή.

Εγκαταστήστε το Terraform

Κατεβάστε το πιο πρόσφατο πακέτο terraform.

Αναφέρομαι στο επίσημη σελίδα λήψης για να λάβετε την πιο πρόσφατη έκδοση για το αντίστοιχο λειτουργικό σύστημα.

[email protected]:~$ wget https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
--2020-08-14 16:55:38--
https://releases.hashicorp.com/terraform/0.13.0/terraform_0.13.0_linux_amd64.zip
Resolving releases.hashicorp.com (releases.hashicorp.com)... 151.101.153.183, 2a04:4e42:24::439
Connecting to releases.hashicorp.com (releases.hashicorp.com)|151.101.153.183|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 34851622 (33M) [application/zip]
Saving to: ‘terraform_0.13.0_linux_amd64.zip’

terraform_0.13.0_linux_amd64.zip
100%[=================================================================>] 33.24M
90.3KB/s in 5m 28s

2020-08-14 17:01:06 (104 KB/s) - ‘terraform_0.13.0_linux_amd64.zip’ saved [34851622/34851622]

Εξαγάγετε το πακέτο που έχετε λάβει.

[email protected]:~$ unzip terraform_0.13.0_linux_amd64.zip
Archive:
terraform_0.13.0_linux_amd64.zip
inflating: terraform

Μετακινήστε το εκτελέσιμο αρχείο terraform στη διαδρομή που φαίνεται παρακάτω. Ελέγξτε την έκδοση terraform.

[email protected]:~$ sudo mv terraform /usr/local/bin/
[sudo] password for grtechpc.org:
[email protected]:~$ terraform -v
Terraform v0.13.0

Μπορείτε να δείτε αυτές είναι οι διαθέσιμες εντολές σε terraform για εκτέλεση.

[email protected]:~$ terraform
Usage: terraform [-version] [-help] <command> [args]

The available commands for execution are listed below.
The most common, useful commands are shown first, followed by
less common or more advanced commands. If you're just getting
started with Terraform, stick with the common commands. For the
other commands, please read the help and docs before usage.

Common commands:
apply Builds or changes infrastructure
console Interactive console for Terraform interpolations
destroy Destroy Terraform-managed infrastructure
env Workspace management
fmt Rewrites config files to canonical format
get Download and install modules for the configuration
graph Create a visual graph of Terraform resources
import Import existing infrastructure into Terraform
init Initialize a Terraform working directory
login Obtain and save credentials for a remote host
logout Remove locally-stored credentials for a remote host
output Read an output from a state file
plan Generate and show an execution plan
providers Prints a tree of the providers used in the configuration
refresh Update local state file against real resources
show Inspect Terraform state or plan
taint Manually mark a resource for recreation
untaint Manually unmark a resource as tainted
validate Validates the Terraform files
version Prints the Terraform version
workspace Workspace management

All other commands:
0.12upgrade Rewrites pre-0.12 module source code for v0.12
0.13upgrade Rewrites pre-0.13 module source code for v0.13
debug Debug output management (experimental)
force-unlock Manually unlock the terraform state
push Obsolete command for Terraform Enterprise legacy (v1)
state Advanced state management

Παροχή AWS EC2 Instance με χρήση Terraform

Σε αυτό το demo, πρόκειται να ξεκινήσω μια νέα παρουσία AWS EC2 χρησιμοποιώντας Terraform.

Δημιουργήστε έναν κατάλογο εργασίας για αυτήν την επίδειξη Terraform.

[email protected]:~$ mkdir terraform_demo

Μεταβείτε στον κατάλογο και δημιουργήστε ένα αρχείο διαμόρφωσης terraform όπου ορίζετε τον πάροχο και τους πόρους για την εκκίνηση μιας παρουσίας AWS EC2.

[email protected]:~$ cd terraform_demo/
[email protected]:~/terraform_demo$ gedit awsec2.tf

provider "aws" {
access_key = "B5KG6Fe5GUKIATUF5UD"
secret_key = "R4gb65y56GBF6765ejYSJA4YtaZ+T6GY7H"
region = "us-west-2"
}

resource "aws_instance" "terraform_demo" {
ami = "ami-0a634ae95e11c6f91"
instance_type = "t2.micro"
}

Σημείωση: Έχω αλλάξει τα κλειδιά πρόσβασης και τα μυστικά 😛, πρέπει να χρησιμοποιήσετε τα δικά σας.

  7 επαγγελματικές πιστοποιήσεις SQL για να ενισχύσετε την καριέρα σας το 2022

Από τη διαμόρφωση που αναφέρθηκε παραπάνω, μπορείτε να δείτε ότι αναφέρω τον πάροχο όπως το AWS. Μέσα στον πάροχο, δίνω διαπιστευτήρια χρήστη AWS και περιοχές όπου πρέπει να ξεκινήσει η παρουσία.

Σε πόρους, δίνω λεπτομέρειες AMI του Ubuntu (ami-0a634ae95e11c6f91) και αναφέρω ότι ο τύπος παρουσίας πρέπει να είναι t2.micro

Μπορείτε να δείτε πόσο εύκολο και αναγνώσιμο είναι το αρχείο διαμόρφωσης, ακόμα κι αν δεν είστε σκληρός κωδικοποιητής.

Terraform init

Τώρα, το πρώτο βήμα είναι να αρχικοποιήσετε το terraform.

[email protected]:~/terraform_demo$ terraform init

Initializing the backend...

Initializing provider plugins...
- Using previously-installed hashicorp/aws v3.2.0

The following providers do not have any version constraints in configuration,
so the latest version was installed.

To prevent automatic upgrades to new major versions that may contain breaking
changes, we recommend adding version constraints in a required_providers block
in your configuration, with the constraint strings suggested below.

* hashicorp/aws: version = "~> 3.2.0"

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.

επίγειο σχέδιο

Ακολουθεί το στάδιο του σχεδίου. θα δημιουργήσει το γράφημα εκτέλεσης για τη δημιουργία και την παροχή της υποδομής.

[email protected]:~/terraform_demo$ terraform plan
Refreshing Terraform state in-memory prior to plan...
The refreshed state will be used to calculate this plan, but will not be
persisted to local or remote state storage.

------------------------------------------------------------------------

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

# aws_instance.terraform_demo will be created
+ resource "aws_instance" "terraform_demo" {
+ ami = "ami-0a634ae95e11c6f91"
+ arn = (known after apply)
+ associate_public_ip_address = (known after apply)
+ availability_zone = (known after apply)
+ cpu_core_count = (known after apply)
+ cpu_threads_per_core = (known after apply)
+ get_password_data = false
+ host_id = (known after apply)
+ id = (known after apply)
+ instance_state = (known after apply)
+ instance_type = "t2.micro"
+ ipv6_address_count = (known after apply)
+ ipv6_addresses = (known after apply)
+ key_name = (known after apply)
+ outpost_arn = (known after apply)
+ password_data = (known after apply)
+ placement_group = (known after apply)
+ primary_network_interface_id = (known after apply)
+ private_dns = (known after apply)
+ private_ip = (known after apply)
+ public_dns = (known after apply)
+ public_ip = (known after apply)
+ secondary_private_ips = (known after apply)
+ security_groups = (known after apply)
+ source_dest_check = true
+ subnet_id = (known after apply)
+ tenancy = (known after apply)
+ volume_tags = (known after apply)
+ vpc_security_group_ids = (known after apply)

+ ebs_block_device {
+ delete_on_termination = (known after apply)
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ snapshot_id = (known after apply)
+ volume_id = (known after apply)
+ volume_size = (known after apply)
+ volume_type = (known after apply)
}

+ ephemeral_block_device {
+ device_name = (known after apply)
+ no_device = (known after apply)
+ virtual_name = (known after apply)
}

+ metadata_options {
+ http_endpoint = (known after apply)
+ http_put_response_hop_limit = (known after apply)
+ http_tokens = (known after apply)
}

+ network_interface {
+ delete_on_termination = (known after apply)
+ device_index = (known after apply)
+ network_interface_id = (known after apply)
}

+ root_block_device {
+ delete_on_termination = (known after apply)
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ volume_id = (known after apply)
+ volume_size = (known after apply)
+ volume_type = (known after apply)
}
}

Plan: 1 to add, 0 to change, 0 to destroy.

------------------------------------------------------------------------

Note: You didn't specify an "-out" parameter to save this plan, so Terraform
can't guarantee that exactly these actions will be performed if
"terraform apply" is subsequently run.

ισχύουν terraform

Το στάδιο εφαρμογής θα εκτελέσει το αρχείο διαμόρφωσης και θα ξεκινήσει μια παρουσία AWS EC2. Όταν εκτελείτε την εντολή Εφαρμογή, θα σας ρωτήσει, «Θέλετε να εκτελέσετε αυτές τις ενέργειες;», πρέπει να πληκτρολογήσετε yes και να πατήσετε enter.

[email protected]:~/terraform_demo$ terraform apply

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
+ create

Terraform will perform the following actions:

# aws_instance.terraform_demo will be created
+ resource "aws_instance" "terraform_demo" {
+ ami = "ami-0a634ae95e11c6f91"
+ arn = (known after apply)
+ associate_public_ip_address = (known after apply)
+ availability_zone = (known after apply)
+ cpu_core_count = (known after apply)
+ cpu_threads_per_core = (known after apply)
+ get_password_data = false
+ host_id = (known after apply)
+ id = (known after apply)
+ instance_state = (known after apply)
+ instance_type = "t2.micro"
+ ipv6_address_count = (known after apply)
+ ipv6_addresses = (known after apply)
+ key_name = (known after apply)
+ outpost_arn = (known after apply)
+ password_data = (known after apply)
+ placement_group = (known after apply)
+ primary_network_interface_id = (known after apply)
+ private_dns = (known after apply)
+ private_ip = (known after apply)
+ public_dns = (known after apply)
+ public_ip = (known after apply)
+ secondary_private_ips = (known after apply)
+ security_groups = (known after apply)
+ source_dest_check = true
+ subnet_id = (known after apply)
+ tenancy = (known after apply)
+ volume_tags = (known after apply)
+ vpc_security_group_ids = (known after apply)

+ ebs_block_device {
+ delete_on_termination = (known after apply)
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ snapshot_id = (known after apply)
+ volume_id = (known after apply)
+ volume_size = (known after apply)
+ volume_type = (known after apply)
}

+ ephemeral_block_device {
+ device_name = (known after apply)
+ no_device = (known after apply)
+ virtual_name = (known after apply)
}

+ metadata_options {
+ http_endpoint = (known after apply)
+ http_put_response_hop_limit = (known after apply)
+ http_tokens = (known after apply)
}

+ network_interface {
+ delete_on_termination = (known after apply)
+ device_index = (known after apply)
+ network_interface_id = (known after apply)
}

+ root_block_device {
+ delete_on_termination = (known after apply)
+ device_name = (known after apply)
+ encrypted = (known after apply)
+ iops = (known after apply)
+ kms_key_id = (known after apply)
+ volume_id = (known after apply)
+ volume_size = (known after apply)
+ volume_type = (known after apply)
}
}

Plan: 1 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: yes

aws_instance.terraform_demo: Creating...
aws_instance.terraform_demo: Still creating... [10s elapsed]
aws_instance.terraform_demo: Still creating... [20s elapsed]
aws_instance.terraform_demo: Still creating... [30s elapsed]
aws_instance.terraform_demo: Still creating... [40s elapsed]
aws_instance.terraform_demo: Creation complete after 44s [id=i-0eec33286ea4b0740]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Μεταβείτε στον πίνακα εργαλείων AWS EC2 και θα δείτε ότι έχει δημιουργηθεί μια νέα παρουσία με το αναγνωριστικό παρουσίας που αναφέρεται στο τέλος της εντολής εφαρμογής.

  Το MS Paint δεν είναι νεκρό Ελάτε να ενημερώσετε το Fall Creators

Εκκινήσατε με επιτυχία μια παρουσία AWS EC2 χρησιμοποιώντας το Terraform.

Terraform καταστρέφω

Τέλος, εάν θέλετε να διαγράψετε την υποδομή, πρέπει να εκτελέσετε την εντολή καταστροφής.

[email protected]:~/terraform_demo$ terraform destroy
aws_instance.terraform_demo: Refreshing state... [id=i-0eec33286ea4b0740]

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
- destroy

Terraform will perform the following actions:

# aws_instance.terraform_demo will be destroyed
- resource "aws_instance" "terraform_demo" {
- ami = "ami-0a634ae95e11c6f91" -> null
- arn = "arn:aws:ec2:us-west-2:259212389929:instance/i-0eec33286ea4b0740" -> null
- associate_public_ip_address = true -> null
- availability_zone = "us-west-2c" -> null
- cpu_core_count = 1 -> null
- cpu_threads_per_core = 1 -> null
- disable_api_termination = false -> null
- ebs_optimized = false -> null
- get_password_data = false -> null
- hibernation = false -> null
- id = "i-0eec33286ea4b0740" -> null
- instance_state = "running" -> null
- instance_type = "t2.micro" -> null
- ipv6_address_count = 0 -> null
- ipv6_addresses = [] -> null
- monitoring = false -> null
- primary_network_interface_id = "eni-02a46f2802fd15634" -> null
- private_dns = "ip-172-31-13-160.us-west-2.compute.internal" -> null
- private_ip = "172.31.13.160" -> null
- public_dns = "ec2-34-221-77-94.us-west-2.compute.amazonaws.com" -> null
- public_ip = "34.221.77.94" -> null
- secondary_private_ips = [] -> null
- security_groups = [
- "default",
] -> null
- source_dest_check = true -> null
- subnet_id = "subnet-5551200c" -> null
- tags = {} -> null
- tenancy = "default" -> null
- volume_tags = {} -> null
- vpc_security_group_ids = [
- "sg-b5b480d1",
] -> null

- credit_specification {
- cpu_credits = "standard" -> null
}

- metadata_options {
- http_endpoint = "enabled" -> null
- http_put_response_hop_limit = 1 -> null
- http_tokens = "optional" -> null
}

- root_block_device {
- delete_on_termination = true -> null
- device_name = "/dev/sda1" -> null
- encrypted = false -> null
- iops = 100 -> null
- volume_id = "vol-0be2673afff6b1a86" -> null
- volume_size = 8 -> null
- volume_type = "gp2" -> null
}
}

Plan: 0 to add, 0 to change, 1 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: yes

aws_instance.terraform_demo: Destroying... [id=i-0eec33286ea4b0740]
aws_instance.terraform_demo: Still destroying... [id=i-0eec33286ea4b0740, 10s elapsed]
aws_instance.terraform_demo: Still destroying... [id=i-0eec33286ea4b0740, 20s elapsed]
aws_instance.terraform_demo: Still destroying... [id=i-0eec33286ea4b0740, 30s elapsed]
aws_instance.terraform_demo: Destruction complete after 34s

Destroy complete! Resources: 1 destroyed.

Εάν ελέγξετε ξανά τον πίνακα εργαλείων EC2, θα δείτε ότι η παρουσία τερματίστηκε.

συμπέρασμα

Πιστεύω ότι τα παραπάνω σας δίνουν μια ιδέα για να ξεκινήσετε με την Terraform. Προχωρήστε και δοκιμάστε το παράδειγμα που μόλις έδειξα.

Θα πρέπει επίσης να ελέγξετε αυτό το λογισμικό αυτοματισμού υποδομής.

Εάν ενδιαφέρεστε να μάθετε περισσότερα, τότε θα πρότεινα να ελέγξετε Μάθημα εκμάθησης DevOps με Terraform.