user data script 작성하기

1. user-data.sh

bastion ec2 인스턴스를 생성할 때
가장 먼저 실행될 스크립트를 작성할 것이다.


스크립트 파일들을 모듈로써 관리가 용이하도록
templates디렉토리에 저장할 예정이다.



deploy 디렉토리 내에 templates 디렉토리를 생성한다.
다시 templates 디렉토리 내에 bastion 디렉토리를 생성한다.
다시 bastion 디렉토리 내에 user-data.sh 파일을 생성한다.



/deploy/templates/bastion/user-data.sh

  • user-data.sh
#!/bin/bash

sudo yum update -y 
sudo amazon-linux-extras install -y docker
sudo systemctl enable docker.service
sudo systemctl start docker.service
sudo usermod -aG docker ec2-user

#!/bin/bash가 최상단에 작성된 파일들을 종종 봤다.
Linux 에 현재 이 파일이 bash 스크립트 파일임을 선언하는 것이다.

yum패키지 매니저를 업데이트 시키며,
docker를 설치 및 enable하고,
권한을 위한 명령어를 입력해준다.

sudo usermod -aG docker ec2-user

도커를 run 하기 위해서
도커 그룹에 ec2 유저(ec2-user)를 포함시키는 것이다.

출처: https://techoverflow.net/2017/03/01/solving-docker-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/



2. bastion.tf 파일 수정


  • 변경 전
data "aws_ami" "amazon_linux" {
  most_recent = true
  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-2.0.*-x86_64-gp2"]
  }
  owners = ["amazon"]
}

resource "aws_instance" "bastion" {
  ami           = data.aws_ami.amazon_linux.id
  instance_type = "t2.micro"

  tags = merge(
    local.common_tags,
    map("Name", "${local.prefix}-bastion")
  )
}



  • 변경 후
data "aws_ami" "amazon_linux" {
  most_recent = true
  filter {
    name   = "name"
    values = ["amzn2-ami-hvm-2.0.*-x86_64-gp2"]
  }
  owners = ["amazon"]
}

resource "aws_instance" "bastion" {
  ami           = data.aws_ami.amazon_linux.id
  user_data = file("./templates/bastion/user-data.sh")
  instance_type = "t2.micro"

  tags = merge(
    local.common_tags,
    map("Name", "${local.prefix}-bastion")
  )
}

좋은 웹페이지 즐겨찾기