bastion ec2 인스턴스를 생성할 때
가장 먼저 실행될 스크립트를 작성할 것이다.
스크립트 파일들을 모듈로써 관리가 용이하도록
templates
디렉토리에 저장할 예정이다.
deploy
디렉토리 내에 templates 디렉토리를 생성한다.
다시 templates 디렉토리 내에 bastion 디렉토리를 생성한다.
다시 bastion 디렉토리 내에 user-data.sh 파일을 생성한다.
/deploy/templates/bastion/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)를 포함시키는 것이다.
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")
)
}