테라폼 전체 코드https://github.com/su-mmer/AWSCodeDeployT..
AWS
목적Git Action과 AWS CodeDeploy 스택이 필요해서 직접 사용해보려고 합니다. Git Action으로도 CI/CD를 모두 진행할 수 있는데 왜 그렇게 하지 않는지도 생각해보았습니다. 제가 찾은 Git Action 배포 방식은 워크플로우에서 서버에 접속하여 수동으로 배포하는 방법 뿐 입니다. 그런데 워크플로우에서 실행시킨 프로세스는 워크플로우 종료와 함께 모두 종료시키는 것이 워크플로우의 원칙입니다. 실제로 Git Action에서 nohup으로 프로세스를 실행시키는 명령을 주더라도 워크플로우가 종료될 때 프로세스도 함께 종료됩니다. 임의로 뭔가를 건드려서 종료시키지 않을 수도 있지만 그러라고 만든 게.. 아니니까 다른 방법을 쓰는 것이 맞다고 생각합니다. 제가 Git Action을 사용하는..
실행 환경 AWS EC2 - Ubuntu 22.04 window Git Action Spring Boot 에러 파악 Git Action을 이용해 SpringBoot gradle 빌드를 진행 했습니다. Action에서 제공하는 yml을 사용하여 build를 했는데 gradlew를 실행할 수 없다는 에러가 발생했습니다. gradle 동작 방식을 몰라서 삽질을 좀 했습니다. Error: Gradle script '/home/runner/work/cloud-skills-sample-spring-boot-app/cloud-skills-sample-spring-boot-app/gradlew' is not executable. 원인 분석 찾아보니 gradlew 파일에 대한 실행 권한이 없어서 발생한 에러였습니다. A..
테라폼으로 Bastion Server를 생성하겠습니다. 서버 생성 자체는 어렵지 않았으나 모듈화 할 때 생각할 것이 많아보입니다. 윈도우와 맥을 모두 사용해서 로컬호스트의 이름이 섞여있을 수 있습니다. 서버 접속을 위한 키 생성 hh@DESKTOP-4UIU15G:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/home/hh/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/hh/.ssh/id_rs..
구성에 맞추어 아래 네트워크 구성을 작성하겠습니다. VPC Public Subnet 1, 2 Private Subnet 1, 2, 3, 4, 5 NAT Gateway Internet Gateway Route Table 환경 세팅 테라폼 버전입니다. aws configure 되어있는 상태입니다. 코드 작성 기본 설정 terraform { required_providers { aws = { source = "hashicorp/aws" version = "~>4.0" } } } provider "aws" { region = "ap-northeast-2" default_tags { tags = { Name = "terraform-frog" } } } aws 버전과 태그를 지정하지 않았을 때 자동으로 설정될 기본..
Terraform 스터디 프로젝트로 이전에 AWS 3Tier를 구축했던 걸 Terraform을 활용해 다시 구축해 보기로 했습니다. 전체 아키텍쳐 구상(진행하며 변경 사항 추가할 예정)입니다. 주제 Terraform을 이용한 AWS 3-Tier 구성 중점 과제 인스턴스 모듈화 및 쉘 스크립트 작성 내용 WEB-WAS-DB 구조 인스턴스 모듈화 컴파일 설치로 진행 Terraform 코드를 Git에 push하면 GitAction을 이용해 AWS에 프로비저닝 되는 방식 수동으로 관리하는 부분 없이 Terraform으로 프로비저닝 했을 때 DB에서 불러온 내용을 웹에서 확인할 수 있어야 함 state 파일은 Terraform Cloud 사용 생각해 볼 내용 1. prod/dev을 어떻게 구분해서 쓸지? 일단 d..
AWS AK/SK를 EXPORT로 사용하거나, 파일에 저장하거나, 코드에 직접 넣기엔 보안적으로 너무나 안 좋다고 생각한다. 그래서 찾은 방법이 AWS의 profile을 사용하는 것이다. hh@DESKTOP-4UIU15G:~$ aws configure --profile hh AWS Access Key ID [None]: ****** AWS Secret Access Key [None]: ****** Default region name [None]: ap-northeast-2 Default output format [None]: hh@DESKTOP-4UIU15G:~$ aws s3 ls --profile hh aws configure --profile [profile_name] 명령으로 profile을 등록한..
WAS에 jsp 모듈 설치 wget https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.23.tar.gz tar zvxf mysql-connector-java-8.0.23.tar.gz cd mysql-connector-java-8.0.23/ 소스 설치하고 압축 해제 cp -a mysql-connector-java-8.0.23.jar /usr/lib/jvm/jre/lib/ext/ cp -a mysql-connector-java-8.0.23.jar /usr/local/tomcat8/lib/ jar 파일 복사 was 서버 설정 # /usr/local/tomcat8/conf/context.xml ... ... name - jdbc/ ..
WEB01, 02 Apache 2.4.X WAS01, 02 Tomcat 8.5.X DB01 MySQL 5.7.X 드디어 마지막~~ 보안그룹 설정 db-sg 인바운드 규칙 설정 was-sg 아웃바운드 설정 MySQL 소스 설치 https://downloads.mysql.com/archives/community/ MySQL :: Download MySQL Community Server (Archived Versions) Please note that these are old versions. New releases will have recent bug fixes and features! To download the latest release of MySQL Community Server, please vis..
NLB WEB01, WEB02에서 WAS01, WAS02로의 흐름이 NLB를 통해 이루어지도록 구성한다. AWS NLB의 동작 방식 AWS NLB 생성 타겟 그룹 생성하기 NLB의 트래픽을 넘겨줄 대상 그룹 만들기 web의 아웃바운드를 통해 나온 트래픽을 타겟그룹에서 8080으로 받는다. NLB의 트래픽을 보내줄 WAS 인스턴스 2개 선택 NLB 생성하기 내부에서 사용할거니까 Internal NLB가 위치할 subnet 선택 WEB01, WEB02가 위치한 subnet에 붙여주었다. target group을 붙여준다. 보안그룹 수정 web-sg 아웃바운드를 설정해서 web에서 8080포트로 WEB01, WEB02가 있는 서브넷으로 트래픽을 보낸다. was-sg의 인바운드에서 WEB01, WEB02가 있는..