From ba51e1111e3285fdd683bd54bd66ebc41f4878ca Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:24:22 +0000 Subject: [PATCH 01/17] tf --- {AWS => aws}/README.md | 0 {AWS => aws}/README2.md | 0 {AWS => aws}/assets/image-1.png | Bin {AWS => aws}/assets/image-2.png | Bin {AWS => aws}/assets/image-3.png | Bin {AWS => aws}/assets/image-4.png | Bin {AWS => aws}/assets/image.png | Bin {AWS => aws}/assets/image10.png | Bin {AWS => aws}/assets/image11.png | Bin {AWS => aws}/assets/image5.png | Bin {AWS => aws}/assets/image6.png | Bin {AWS => aws}/assets/image7.png | Bin {AWS => aws}/assets/image8.png | Bin {AWS => aws}/assets/image9.png | Bin .../day46/README.md | 0 .../day46/interview.md | 0 .../day47&48/Interview.md | 0 .../day47&48/README.md | 0 .../day49/README.md | 0 .../day49/interview.md | 0 .../day50/README.md | 0 .../day50/interview.md | 0 github-actions/day51/README.md | 113 ++++++++++++++++++ github-actions/day51/interview.md | 106 ++++++++++++++++ 24 files changed, 219 insertions(+) rename {AWS => aws}/README.md (100%) rename {AWS => aws}/README2.md (100%) rename {AWS => aws}/assets/image-1.png (100%) rename {AWS => aws}/assets/image-2.png (100%) rename {AWS => aws}/assets/image-3.png (100%) rename {AWS => aws}/assets/image-4.png (100%) rename {AWS => aws}/assets/image.png (100%) rename {AWS => aws}/assets/image10.png (100%) rename {AWS => aws}/assets/image11.png (100%) rename {AWS => aws}/assets/image5.png (100%) rename {AWS => aws}/assets/image6.png (100%) rename {AWS => aws}/assets/image7.png (100%) rename {AWS => aws}/assets/image8.png (100%) rename {AWS => aws}/assets/image9.png (100%) rename {GitHub-Actions => github-actions}/day46/README.md (100%) rename {GitHub-Actions => github-actions}/day46/interview.md (100%) rename {GitHub-Actions => github-actions}/day47&48/Interview.md (100%) rename {GitHub-Actions => github-actions}/day47&48/README.md (100%) rename {GitHub-Actions => github-actions}/day49/README.md (100%) rename {GitHub-Actions => github-actions}/day49/interview.md (100%) rename {GitHub-Actions => github-actions}/day50/README.md (100%) rename {GitHub-Actions => github-actions}/day50/interview.md (100%) create mode 100644 github-actions/day51/README.md create mode 100644 github-actions/day51/interview.md diff --git a/AWS/README.md b/aws/README.md similarity index 100% rename from AWS/README.md rename to aws/README.md diff --git a/AWS/README2.md b/aws/README2.md similarity index 100% rename from AWS/README2.md rename to aws/README2.md diff --git a/AWS/assets/image-1.png b/aws/assets/image-1.png similarity index 100% rename from AWS/assets/image-1.png rename to aws/assets/image-1.png diff --git a/AWS/assets/image-2.png b/aws/assets/image-2.png similarity index 100% rename from AWS/assets/image-2.png rename to aws/assets/image-2.png diff --git a/AWS/assets/image-3.png b/aws/assets/image-3.png similarity index 100% rename from AWS/assets/image-3.png rename to aws/assets/image-3.png diff --git a/AWS/assets/image-4.png b/aws/assets/image-4.png similarity index 100% rename from AWS/assets/image-4.png rename to aws/assets/image-4.png diff --git a/AWS/assets/image.png b/aws/assets/image.png similarity index 100% rename from AWS/assets/image.png rename to aws/assets/image.png diff --git a/AWS/assets/image10.png b/aws/assets/image10.png similarity index 100% rename from AWS/assets/image10.png rename to aws/assets/image10.png diff --git a/AWS/assets/image11.png b/aws/assets/image11.png similarity index 100% rename from AWS/assets/image11.png rename to aws/assets/image11.png diff --git a/AWS/assets/image5.png b/aws/assets/image5.png similarity index 100% rename from AWS/assets/image5.png rename to aws/assets/image5.png diff --git a/AWS/assets/image6.png b/aws/assets/image6.png similarity index 100% rename from AWS/assets/image6.png rename to aws/assets/image6.png diff --git a/AWS/assets/image7.png b/aws/assets/image7.png similarity index 100% rename from AWS/assets/image7.png rename to aws/assets/image7.png diff --git a/AWS/assets/image8.png b/aws/assets/image8.png similarity index 100% rename from AWS/assets/image8.png rename to aws/assets/image8.png diff --git a/AWS/assets/image9.png b/aws/assets/image9.png similarity index 100% rename from AWS/assets/image9.png rename to aws/assets/image9.png diff --git a/GitHub-Actions/day46/README.md b/github-actions/day46/README.md similarity index 100% rename from GitHub-Actions/day46/README.md rename to github-actions/day46/README.md diff --git a/GitHub-Actions/day46/interview.md b/github-actions/day46/interview.md similarity index 100% rename from GitHub-Actions/day46/interview.md rename to github-actions/day46/interview.md diff --git a/GitHub-Actions/day47&48/Interview.md b/github-actions/day47&48/Interview.md similarity index 100% rename from GitHub-Actions/day47&48/Interview.md rename to github-actions/day47&48/Interview.md diff --git a/GitHub-Actions/day47&48/README.md b/github-actions/day47&48/README.md similarity index 100% rename from GitHub-Actions/day47&48/README.md rename to github-actions/day47&48/README.md diff --git a/GitHub-Actions/day49/README.md b/github-actions/day49/README.md similarity index 100% rename from GitHub-Actions/day49/README.md rename to github-actions/day49/README.md diff --git a/GitHub-Actions/day49/interview.md b/github-actions/day49/interview.md similarity index 100% rename from GitHub-Actions/day49/interview.md rename to github-actions/day49/interview.md diff --git a/GitHub-Actions/day50/README.md b/github-actions/day50/README.md similarity index 100% rename from GitHub-Actions/day50/README.md rename to github-actions/day50/README.md diff --git a/GitHub-Actions/day50/interview.md b/github-actions/day50/interview.md similarity index 100% rename from GitHub-Actions/day50/interview.md rename to github-actions/day50/interview.md diff --git a/github-actions/day51/README.md b/github-actions/day51/README.md new file mode 100644 index 0000000..f881bf1 --- /dev/null +++ b/github-actions/day51/README.md @@ -0,0 +1,113 @@ +## DAY 51: GITHUB ACTIONS + +## ENVIRONMENT VARIABLES +- we are setting environment variables + +### WORKFLOW LEVEL ENV +``` +name: CI +on: + push +env: + APP_NAME: linux_sysmonitor +``` +- APP_NAME can be accessed at the workflow level + +### JOB LEVEL ENV +``` +name: CI +on: + push +jobs: + buid: + env: + NODE_ENV: Production +``` + +### STEP LEVEL ENV +``` +name: CI + +on: + push + +jobs: + build: + steps: + - name: App name + env: + APP_NAME = linux + run: echo $APP_NAME +``` + +> What happens if the same environment variable is defined at all three levels? +``` +Workflow: +APP_NAME=App1 + +Job: +APP_NAME=App2 + +Step: +APP_NAME=App3 +``` +> Which value does the step actually use? +- Answer: App3 + +## REPOSITORY VARS +- Repository-wide configurations managed in GitHub settings +- `secrets` are encrypted while `variables` aren't +- This is the only difference, Vars arent encrypted while secrets are. The way of accessing `vars.APP_NAME` and all remains the same + +## PERMISSIONS IN GITHUB ACTIONS +- **Permissions are given to the entire workflow and can also be done to the jobs level** +``` +name: CI +on: + push +permissions: + contents:read +``` + +> Why should you explicitly define workflow permissions? +- Answer: To ensure the workflow receives only the **permissions it actually needs**. This reduces the impact of compromised workflows or third-party actions and follows the **Principle of Least Privilege.** + +> Should permissions be defined at the workflow level or the job level? +- Answer: Use workflow-level permissions when the same permissions apply to all jobs. Use job-level permissions when specific jobs require additional or different access. This follows the Principle of Least Privilege by granting elevated permissions only to the jobs that need them. + +> Use workflow-level permissions when the same permissions apply to all jobs. Use job-level permissions when specific jobs require additional or different access. This follows the Principle of Least Privilege by granting elevated permissions only to the jobs that need them./ +- Answer: +- Branch Protection Rules protect the **source code** by requiring reviews, status checks, and other conditions before code can be merged into a protected branch like main. +- Environment Protection Rules protect **deployments** by requiring approvals, branch restrictions, wait timers, or other checks before code is deployed to environments like Staging or Production. + +## PRODUCTION LEVEL +``` + Push + │ + ▼ + Checkout Code + │ + ▼ + Build + │ + ┌────────────┼────────────┐ + ▼ ▼ ▼ + Lint Unit Tests Security Scan + │ │ │ + └────────────┼────────────┘ + ▼ + Build Docker Image + ▼ + Push to GHCR + ▼ + Deploy to Staging + ▼ + Smoke Tests + ▼ + 🛑 Manual Approval + ▼ + Deploy to Producti ▼on + + Notify Slack / Email +``` + diff --git a/github-actions/day51/interview.md b/github-actions/day51/interview.md new file mode 100644 index 0000000..ca486ea --- /dev/null +++ b/github-actions/day51/interview.md @@ -0,0 +1,106 @@ +# GitHub Actions - Day 51 Interview Questions + +## 1. What are Environment Variables (`env`) in GitHub Actions? + +**Expected Answer:** +Environment variables are values defined at the workflow, job, or step level that can be reused throughout the workflow. They help avoid hardcoding values and improve maintainability. + +--- + +## 2. What is the precedence order of environment variables? + +**Expected Answer:** +Step `env` > Job `env` > Workflow `env`. + +The most specific scope overrides the broader scope. + +--- + +## 3. What is the difference between `env`, `vars`, and `secrets`? + +**Expected Answer:** + +- **env** → Workflow-specific variables defined inside YAML. +- **vars** → Non-sensitive configuration stored in GitHub Repository/Organization Variables. +- **secrets** → Sensitive information such as passwords, API keys, and tokens stored securely in GitHub Secrets. + +--- + +## 4. When should you use Repository Variables instead of Secrets? + +**Expected Answer:** +Repository Variables should be used for non-sensitive configuration such as application names, AWS regions, ports, and Docker image names. Secrets should only be used for confidential information. + +--- + +## 5. What is the `GITHUB_TOKEN`? + +**Expected Answer:** +`GITHUB_TOKEN` is a temporary token automatically created by GitHub for every workflow run. It allows workflows to authenticate with GitHub APIs based on the permissions granted to it. + +--- + +## 6. Why should workflow permissions be explicitly defined? + +**Expected Answer:** +Explicit permissions follow the Principle of Least Privilege by granting workflows only the permissions they require, reducing the impact of compromised workflows or third-party actions. + +--- + +## 7. What is the Principle of Least Privilege? + +**Expected Answer:** +It is the security principle of granting users, applications, or workflows only the minimum permissions required to perform their tasks and nothing more. + +--- + +## 8. What are GitHub Environments? + +**Expected Answer:** +Environments represent deployment targets such as Development, Staging, and Production. They can contain environment-specific secrets, variables, and deployment protection rules. + +--- + +## 9. What are Environment Protection Rules? + +**Expected Answer:** +Environment Protection Rules secure deployments by enforcing policies such as required reviewers, branch restrictions, and wait timers before deployments can proceed. + +--- + +## 10. What is a Manual Approval Gate? + +**Expected Answer:** +A Manual Approval Gate pauses a deployment until an authorized reviewer approves it. It is commonly used before production deployments. + +--- + +## 11. What is the difference between Branch Protection Rules and Environment Protection Rules? + +**Expected Answer:** + +- Branch Protection Rules protect source code before merging into protected branches. +- Environment Protection Rules protect deployments after code has been merged by enforcing deployment approvals and restrictions. + +--- + +## 12. Name some GitHub Actions security best practices. + +**Expected Answer:** + +- Never hardcode secrets. +- Use Repository Variables for non-sensitive configuration. +- Store sensitive data in GitHub Secrets. +- Follow the Principle of Least Privilege. +- Explicitly define workflow permissions. +- Pin GitHub Action versions. +- Use trusted third-party actions. +- Protect production environments with approval gates. +- Separate development and production credentials. + +--- + +## 13. How would you design a production-grade CI/CD pipeline? + +**Expected Answer:** +Checkout → Build → Lint/Test/Security Scan (parallel) → Package → Publish Artifact/Container → Deploy to Staging → Smoke Tests → Manual Approval → Deploy to Production → Notifications. \ No newline at end of file From aeec3687f6f961fc20f117f356959508c5e7ba68 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:30:54 +0000 Subject: [PATCH 02/17] tf --- terraform/day51/README.md | 4 ++++ terraform/day51/interview.md | 0 2 files changed, 4 insertions(+) create mode 100644 terraform/day51/README.md create mode 100644 terraform/day51/interview.md diff --git a/terraform/day51/README.md b/terraform/day51/README.md new file mode 100644 index 0000000..5de31a8 --- /dev/null +++ b/terraform/day51/README.md @@ -0,0 +1,4 @@ +## TERRAFORM DAY 51 + +### INFRASTRUCTRE AS CODE +- Defining cloud resources through code is called IaC diff --git a/terraform/day51/interview.md b/terraform/day51/interview.md new file mode 100644 index 0000000..e69de29 From 7162918dc960e932f6452220611801dcf4c85e4a Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:34:14 +0000 Subject: [PATCH 03/17] tf --- terraform/day51/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/terraform/day51/README.md b/terraform/day51/README.md index 5de31a8..846a3df 100644 --- a/terraform/day51/README.md +++ b/terraform/day51/README.md @@ -2,3 +2,13 @@ ### INFRASTRUCTRE AS CODE - Defining cloud resources through code is called IaC + +## DECLARATIVE vs IMPERATIVE +1. **IMPERATIVE** +- Here we tell **HOW TO DO IT** +- Example: Create a VPC, create a subnet, so on and etc + +2. **DECLARATIVE** +- Here we tell **WHAT WE WANT** and we do not worry about how it is created +- Example: I want a VPC, 2 Ec2 instances etc. + From c0001ecd6feebe54f0544d339a340c43cc273b44 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:35:38 +0000 Subject: [PATCH 04/17] tf --- terraform/day51/README.md | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/terraform/day51/README.md b/terraform/day51/README.md index 846a3df..0ac953d 100644 --- a/terraform/day51/README.md +++ b/terraform/day51/README.md @@ -12,3 +12,41 @@ - Here we tell **WHAT WE WANT** and we do not worry about how it is created - Example: I want a VPC, 2 Ec2 instances etc. +- **IaC is declarative in nature** + +## HOW TERRAFORM WORK: +``` +main.tf + +↓ + +terraform init + +↓ + +Downloads Provider + +↓ + +terraform plan + +↓ + +Compares Desired State + +↓ + +Shows Changes + +↓ + +terraform apply + +↓ + +Creates Infrastructure + +↓ + +Updates terraform.tfstate +``` From 9c72497a44116fab1ec1e40e63c6598617e10070 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:36:54 +0000 Subject: [PATCH 05/17] tf --- terraform/day51/README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/terraform/day51/README.md b/terraform/day51/README.md index 0ac953d..2f02945 100644 --- a/terraform/day51/README.md +++ b/terraform/day51/README.md @@ -50,3 +50,10 @@ Creates Infrastructure Updates terraform.tfstate ``` +- By default, tf doesnt know about the provider and it needs to be defined explicitly as a plugin +- Exaple: +``` +provider "aws" { + region = "us-east-1 +} +``` From 3a628905873f2b41ebe99dc0ad05a468e762d430 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:40:11 +0000 Subject: [PATCH 06/17] tf --- terraform/day51/README.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/terraform/day51/README.md b/terraform/day51/README.md index 2f02945..176bdba 100644 --- a/terraform/day51/README.md +++ b/terraform/day51/README.md @@ -50,10 +50,13 @@ Creates Infrastructure Updates terraform.tfstate ``` + +## PROVIDER + - By default, tf doesnt know about the provider and it needs to be defined explicitly as a plugin -- Exaple: -``` + +- Example: provider "aws" { - region = "us-east-1 + region = "us-east-1" } -``` + From a20661c07bb68655c572c23a76d39c17221c0d35 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:43:06 +0000 Subject: [PATCH 07/17] tf --- terraform/day51/README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/terraform/day51/README.md b/terraform/day51/README.md index 176bdba..f0f437a 100644 --- a/terraform/day51/README.md +++ b/terraform/day51/README.md @@ -60,3 +60,15 @@ provider "aws" { region = "us-east-1" } +## RESOURCE +- Everything Terraform creates is a resource +- Example: +``` +resource "aws_s3_bucket" "logs" { + +} +``` +- Here: + - aws_s3_bucket is resource type + - logs is the logical/resource name given +``` From 69fc7450600a609fa9cc3a56186f824f4fd1b879 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:45:47 +0000 Subject: [PATCH 08/17] tf --- terraform/day51/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/terraform/day51/README.md b/terraform/day51/README.md index f0f437a..e3754d3 100644 --- a/terraform/day51/README.md +++ b/terraform/day51/README.md @@ -71,4 +71,6 @@ resource "aws_s3_bucket" "logs" { - Here: - aws_s3_bucket is resource type - logs is the logical/resource name given -``` + +## STATE FILE +- State files are used by terraform to **remember what was created by them** From 150328550b4c0b8c783ccdcdfb5cd736da0d633e Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:51:03 +0000 Subject: [PATCH 09/17] tf --- terraform/{day51 => day52}/README.md | 0 terraform/{day51 => day52}/interview.md | 0 tf-labs/.gitignore | 0 tf-labs/day52/main.tf | 0 tf-labs/day52/providers.tf | 0 tf-labs/day52/version.tf | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename terraform/{day51 => day52}/README.md (100%) rename terraform/{day51 => day52}/interview.md (100%) create mode 100644 tf-labs/.gitignore create mode 100644 tf-labs/day52/main.tf create mode 100644 tf-labs/day52/providers.tf create mode 100644 tf-labs/day52/version.tf diff --git a/terraform/day51/README.md b/terraform/day52/README.md similarity index 100% rename from terraform/day51/README.md rename to terraform/day52/README.md diff --git a/terraform/day51/interview.md b/terraform/day52/interview.md similarity index 100% rename from terraform/day51/interview.md rename to terraform/day52/interview.md diff --git a/tf-labs/.gitignore b/tf-labs/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/tf-labs/day52/main.tf b/tf-labs/day52/main.tf new file mode 100644 index 0000000..e69de29 diff --git a/tf-labs/day52/providers.tf b/tf-labs/day52/providers.tf new file mode 100644 index 0000000..e69de29 diff --git a/tf-labs/day52/version.tf b/tf-labs/day52/version.tf new file mode 100644 index 0000000..e69de29 From 88f70d2757d9ffe72c66b4822553ea00f4a5dc52 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 05:53:13 +0000 Subject: [PATCH 10/17] tf --- tf-labs/day52/version.tf | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tf-labs/day52/version.tf b/tf-labs/day52/version.tf index e69de29..46d3e39 100644 --- a/tf-labs/day52/version.tf +++ b/tf-labs/day52/version.tf @@ -0,0 +1,9 @@ +terraform { + required_version = ">=1.10" +} +required_providers { + aws = { + source = "hashicrop/aws" + version = "~> 6.56.0" + } +} \ No newline at end of file From 3d1b072f74715469a5ae8934f6723aa98de5d1aa Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 06:03:47 +0000 Subject: [PATCH 11/17] tf --- tf-labs/day52/version.tf | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tf-labs/day52/version.tf b/tf-labs/day52/version.tf index 46d3e39..d62ca28 100644 --- a/tf-labs/day52/version.tf +++ b/tf-labs/day52/version.tf @@ -1,9 +1,10 @@ terraform { - required_version = ">=1.10" -} -required_providers { - aws = { - source = "hashicrop/aws" - version = "~> 6.56.0" + required_version = ">1.10" + + required_providers { + aws = { + source = "hashicorp/aws" + version = "~>6.0" + } } } \ No newline at end of file From be6f017a3bb8241166cbd16730de9de65e4dc4f1 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 06:10:09 +0000 Subject: [PATCH 12/17] tf --- tf-labs/day52/providers.tf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tf-labs/day52/providers.tf b/tf-labs/day52/providers.tf index e69de29..47e6bda 100644 --- a/tf-labs/day52/providers.tf +++ b/tf-labs/day52/providers.tf @@ -0,0 +1,3 @@ +providers "aws" { + region = "us-east-1" +} \ No newline at end of file From f0b0424373bca1cfdfd65c3c2634cab3ef2d31d0 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 06:59:07 +0000 Subject: [PATCH 13/17] tf --- tf-labs/.gitignore | 0 tf-labs/day52/main.tf | 0 tf-labs/day52/providers.tf | 3 --- tf-labs/day52/version.tf | 10 ---------- 4 files changed, 13 deletions(-) delete mode 100644 tf-labs/.gitignore delete mode 100644 tf-labs/day52/main.tf delete mode 100644 tf-labs/day52/providers.tf delete mode 100644 tf-labs/day52/version.tf diff --git a/tf-labs/.gitignore b/tf-labs/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/tf-labs/day52/main.tf b/tf-labs/day52/main.tf deleted file mode 100644 index e69de29..0000000 diff --git a/tf-labs/day52/providers.tf b/tf-labs/day52/providers.tf deleted file mode 100644 index 47e6bda..0000000 --- a/tf-labs/day52/providers.tf +++ /dev/null @@ -1,3 +0,0 @@ -providers "aws" { - region = "us-east-1" -} \ No newline at end of file diff --git a/tf-labs/day52/version.tf b/tf-labs/day52/version.tf deleted file mode 100644 index d62ca28..0000000 --- a/tf-labs/day52/version.tf +++ /dev/null @@ -1,10 +0,0 @@ -terraform { - required_version = ">1.10" - - required_providers { - aws = { - source = "hashicorp/aws" - version = "~>6.0" - } - } -} \ No newline at end of file From 10a843e13f96a4c136b08e128a9b448e1159b541 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 07:37:22 +0000 Subject: [PATCH 14/17] tf --- terraform/day52/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/terraform/day52/README.md b/terraform/day52/README.md index e3754d3..8aa6fba 100644 --- a/terraform/day52/README.md +++ b/terraform/day52/README.md @@ -74,3 +74,8 @@ resource "aws_s3_bucket" "logs" { ## STATE FILE - State files are used by terraform to **remember what was created by them** + +## DESIRED STATE +- Terraform doesn't execute instructions one by one instead it tries to make the actual infrastructure match for the configuration we have written +- Example: We write we need 2 Ec2 instances, and we have 1 EC2 already so when we do `terraform apply` it will create 1 more matching the desired state + From 16690b700b32c2d275bf4fde449ab6cff92ac651 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 07:45:54 +0000 Subject: [PATCH 15/17] tf --- terraform/day52/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/terraform/day52/README.md b/terraform/day52/README.md index 8aa6fba..13d338d 100644 --- a/terraform/day52/README.md +++ b/terraform/day52/README.md @@ -79,3 +79,6 @@ resource "aws_s3_bucket" "logs" { - Terraform doesn't execute instructions one by one instead it tries to make the actual infrastructure match for the configuration we have written - Example: We write we need 2 Ec2 instances, and we have 1 EC2 already so when we do `terraform apply` it will create 1 more matching the desired state +## TERRAFORM FMT +- It automatically formats our terraform configuration file according to official terraform style guide + From 9c1743ee615d06b1dfa7078c51ed8e6bedc5e68d Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 07:49:08 +0000 Subject: [PATCH 16/17] tf --- terraform/day52/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/terraform/day52/README.md b/terraform/day52/README.md index 13d338d..5d98e8a 100644 --- a/terraform/day52/README.md +++ b/terraform/day52/README.md @@ -82,3 +82,8 @@ resource "aws_s3_bucket" "logs" { ## TERRAFORM FMT - It automatically formats our terraform configuration file according to official terraform style guide +## TERRAFORM VALIDATE +- validates if the terraform configuration i syntactically and structurally correct + +## TERRAFORM INIT +- it initializes the current working directory as a terraform project From 00171f03bfc24519b2f305df7650d51556dfd6a5 Mon Sep 17 00:00:00 2001 From: PuneethM-06 Date: Tue, 28 Jul 2026 07:53:25 +0000 Subject: [PATCH 17/17] tf --- terraform/day52/README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/terraform/day52/README.md b/terraform/day52/README.md index 5d98e8a..c97700b 100644 --- a/terraform/day52/README.md +++ b/terraform/day52/README.md @@ -87,3 +87,9 @@ resource "aws_s3_bucket" "logs" { ## TERRAFORM INIT - it initializes the current working directory as a terraform project + +## TERRAFORM PLAN +- It creates an execution plan that tell you exactly whay terraform would do when we do `terraform apply` + +## TERRAFORM APPLY +- Executes the execution plan generated by terraform by creating, updating and deleting infrastructure