728x90 반응형 Cloud71 Terraform: Separating Server 모듈에서 하나의 서버만 만들도록 변경 명령어를 이용하여 따로 따로 실행 가능하게 하기 위함 Modules 안 server 폴더 안쪽에 하위 폴더를 만들면 테라폼에서 접근을 하지 않음 이 작업의 접근 방식은 server 에 있는 main 을 분할은 하되, staging 에서 module 접근자로 해결 previous code staging/main.tf # servers module "servers" { source = "../modules/server" # going to variabels.tf env = local.env region = var.region site = var.site support_vpc = var.support_vpc username = var.username passw.. Dev./Terraform 2023. 9. 6. Terraform: Modules Staging code refactoring 기존에는 코드를 하나의 main.tf 파일에 담아서 동작시켰지만 실제로는 기능별로 분리해서 관리하는게 가독성이 좋다. hasicorp 의 제공하는 문서에 의하면, The standard module structure is a file and directory layout we recommend for reusable modules distributed in separate repositories. Terraform tooling is built to understand the standard module structure and use that structure to generate documentation, index modules for the module.. Dev./Terraform 2023. 9. 5. Terraform: LoadBalancer Load balance 앱을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포한다. 애플리케이션 가동 중지 없이 애플리케이션 서버 유지 관리 또는 업그레이드 실행 Health check 을 수행하고 가동 중지를 유발할 수 있는 문제를 방지 서브넷 -> 로드벨런스 리소스 -> 타겟 그룹 -> 리스너 -> 적용 인스턴스 설정 ## Load Balancer 생성 시작 # Load Balancer resource "ncloud_lb" "lion-lb-tf" { name = "be-lb-staging" network_type = "PUBLIC" type = "NETWORK_PROXY" # 로드 밸런서는 구분지어진 하나의 서브넷을 받기 때문에 따로 설정해준다. subnet_no_list = [ ncloud.. Dev./Terraform 2023. 9. 5. Terraform: AWS - VPC 생성 Terraform 으로 AWS VPC 생성 AWS Provider: init Customizing Configuration provider 에서 제공하는 기본 틀을 바탕으로 configuration customizing # infra/aws/main.tf terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } # Configure the AWS Provider provider "aws" { region = "ap-northeast-2" } # Create a VPC resource "aws_vpc" "lion" { cidr_block = "10.1.0.0/16" tags = { Name = "lio.. Dev./Terraform 2023. 9. 4. Terrform: NCP 서버 생성 Infra/main.tf 에 NCP 를 위한 provider 셋팅 Beginning point terraform doc 에서 Ncloud 와 관련한 문서찾기 init: Customizing configuration NaverClould provider 셋팅 가져와서 설정값 커스터마이징 # main.tf terraform { required_providers { ncloud = { source = "NaverCloudPlatform/ncloud" } } required_version = ">= 0.13" } // Configure the ncloud provider provider "ncloud" { # access_key = var.access_key # secret_key = var.secret_key.. Dev./Terraform 2023. 9. 2. Terraform: 설치와 기본정보 Install Terraform brew tap hashicorp/tap brew install hashicorp/tap/terraform Terraform command init 테라폼 명령어 사용을 위해 각종 설정을 진행 테라폼이 코드를 스캔하여 어느 공급자인지 확인하고 필요한 코드를 다운로드 plan 테라폼으로 작성한 코드가 어떻게 만들어질지에 대한 예측결과 보여줌 apply 실제로 테라폼 코드를 실행하여 인프라를 생성하는 명령어 import 이미 만들어진 자원을 테라폼 state 파일로 옮겨주는 명령어 state 테라폼 state 를 다루는 명령어로 mv, push 와 같은 명령어를 포함 destroy 해당 코드로 생성된 모든 리소스를 제거 basic process init -> plan -> a.. Dev./Terraform 2023. 9. 1. Terraform: IaC IaC 의 개념 및 필요성 Infrastructure as Code - 인프라를 코드로 관리한다. 일정 수준의 규모를 넘으면 아래와 같은 이유들로 IaC 도입의 필요성이 충족된다. 자동화 일관성 버전관리 테스트 비용절감 협업 IaC Tools Terrraform 의 장점 테라폼, Terraform 이 가지고 있는 장점은 다음과 같다. 모듈화 상태관리 강력한 생태계 자체 언어 Terraform 의 구성요소 테라폼은 HasiCorp 사에서 Go 를 사용해서 만든 오픈소스이며, 구성요소는 아래와 같다. provider 테라폼으로 생성할 인프라의 종류를 의미 resource 테라폼으로 실제로 생성할 인프라 자원을 의미 state 테라폼을 통해 생성한 자원의 상태를 의미 output 테라폼으로 만든 자원을 변수 .. Dev./Terraform 2023. 9. 1. [Tip] DB server: Postgres:13 자동설정 클라우드에서 인스턴스로 서버르 리눅스 서버를 하나 열고 그 위에 Docker 를 이용하여 PostgreSQL 컨테이너를 하나 돌리면서 요금이 많이 나오는 스토리지 서버를 임시로 대신하게 한다. 인스턴스 생성 이후 deploy 스크립트 실행 # deploydb.sh #!/bin/bash sudo apt-get update && upgrade # lion 유저를 sudo 그룹에 추가 sudo usermod -aG sudo lion echo "lion 사용자가 sudo 그룹에 추가되었습니다." sudo apt-get install -y ca-certificates curl gnupg lsb-release curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/dock.. Dev./Basic knowledge 2023. 9. 1. [Tip] 인스턴스 권한 자동설정 (feat. docker) 클라우드 플랫폼을 통해서 인스턴스를 생성하면 인스턴스에 root 계정과, init script 로 만든 유저가 하나 생성된다. # init script sample #!/bin/bash # set variables NEW_USER_ID="lion" PASSWORD="abcd" # user creations echo "Creating new user" useradd -s /bin/bash -d /home/$NEW_USER_ID -m $NEW_USER_ID # password change echo "Set password" echo "$NEW_USER_ID:$PASSWORD" | chpasswd # user auth echo "Update authorization" echo "$NEW_USER_ID ALL=.. Dev./Basic knowledge 2023. 8. 31. [Cloud] Django: Code develop for TEST2 Github Actions 에서 work flow 를 분리했다. 이제 django 쪽에서 test 를 위한 일부 코드를 작성해 보자. TEST 를 위한 기능 디벨롭, 그리고 테스트 코드 실행 현재 제공하고 있는 기능은 Topic 을 생성하고 그 아래에 Post 들이 One to Many 의 형태로 묶여있는 구조이다. 또 부여된 그룹에 따라 권한이 달라져 접근하거나 작성하는데 제한을 두고 있다. 이 부분들을 테스트 하기 위해서는 유저를 생성하면서 권한을 부여하고, Topic 과 Post 를 생성하는 과정에서 권한을 체크하는 로직이 필요할 것이다. 이를 테스트 하기 위해서 로직을 구현해보자 장고의 로직 자체는 클라이언트가 urls 를 통해 요청을 보내면 views 에서 모델과 templates 을 엮어주는 .. Dev./Django & DRF 2023. 8. 31. [Cloud] Github Actions: Lint CI 단계에서 보면 개발자 여러명이서 작업을 하다보면 포맷팅이 각자 다르기 떄문에 몇가지 방식으로 통일해서 사용하자고 약속해 놓은 게 있다. 개발자들이 직접 기억하고 약속을 지킬 수 없으니 프로그램으로 돌려서 일치 시키게 해주는 것. 파이썬 린트 중 하나인 블랙을 설치해서 적용시켜보자 pip install black # 경로에 있는 모든 파일들을 점검하겠다. black . # 해당 경로아래에 있는 파일들만 점검하겠다. black --check lion_app 위 내용을 CI.yml 파일에 적용시켜보자 하고자 하는 작업 job 으로 분리하여 새로운 컨테이너를 만들고 checkout 하여 코드에 접근한뒤 python 을 셋팅하고 black 을 설치하여 확인하고자 하는 경로의 파일들을 점검 # CI.yml n.. Dev./Github Actions 2023. 8. 30. [Cloud] Github Actions: Code develop for TEST TEST 를 위한 기능 디벨롭 settings 파일 구분지어서 오버라이딩하기 각각의 개발환경에 맞는 settings 를 사용하기위해 settings 폴더구조로 각각의 settings.py 를 오버라이딩하여사용하게 한다. # base.py "기존에 있는 settings.py" # local.py # prod.py # staging.py 우선 로컬환경 에서 분리된 내용을 적용시키기 위해서는 wsgi 파일에서 경로를 수정해주어야 한다. # start #!/bin/sh # 파이썬 알파인을 쓰기 떄문에 bash 조차 없다.. 그래서 sh 로 python3 manage.py collectstatic --no-input python3 manage.py migrate gunicorn lion_app.wsgi:appli.. Dev./Github Actions 2023. 8. 29. 이전 1 2 3 4 5 6 다음 728x90 반응형