devops 6

Day 3 - 백엔드 설정 및 리소스 작업 디렉토리 분리

Terraform Backend 사용하는 이유 협업 시에 리소스가 겹치거나 꼬이지 않게 Locking 하는 기능을 제공 로컬에 .tfstate 파일을 저장하여 관리하는 것보다 원격 저장소에 관리하는게 보안/관리적 측면에서 더 효과적임 생성된 리소스 자원(실제 상태)의 정보를 받아와 사용할 수 있음 코드로 보는 예제 기존 방식대로, 리소스를 개별 생성하고 output을 사용하지 않으면 생성된 리소스 자원을 하드 코딩하여 사용해야 함 기존 방식 resource "aws_instance" "example" { ami = data.aws_ami.amazon_linux_2.image_id instance_type = "t2.micro" availability_zone = "ap-northeast-2a" assoc..

DevOps/Terraform 2022.08.23

Day 2 - VPC 프로비저닝

Day 2 - VPC 프로비저닝 모듈을 사용하는 이유 캡슐화 재사용성 일관성 코드로 보는 예제 모듈을 사용하지 않으면, 각각의 개별 리소스들을 하나씩 생성해주고, 의존성을 확인해줘야 함. 모듈을 사용하면 모듈 내 변수에 값만 할당해주면 알아서 리소스들을 생성해줌 사용 예제를 보면 훨씬 간결하고 많은 공수 필요 없이 생성 가능 모듈을 사용하지 않았을 때 resource "aws_vpc" "main" { cidr_block = "192.168.0.0/22" instance_tenancy = "default" tags = { Name = "main" } } resource "aws_subnet" "public-2a" { vpc_id = aws_vpc.main.id cidr_block = "192.168.0.0..

DevOps/Terraform 2022.07.30

AWS Parameter Store로 소스 코드 내 중요 설정 값 보안하기

Spring 코드를 작성하다가 JWT 토큰 혹은 암호화 키 값 등과 같이 코드 내에 중요 설정 값을 하드코딩되어 있는 것을 보고 보안 상 취약할 거 같아 관련 레퍼런스들을 찾아보니, AWS Parameter Store를 통해 키/값을 저장하고 코드 내에서 키를 통해 불러올 수 있는 것을 알아냈다. 하지만, 현재 필자는 Spring boot 2.7.0 버전을 사용하고 있는데 2.4.0 버전 이상부터 application 리소스 설정하는 방식이 바뀌어서 기존에 나와 있는 레퍼런스를 그대로 참고해서는 제대로 동작을 안 했다. 그래서 이번 기회에 최신 버전으로 동작하는 코드를 정리해보려고 한다. 추가로, 이번 기회에 Spring boot 2.4.0 이전 버전에서 파라미터 스토어를 사용하다가 2.4.0 버전 ..

DevOps 2022.07.29

Day 1 - EC2 프로비저닝 (인스턴스 생성)

Day 1 EC2 프로비저닝 (인스턴스 생성) 테라폼 문법 리소스 선언 “” “” "" "" { ami = "ami-123456" instance_type = "t2.micro" } resource "aws_instance" "db" { ami = "ami-123456" instance_type = "t2.micro" } ""은 소스 내에서 참조를 위해 사용하는 변수 Output 프로비저닝 된 리소스의 메타데이터를 가져옴 코드 내용 암시적(Implicit), 명시적(explicit) 종속성 암시적 종속성 (Implicit Dependency) EC2 인스턴스가 생성된 이후에 EIP가 생성되어 연결 됨 resource "aws_instance" "example_a" { ami = data.aws_ami.a..

DevOps/Terraform 2022.07.25

Day 0 - Terraform 환경 구성

이번 회사에서 AWS 및 테라폼 관련 교육을 진행하기 위해서 자료를 만들어보고자 작성하고 있다. 나도 아직 테라폼에 대해서는 잘 모르는 부분이 많기 때문에, 이번 기회를 통해서 학습 및 정리를 하려고 한다. 직접 AWS 콘솔에서 인프라 환경을 프로비저닝하고, 그 이후에 테라폼으로 작성하여 프로비저닝 하는 순서로 진행될 예정이다. 기본적으로, 이번 포스팅의 테라폼 환경 구성은 AWS 계정이 있는 것을 전제로 한다. Terraform 환경 구성 환경 구성에 필요한 건, Terraform과 AWS IAM이다. Terraform 설치 내가 처음에 테라폼을 사용했을 때는 정확하게는 잘 모르겠지만, 직접 Terraform을 설치하여 버전 관리가 조금 어려웠다. 근데 버전 관리를 쉽게 할수 있도록 tfenv를 지원하..

DevOps/Terraform 2022.07.25

AWS Secrets Manager로 애플리케이션에서 RDS 자격증명 정보 보안하기

보통 AWS를 처음 시작하게 되면 EC2와 관련된 컴퓨팅 리소스를 많이 사용하게 되고, 그 다음으로는 RDS인 것 같다. 그리고 개발자들은 소스 코드의 설정 파일에 RDS 접속 정보를 넣어서 연결하게 된다. 이 때, 생길 수 있는 문제는 바로 RDS의 자격증명 정보(마스터 계정 아이디, 비밀번호)가 여과없이 소스 코드에 드러나게 되는 것이다. 이 부분을 해결하기 위해 AWS는 Secrets Manager라는 서비스를 출시했다. AWS Secrets Manager 란? AWS Secrets Manager는 애플리케이션, 서비스, IT 리소스에 액세스할 때 필요한 보안 정보를 보호하는 데 도움이 됩니다. 이 서비스를 사용하면 수명 주기에 걸쳐 데이터베이스 자격 증명, API 키 및 다른 보안 정보를 손쉽게 ..

DevOps 2021.08.06