<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Debug School: Razzaq</title>
    <description>The latest articles on Debug School by Razzaq (@pujako).</description>
    <link>https://www.debug.school/pujako</link>
    <image>
      <url>https://www.debug.school/images/IoYKJSo-TcnGGExHeJi5p3QsRFGWidDQUsL_kop4QGE/rs:fill:90:90/g:sm/mb:500000/ar:1/aHR0cHM6Ly93d3cu/ZGVidWcuc2Nob29s/L3VwbG9hZHMvdXNl/ci9wcm9maWxlX2lt/YWdlLzY4OC8yMGEy/YWZmMS1kZTc4LTQ4/ZWMtODVkOS02NGM5/MzIyZWY3MWQuZ2lm</url>
      <title>Debug School: Razzaq</title>
      <link>https://www.debug.school/pujako</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://www.debug.school/feed/pujako"/>
    <language>en</language>
    <item>
      <title>Razzaq_Day 2 – 19 Sept 2023 Assignment#1</title>
      <dc:creator>Razzaq</dc:creator>
      <pubDate>Tue, 19 Sep 2023 05:39:53 +0000</pubDate>
      <link>https://www.debug.school/pujako/razzaqday-2-19-sept-2023assignment1-28b7</link>
      <guid>https://www.debug.school/pujako/razzaqday-2-19-sept-2023assignment1-28b7</guid>
      <description>&lt;h1&gt;
  
  
  Define providers
&lt;/h1&gt;

&lt;p&gt;terraform {&lt;br&gt;
  required_providers {&lt;br&gt;
    aws = {&lt;br&gt;
      source = "hashicorp/aws"&lt;br&gt;
      version = "5.17.0"&lt;br&gt;
    }&lt;br&gt;
    tls = {&lt;br&gt;
      source = "hashicorp/tls"&lt;br&gt;
      version = "4.0.4"&lt;br&gt;
  }&lt;br&gt;
 }&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;provider "aws" {&lt;br&gt;
  # Configuration options&lt;br&gt;
  region     = "us-east-1"&lt;br&gt;
  access_key = "AKIATWPFCVR7VUV5PQOZ"&lt;br&gt;
  secret_key = "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"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;provider "tls" {&lt;br&gt;
  # Configuration options&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Resource to Create TLS Key
&lt;/h1&gt;

&lt;p&gt;resource "tls_private_key" "razzaq_key" {&lt;br&gt;
  algorithm = "RSA"&lt;br&gt;
  rsa_bits  = 4096&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Key Pair Variable
&lt;/h1&gt;

&lt;p&gt;variable "key_pair_name" {&lt;br&gt;
  type = string&lt;br&gt;
  default = "razzaqkeypair"&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Resource to Create Generated Key Pair to AWS and Saved Private Key in Local Host
&lt;/h1&gt;

&lt;p&gt;resource "aws_key_pair" "generated_razzaq_key" {&lt;br&gt;
  key_name   = var.key_pair_name&lt;br&gt;
  public_key = tls_private_key.razzaq_key.public_key_openssh&lt;/p&gt;

&lt;p&gt;provisioner "local-exec"{&lt;br&gt;
    command =   "echo '${tls_private_key.razzaq_key.private_key_pem}' &amp;gt; ./'${var.key_pair_name}.pem'"&lt;br&gt;
 }&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Creating SG and Allowed HTTP + SSH
&lt;/h1&gt;

&lt;p&gt;resource "aws_security_group" "razzaq-sg" {&lt;br&gt;
  name = "sec-grp-razzaq"&lt;br&gt;
  description = "Allow HTTP and SSH traffic via Terraform"&lt;/p&gt;

&lt;p&gt;ingress {&lt;br&gt;
    from_port   = 80&lt;br&gt;
    to_port     = 80&lt;br&gt;
    protocol    = "tcp"&lt;br&gt;
    cidr_blocks = ["0.0.0.0/0"]&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;ingress {&lt;br&gt;
    from_port   = 22&lt;br&gt;
    to_port     = 22&lt;br&gt;
    protocol    = "tcp"&lt;br&gt;
    cidr_blocks = ["0.0.0.0/0"]&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;egress {&lt;br&gt;
    from_port   = 0&lt;br&gt;
    to_port     = 0&lt;br&gt;
    protocol    = "-1"&lt;br&gt;
    cidr_blocks = ["0.0.0.0/0"]&lt;br&gt;
  }&lt;br&gt;
  tags = {&lt;br&gt;
    Name = "sec-grp-razzaq"&lt;br&gt;
  }&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Creating EC2 Instance to Patch, Install and Start Apache2 + Display Private Key
&lt;/h1&gt;

&lt;p&gt;resource "aws_instance" "web" {&lt;br&gt;
 ami = "ami-053b0d53c279acc90"&lt;br&gt;
 instance_type = "t2.micro"&lt;br&gt;
 key_name = aws_key_pair.generated_razzaq_key.key_name&lt;/p&gt;

&lt;p&gt;tags = {&lt;br&gt;
   Name = "assignment1-razzaq"&lt;br&gt;
 }&lt;/p&gt;

&lt;p&gt;provisioner "local-exec" {&lt;br&gt;
 command = "chmod 400 ./${var.key_pair_name}.pem"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;provisioner "local-exec" {&lt;br&gt;
 command = "cat ./${var.key_pair_name}.pem"&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;connection {&lt;br&gt;
 type = "ssh"&lt;br&gt;
 user = "ubuntu"&lt;br&gt;
 private_key = file("${var.key_pair_name}.pem")&lt;br&gt;
 host = self.public_ip&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;provisioner "remote-exec" {&lt;br&gt;
 inline = [&lt;br&gt;
        "sudo apt-get update",&lt;br&gt;
        "sudo apt-get install apache2 -y",&lt;br&gt;
        "sudo systemctl start apache2"&lt;br&gt;
        ]&lt;br&gt;
 }&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  To Ouput Private Key with Command as Raw Output
&lt;/h1&gt;

&lt;p&gt;output "razzaq_private_key" {&lt;br&gt;
 value = tls_private_key.razzaq_key.private_key_pem&lt;br&gt;
 sensitive = true&lt;br&gt;
}&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Day 1 - Recap (QnA)</title>
      <dc:creator>Razzaq</dc:creator>
      <pubDate>Tue, 19 Sep 2023 01:20:32 +0000</pubDate>
      <link>https://www.debug.school/pujako/day-1-recap-qna-93k</link>
      <guid>https://www.debug.school/pujako/day-1-recap-qna-93k</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Why do we need terraform?&lt;br&gt;
--&amp;gt; To manage multiple infrastructure tools in a sense to integrate and have control on those tools in a common way.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is Providers?&lt;br&gt;
--&amp;gt; Could be any of the infrastructure's API that are supported by terraform such as on-premise and cloud tools/platform e.g AWS, Azure, VMware, Red Hat, GitHub etc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is Resources?&lt;br&gt;
--&amp;gt; Defined parameter from providers's API to be used as a code in terraform&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;List out Top 8 Commands which we have learnt so far?&lt;br&gt;
What are the block we have used in .tf file? Explain in Short&lt;br&gt;
--&amp;gt; command learnt, terraform [providers, init, validate, plan, apply, destroy, show, output]&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;--&amp;gt; block are provider, resource, connection, output, provisioner &lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
