using_terraform
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
using_terraform [2017/08/05 11:26] – walkeradmin | using_terraform [2023/03/09 22:35] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Using Terraform ====== | ====== Using Terraform ====== | ||
<color darkorange> | <color darkorange> | ||
+ | \\ | ||
+ | \\ | ||
+ | {{: | ||
\\ | \\ | ||
\\ | \\ | ||
---- | ---- | ||
+ | |||
Now that we have our simple Terraform script, we can start to use Terraform. First we need to test the script for any errors, then we can launch our EC2 Instance by running the script. | Now that we have our simple Terraform script, we can start to use Terraform. First we need to test the script for any errors, then we can launch our EC2 Instance by running the script. | ||
\\ | \\ | ||
\\ | \\ | ||
+ | |||
+ | ---- | ||
+ | |||
==== Terraform Plan ==== | ==== Terraform Plan ==== | ||
+ | \\ | ||
+ | \\ | ||
The terraform plan command is used to create an execution plan. Terraform performs a refresh, unless explicitly disabled, and then determines what actions are necessary to achieve the desired state specified in the configuration files. The plan can be saved using -out, and then provided to terraform apply to ensure only the pre-planned actions are executed. | The terraform plan command is used to create an execution plan. Terraform performs a refresh, unless explicitly disabled, and then determines what actions are necessary to achieve the desired state specified in the configuration files. The plan can be saved using -out, and then provided to terraform apply to ensure only the pre-planned actions are executed. | ||
\\ | \\ | ||
Line 67: | Line 76: | ||
\\ | \\ | ||
This is the type of output you will get if your script file does not contain any errors. | This is the type of output you will get if your script file does not contain any errors. | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
+ | ==== Terraform Apply ==== | ||
+ | \\ | ||
+ | \\ | ||
+ | Before starting the Terraform apply option, I suggest you log in to your AWS account so that you can monitor the progress of the script. | ||
+ | \\ | ||
+ | \\ | ||
+ | Here is my AWS account with no configured EC2 Instances. | ||
+ | \\ | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | In the above example we can see that there is no EC2 Instance configured on this AWS account. There is a default security group that we configured, as well as our key pair. These are both specified in our Terraform script. Remember this script does not create these elements, it just uses them. | ||
+ | \\ | ||
+ | \\ | ||
+ | If we select Running Instances, then this will be empty (unless you have manually created some.) | ||
+ | \\ | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | Now we can run our Terraform Script. | ||
+ | \\ | ||
+ | \\ | ||
+ | In the command window where you ran Terraform Plan, you can now use: | ||
+ | \\ | ||
+ | terraform.exe apply | ||
+ | \\ | ||
+ | If you don't have any errors, then you will see an output similar to below: | ||
+ | \\ | ||
+ | < | ||
+ | aws_instance.example: | ||
+ | ami: "" | ||
+ | associate_public_ip_address: | ||
+ | availability_zone: | ||
+ | ebs_block_device.#: | ||
+ | ephemeral_block_device.#: | ||
+ | instance_state: | ||
+ | instance_type: | ||
+ | ipv6_address_count: | ||
+ | ipv6_addresses.#: | ||
+ | key_name: | ||
+ | network_interface.#: | ||
+ | network_interface_id: | ||
+ | placement_group: | ||
+ | primary_network_interface_id: | ||
+ | private_dns: | ||
+ | private_ip: | ||
+ | public_dns: | ||
+ | public_ip: | ||
+ | root_block_device.#: | ||
+ | security_groups.#: | ||
+ | security_groups.2525401260: | ||
+ | source_dest_check: | ||
+ | subnet_id: | ||
+ | tags.%: | ||
+ | tags.Name: | ||
+ | tenancy: | ||
+ | volume_tags.%: | ||
+ | vpc_security_group_ids.#: | ||
+ | aws_instance.example: | ||
+ | aws_instance.example: | ||
+ | aws_instance.example: | ||
+ | |||
+ | Apply complete! Resources: 1 added, 0 changed, 0 destroyed. | ||
+ | |||
+ | The state of your infrastructure has been saved to the path | ||
+ | below. This state is required to modify and destroy your | ||
+ | infrastructure, | ||
+ | use the `terraform show` command. | ||
+ | |||
+ | State path: | ||
+ | </ | ||
+ | \\ | ||
+ | Now we can check the Running Instances page again. | ||
+ | \\ | ||
+ | \\ | ||
+ | Initially you will see a status of ' | ||
+ | \\ | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | We can see the following information has been populated according to our Script: | ||
+ | \\ | ||
+ | * Name: | ||
+ | * Instance Type | ||
+ | * Availability Zone: eu-west-2a (yes we only specify eu-west-2, the a/b/c suffix is automatic) | ||
+ | * Key-Name | ||
+ | \\ | ||
+ | The EC2 Instance is now running and using your key-pair and SSH you should be able to login and start using your virtual machine. | ||
+ | \\ | ||
+ | \\ | ||
+ | |||
+ | ---- | ||
+ | ==== Terraform Destroy ==== | ||
+ | \\ | ||
+ | \\ | ||
+ | Terraform Destroy does exactly that, using the script file you created, it undoes all of your settings. When Terraform applied your settings it stored the state of your EC2 Instance, so it already knows what settings have been applied. | ||
+ | \\ | ||
+ | \\ | ||
+ | To use enter the following: | ||
+ | \\ | ||
+ | terraform destroy | ||
+ | \\ | ||
+ | Below is an example output of a terraform destroy command. | ||
+ | \\ | ||
+ | \\ | ||
+ | Before the destroy action is taken, there is a confirmation request. | ||
+ | < | ||
+ | Do you really want to destroy? | ||
+ | Terraform will delete all your managed infrastructure. | ||
+ | There is no undo. Only ' | ||
+ | |||
+ | Enter a value: | ||
+ | </ | ||
+ | \\ | ||
+ | You have to enter <color # | ||
+ | \\ | ||
+ | \\ | ||
+ | Terraform will then issue the command to AWS, depending on the complexity of your EC2 Instance, and what it is doing, the command will take a varying amount of time to complete. | ||
+ | \\ | ||
+ | < | ||
+ | aws_instance.example: | ||
+ | aws_instance.example: | ||
+ | aws_instance.example: | ||
+ | |||
+ | aws_instance.example: | ||
+ | |||
+ | aws_instance.example: | ||
+ | |||
+ | aws_instance.example: | ||
+ | |||
+ | Destroy complete! Resources: 1 destroyed. | ||
+ | </ | ||
+ | \\ | ||
+ | Now you can check your Running Instances to see what has happened. | ||
+ | \\ | ||
+ | \\ | ||
+ | {{ : | ||
+ | \\ | ||
+ | The Instance State will first change to Shutting Down, then to Terminated. Terminated Instances take one or two hours to finally disappear from your Running Instance page. | ||
+ | \\ | ||
+ | \\ |
using_terraform.txt · Last modified: 2023/03/09 22:35 by 127.0.0.1