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")
)
}