heowc / programming-study

개발 스킬, 언어, 설계에 대한 공유 저장소
https://heowc.dev/programming-study/repo/
53 stars 5 forks source link

[devOps] Learn DevOps: Infrastructure Automation With Terraform #60

Open heowc opened 6 years ago

heowc commented 6 years ago

https://www.udemy.com/learn-devops-infrastructure-automation-with-terraform/learn/v4/overview

heowc commented 6 years ago

Terraform

인프라를 만들고 바꾸고 버전 관리하는 도구

소개

특징

heowc commented 6 years ago

설치

https://www.terraform.io/downloads.html

Demo Sample

https://github.com/wardviaene/terraform-course

환경 셋팅(+Vagrant)

https://github.com/heowc/vagrant-sample/tree/master/ubuntu1604_terraform

설정

heowc commented 6 years ago

Terraform로 AWS 코딩하기

  1. AWS 계정 생성

    • IAM 추가(AdministratorAccess)
  2. terraform init

  3. region 확인(https://docs.aws.amazon.com/ko_kr/general/latest/gr/rande.html)

  4. 설정 작성(provider 지정)

  5. terraform plan

  6. terraform apply

heowc commented 6 years ago

EC2 instance

  1. resoure: aws_instance
    • ami 지정
    • 인스턴스 타입 지정

S3 Bucket

  1. resoure: aws_s3_bucket

RDS MySql

  1. resource: aws_db_instance
  2. engine, username, password, ...
  3. skip_final_snapshot: 마지막 스냅샷 skip 여부

VPC

         main vpc
        ┌ subnet - [public], [private]
gateway ┼ subnet - [public], [private]
        └ subnet - [public], [private]
heowc commented 6 years ago

remote-state

heowc commented 6 years ago

security group 설정

※ CIDR 사이더(Classless Inter-Domain Routing, CIDR)는 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한, 최신의 IP 주소 할당 방법이다.

heowc commented 6 years ago

aws-cli 맛보기

설치

ssh 접속

heowc commented 6 years ago

data sources

heowc commented 6 years ago

Module

heowc commented 6 years ago

NGINX 맛보기(ubuntu 기준)

설치

$ sudo apt-get update -y
$ sudo apt-get install -y nginx

실행

$ sudo systemctl start nginx.service
or
$ sudo service nginx start

설정 파일 갱신

$ sudo nginx -s reload

프록시 설정(ex. conf.d/ngx_proxy.conf 생성)

api application에 proxy 용도라면, nginx.conf에 include된 site-available를 주석하는 것이 좋다?

server {
    location / {
        proxy_pass http://localhost:8080;
    }
}

참고 https://nginx.org/en/docs/beginners_guide.html

heowc commented 6 years ago

명령어 정리

명령어 설명
apply provider에 반영
destroy 테라폼으로 provider에 반영된 내용 제거
fmt 설정 파일 포맷과 스타일을 정리
get 모듈 다운로드 및 업데이트
graph Graph Viz 문법의 내용 표기
import state import
output output 내용 표기
plan 작성한 내용을 표기
push hashicorp의 엔터프라이즈 툴인 atlas에서 push
refresh remote state 갱신
remote remote storge 설정(ex. S3, consul)
show plan 내용 보기
state 강화된 state 관리 command
taint apply에서 지정한 내용을 없애고 다음 apply에 재생성
validate 테라폼 문법 검증
untaint taint 취소