더 골든 패커

22일차 - Terraform용 패커를 사용하여 골든 이미지 구축 - 22일차



100 days of Cloud on GitHub - Read On iCTPro.co.nz -


패커를 Terraform과 통합하는 방법은 무엇입니까?
  • 패커가 HCL 언어를 사용함
  • You Build 이미지
  • 그런 다음 이미지를 참조하십시오
  • .

    패커를 다운로드하고 설치하자



    프로젝트 작업 공간 환경


  • AWS 환경을 위한 이 프로젝트에 VSCode 및 WSL2(ubuntu)를 사용하고 있습니다.

  • 패커 설치



    다운로드link
    우리는 WSL 2 Linux를 사용하고 있으므로 bash 스크립트를 통해 다운로드하고 있습니다.

    curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
    sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
    sudo apt-get update && sudo apt-get install packer
    

    프로젝트 폴더를 만들고 이름을 packer로 지정하고 cd합니다.

    패커 확인 중




    이미지 구축



    우리는 NGINX를 위한 골든 이미지를 구축할 것입니다.
  • 폴더 안에 파일을 만들고 이름을 nginx.pkr.hcl로 지정합니다.
  • 코드 아래에 붙여넣기를 복사합니다. ap-southeast-2 지역의 Ubuntu에서 NGINX 서버를 실행하기 위한 패커 이미지를 생성하기 위한 HCL 코드입니다.

  • variable "ami_id" {
        type = string
        default = "ami-0b7dcd6e6fd797935"
    }
    
    locals {
        app_name = "nginx"
    }
    
    source "amazon-ebs" "nginx" {
        ami_name = "my-nginx-server-${local.app_name}"
        instance_type = "t2.micro"
        region = "ap-southeast-2"
        source_ami = "${var.ami_id}"
        ssh_username = "ubuntu"
        tags = {
            Name = local.app_name
        }
    }
    
    build {
        sources = ["source.amazon-ebs.nginx"]
        provisioner "shell"  {
            inline = [
                "sudo apt install nginx -y",
                "sudo systemctl enable nginx",
                "sudo systemctl start nginx"
    
            ]
        }
    }
    

    스크립트를 완료하면 패커를 사용하여 이미지를 빌드합니다.

    packer build nginx.pkr.hcl 
    



    빌드 확인


  • AWS 콘솔로 이동하여 EC2 대시보드로 이동을 선택합니다.
  • 이제 이미지 영역 아래에서 AMI를 선택합니다.
  • 패커 빌드 AMI를 볼 수 있습니다.


  • Terraform으로 새 인스턴스 배포


  • 동일한 폴더에 새 파일을 생성하고 이름을 main.tf로 지정합니다.
  • 이 코드 복사

  • terraform {
      required_providers {
        aws = {
          source  = "hashicorp/aws"
          version = "3.58.0"
        }
      }
    }
    
    provider "aws" {
      profile = "default"
      region  = "ap-southeast-2"
    }
    
    data "aws_ami" "packer_image" {
        filter {
                name   = "name"
                values = ["my-nginx-server-nginx"]
            }
        owners = ["self"]
    }
    
    resource "aws_instance" "my_server" {
      ami           = data.aws_ami.packer_image.id
      instance_type = "t2.micro"
        tags = {
            Name = "Server-nginx-Packer"
        }
    }
    
    output "public_ip" {
      value = aws_instance.my_server.public_ip
    }
    

  • 테라포밍 시작

  • terraform init
    

  • 배포 계획

  • terraform plan
    

    오류가 없는 경우
  • 인프라 배포

  • terraform apply -auto-approve
    

    모범 사례


  • 패커 코드 빌드
  • git에 게시, 커밋
  • 빌드 이미지
  • 제공 이미지
  • 이미지 참조
  • 및 프로비저닝 인프라

  • 🎉축하합니다🎉 패커에 이미지 빌드를 사용하여 EC2 인스턴스를 성공적으로 배포했습니다.

    ✅저와 연결하세요
    🤝🏽에서 나와 연결
    🧑🏼‍🤝‍🧑🏻 또는 iCTPro.co.nz에서 더 많은 게시물 보기
    💻 GitHub에서 나와 연결


    .ltag__user__id__637154 .follow-action-button {
    배경색: #141D2B !중요;
    색상: #9FEF00 !중요;
    border-color: #141D2B !중요;
    }



    아누빈드 산카라빌라삼 팔로우



    Experienced Cloud Technology Specialist with a demonstrated skillset of working with Emergency, NZ Police & Education industry

    좋은 웹페이지 즐겨찾기