Terraform - Jenkins

NuJey·2025년 3월 19일

Jenkins 서버 배포

테라폼을 이용하여 젠킨스 EC2 서버 배포 하기 !

  • main.tf에서 variables 등록하면 apply나 init시 value를 입력 받을 수 있음

main.tf

provider "aws" {
  region = "ap-northeast-2"
}

module "security_group" {
  source = "../modules/security-group"
}

resource "aws_instance" "jenkins_server" {
  ami             = var.ami
  instance_type   = var.instance_type
  security_groups = [module.security_group.sg_id]

  user_data = <<-EOF
              #!/bin/bash
              set -e

              # Java 설치
              sudo dnf install -y java-17-amazon-corretto

              # Jenkins 레포 등록
              sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
              # sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
              sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io-2023.key
              # Jenkins 설치
              sudo dnf install -y jenkins

              # Jenkins 서비스 실행
              sudo systemctl enable jenkins
              sudo systemctl start jenkins
              EOF

  tags = {
    Name = "jenkins-server"
  }
}
  • 배포와 동시에 젠킨스 설치 후 시작

module/security-group/main.tf

resource "aws_security_group" "jenkins_sg" {

  # Jenkins UI (8080 포트)
  ingress {
    from_port   = 8080
    to_port     = 8080
    protocol    = "tcp"
    cidr_blocks = [""] // ip addr
  }
  ingress {
    from_port   = 22
    to_port     = 22
    protocol    = "tcp"
    cidr_blocks = [""] // ip addr
  }
  # 모든 아웃바운드 트래픽 허용
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}

output "sg_id" {
  value = aws_security_group.jenkins_sg.id
}

Module

  • SG, VPC, Subnet과 같은 부가 기능들을 모듈로 따로 관리하여 좀 더 편리하게 구성

명령어

terraform init
terraform apply

간단한 젠킨스 서버 배포완료

0개의 댓글