1.Terraform Initialization : It will initialize the modules based on provider AWS / Azure / GCP / Oracle
terraform init
2.Terraform Plan : : It will show the plan, what is going to happen
terraform plan
3.Terraform apply : It applies the code to provision
terraform apply
It will ask for the confirmation and need to enter 'yes' for applying the changes
3a. If you don't wanted to provide the confirmation and wants to apply the changes automatically then use the below command
terraform apply --auto-approve
4. Terraform destroy : It allows us to destroy all the resources that are created in a folder
terraform destroy
It will ask for the confirmation and need to enter 'yes' for applying the changes
4a. If you wanted to destroy a specific resource (consider we have created an aws_instance with the name myfirstServer )
terraform destroy --target aws_instance.myfirstServer
Note :
aws_instance = type of the resource
myfirstServer = name of the resource we have used
5.Terraform state file : Terraform stores the state of the infrastructure that is being created from the tf files.
This state allows terraform to map real world resources to your existing configuration
terraform.tfstate
Note: terraform.tfstate file will be created at the first time when you run terraform apply
6. Terraform refresh:
Consider a scenario where we have created an AWS EC2 Instance / Azure VM through terraform configuration then infrastructure related information will be stored in the terraform.tfstate file.
If we stopped /terminate the server the changes wont be reflected in terraform.tfstate file and to reflect to the changes we need to run the below command
terraform refresh
7. Desired State: Terraform's primary function is to create, modify and destroy infrastructure resources to match the desired state described in your configuration files
8. Current State : Its the actual state of the resource currently been deployed
9.Depedency Lock File :
- Terraform dependency lock file allows us to lock to a specific version of the provider.
- If a particular version provider already has a selection recorded in the lock file, terraform will always re-select that version for installation, even if a newer version has become available.
- You can override that behaviour by adding the -upgrade option to terraform init.
terraform init --upgrade
10. Output attributes : An outputted variables can not only used for user reference , it can also act as input to other resource being created via terraform
#Example : Creating Elastic IP and attaching to EC2 Instance
provider "aws" {
region = "eu-west-1"
access_key = "**********"
secret_key = "*************"
}
resource "aws_instance" "myfirstec2" {
ami = "ami-0721c9af7b9b75114" # Change the AMI Id
instance_type = "t2.micro"
}
resource "aws_eip" "my_ip" {
vpc = true
}
# Elastic IP Association: Passing the output of ec2 instance id (aws_instance.myfirstec2.id) and elastic ip address (aws_eip.my_ip.id)
resource "aws_eip_association" "eip_assoc" {
instance_id = aws_instance.myfirstec2.id
allocation_id = aws_eip.my_ip.id
}
Note : In the above example, we have taken output of aws_instance.myfirstec2.id and aws_eip.my_ip.id , passed as input to aws_eip_association
Conclusion : Discussed about terraform basic commands and
If you like my blogs, please like,share,comment and follow me in linked in https://www.linkedin.com/in/srinivasuluparanduru/
Top comments (0)