Hashi Corp Language:
Expressions:
* Expression work with values in the configuration
* They can be simple values as text or number
* We can be use as complex such as data, loops and conditions
Example:
list(tuple) - ["us-east1", "us-east-2"]
map - { name = "user1", department = "devops"}
bool - true or false
versoin = "-> 4.16"
-> will consider minior. It will allow a minor version upto .99 but it will not change a major number in our case is "4".
"*" operation:
It will allow the number in the loop and avoid overloading a variable into memory.
Example:
output "ebs_block_device" {
description = "block device volume IDs"
value = aws_instance.splat_lab_labs.ebs_block_device[*}.volume_id
}
Functions:
* Function is one or more insructions that perfrom a specific task.
* Terraform functions are used to add functionality or transform and combine values.
Example:
resource "aws_iam_user" "web_user" {
name ="user-${count.index}"
count = 5
tags = {
time_created = timestamp()
department = "OPS"
}
}
Example2:
resource "aws_iam_user" "functional_user" {
name = "functional-user"
tags = {
department = "OPS"
time_created = timestamp()
time2= formatdate("MM DD YYYY hh:mm ZZZ", timestamp()}
}
}
Meta Arguments:
count - It allow to set multiple resources within a block.
Example:
resource "aws_instance" "count_test" {
count = 2
ami = "ami-0c7c4e3c6b4941f0f"
instance_type = "t2.micro"
tags = {
Name ="Count-Test-${count.index}"
}
}
for-each meta arugment:
A for loop is using for iterating/executing over the sequence within the block.
Example:
Creating four users while creating an AWS instance.
resource "aws_iam_user" "Accounts" {
for_each =toset{("Shiva", "Dev", "John", "Abdul")}
name = each.key
}
}
Local Values:
* Local value assigns a name to an expression that can be reused easily.
* Use case such as various list [ports, username] & reference to other values.
Example:
resource "aws_iam_user" "accounts" {
for_each=local.accounts
name = each.key
}
we will define a local function within the block.
locals {
accounts = toset {("James", "Don")}
}
Dynamic block:
The codes will be reusable within resource block. It will speed up the code execution time.
Version Constraints:
* Version constraints are configurable strings that manage the version of software to be used with Terraform includes providers and TF version as well.
* TF version is followed by semantic versioning (Major:Minor:Patch)
= constraint - It will allow the exact version only
!= constraint - Excludes exact version number
< > - Grater than, less than a version number
>= <= - Grater than or equal to or less than or equal to that version
~> - ONlythe rightmost number increments [minor or patch number]
Stored the state file in the remote object through TF code.
terraform {
required_providers {
aws = {
source = "hasicorp/aws"
version = "5.01"
}
}
required_version = " <= 1.4.6"
}
module "s3_bucket" {
source= "terraform-aws-modules/s3-bucket/aws"
version "3.14.0"
bucket =""
acl = "private"
force_destroy = true
control_object_ownership = true
object_ownership = "ObjectWriter"
versioning = {
enabled =true
}
|
TF state file saves in bucket and set as provide inside of backet.
Life cycle management:
create_before_destroy : It will create instead of destroying at first
prevent_destroy : It will prevent from destroying of instance
ignore_changes : It will implement of any changes.
replace_triggered_by : It will overwrite the changes
No comments:
Post a Comment