230829-terraform_02

soo·2023년 8월 29일
0

terraform

목록 보기
1/1

RDS 설치 -> host 서버 접속 -> httpd + wordpress 설치
패키지 버전 확인: amazon-linux-extras list | grep php
특정 버전 설치: amazon-linux-extras enable php8.0

rds 만들고 엔드포인트 받기(mydb.chtn61fibgt9.us-west-1.rds.amazonaws.com)
(표준생성 - mysql(엔진버전 8.0.28 제일 낮은) - 프리티어 - 식별자(mydb) - 자격증명(root) - 마스터암호(It12345!) - 버스터블클래스(t2마이크로) - vpc 선택

  • 퍼블릭액세스(아니오) - 보안그룹(만들어둔것) - 가용영역 설정 - 추가구성 클릭
  • 초기데이터베이스 이름(wordpress) - 백업 활성화 체크 해제 - 스냅샷 체크해제
  • 마이너 버전 업그레이드 해제 - 만들기

워드프레스 홈페이지 다운로드(5.7.8버전 tar.gz)
홈페이지 - all releases - 5.7.8 tar.gz 링크 복사

Install php + httpd

#! /bin/bash
wget https://ko.wordpress.org/wordpress-5.7.8-ko_KR.tar.gz
tar xvfz  wordpress-5.7.8-ko_KR.tar.gz
yum install -y httpd
cp -r wordpress/* /var/www/html/
amazon-linux-extras enable php8.0
yum install -y php php-fpm php-pdo php-mysqlnd
cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
sed -i 's/DirectoryIndex index.html/DirectoryIndex index.php/g' /etc/httpd/conf/httpd.conf
sed -i 's/database_name_here/root/g' /var/www/html/wp-config.php
sed -i 's/user_here/root/g' /var/www/html/wp-config.php
sed -i 's/password_here/root/g' /var/www/html/wp-config.php
sed -i 's/localhost/{ endpoint 주소 }/g' /var/www/html/wp-config.php
systemctl enable --now httpd

코드 작성

명령어들은 코드에 하드 코딩하지 않는것이 좋으므로 따로 파일에 저장하여 사용.

sh 파일 생성

코드 수정

엔드포인트가 없는 경우, 실행하면 DB 연결 오류 화면이 출력됨 -> DB 서버 생성 후 엔드포인트를 추가해 주면 wordpress 화면이 정상적으로 출력됨.

ELB 생성

공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb

tmi:
AWS는 frontend와 backend를 리스너와 타겟그룹으로 부른다. 접속 구조는 리스너(Front-end) -> LB -> target group(Back-end)
ALB 생성시 target group은 listener 보다 먼저 생성되어야 한다.
health check는 html로만 가능하기 때문에 health check용 html 생성이 필요할 수 있음.

tf code 작성

생성됨

ALB Target Group 생성

공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_target_group

tf code

health check를 위해 sh파일에 health.html을 생성하는 코드 추가.

apply

user data가 추가 되면 기존 인스턴스는 종료되고 새로운 인스턴스가 생성됨

코드 수정후 health.html 내용이 정상 출력됨.

aws console에서 확인

ALB listener 생성

공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lb_listener

tf code

apply

auto scale 및 attachment 필요.
auto scaling 그룹 -> 시작 템플릿 필요

ami 생성

공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ami_from_instance

depens_on 명령어 사용

코드

aws console 확인

AutoScale 생성

Launch configuration
평문으로 입력하면 안됨 -> filebase64 사용해서 암호화 필요

공식 문서(Launch template): https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/launch_template

tf code

Auto Scaling Group 생성

공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/autoscaling_group

tf code 작성

concat을 이용해서 한번에 여러개의 resource를 처리하는것도 가능함.

Auto Scaling group 생성 확인

Auto Scaling Attachment 작성

공식 문서: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/autoscaling_attachment

tf code 작성

RDS 생성

공식 문서(DB instance): https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/db_instance

tf code

RDS 생성됨


profile
이것저것 공부하는

0개의 댓글