Today
-
Yesterday
-
Total
-


  • [TF]Terraform 기초 및 설치
    DevOps/Terraform 2021. 12. 15. 01:11

    Infrastructure as Code(IaC)란?

    - 직역하면 코드로서의 인프라이다.

    - 코드를 통해 인프라 생성, 설정, 관리를 할 수 있는 방식

     

    IaC의 장점

    • 비용 절감
    • 배포 속도 향상
    • 오류 감소
    • 인프라 일관성 향상
    • 구성 변동 제거

     

    IaC 구현에 자동화 및 구성 관리 툴을 사용할 수 있다.

    대표적으로 아래와 같은 툴이 있다.

    • Chef
    • Puppet
    • Terraform
    • Ansible
    • AWS CloudFormation

    그 중에서 Terraform을 사용하여 AWS에서 어떻게 인프라를 코드로 구성하는지 공부할려고 한다.

     

     

    Terraform이란?

    •  HashiCorp에서 만든 오픈소스 IaC툴
    • .tf 파일 형식 (HCL 기반)
    • UTF-8 사용
    • AWS, GCP, Azure 퍼블릭 클라우드 및 다양한 서비스 지원

     

    🔍구성요소

    • provider : 생성 할 인프라의 종류
    • resource : 생성 할인프라 자원
    • state : 리소스의 상태
    • output : 생성된 자원의 변수 형태로 state에 저장
    • remote : 다른 경로의 state 참조

    🔍기본명령어

    • init : 명령어 사용을 위해 각종 설정 진행, 테라폼 명령어 최초 실행할 때 수행
    • plan : 작성한 코드로 생성을 미리보기
    • apply : 코드 적용
    • import : 생성된 리소스를 state 파일로 옮김
    • state : state 파일을 사용할 때 사용 
    • destroy : 생성된 리소스 삭제
    • terraform state list : 생성된 리소스 리스트

    • init
    테라폼의 다른 명령어들을 위한 설정을 진행, 내부적으로 provider와 state, module 설정 등을 위한 명령어

    terraform init​
    • plan
    작성한 테라폼 코드가 어떻게 생성될지 미리보기를 제공하는 명령어
    terraform plan​
    • apply
    작성한 테라폼 코드를 적용시켜 리소스를 생성하는 명령어
    terraform apply​

     


    Terraform 설치 

    AWS에서 EC2 Instance를 통해 테라폼을 설치할 것이다.

     

    EC2 Instance 사용환경은 아래와 같다.

    OS EC2 Instance Type
    ubuntu 20.04 t3.micro

     

    프리티어 사용이 가능하면 t2.micro로 사용해도 된다.

     

    1. 패키지 업데이트 및 HashiCorp 패키지 설치

    sudo apt-get update && sudo apt-get install -y gnupg software-properties-common curl

    2. HashiCorp Key 추가

    curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -

    3. HashiCorp 공식 Repository 추가 

    sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

    4. Terraform 설치

    sudo apt-get update && sudo apt-get install terraform

    편의성을 위한 세팅

    리눅스에서 코드 및 편의성을 위해 추가로 세팅한게 있다.

    vim 설치

    sudo apt-get install vim

    vim 기능 추가

    vi ~/.vimrc

    기능

    set number    " line 표시
    set ai    " auto indent
    set si " smart indent
    set cindent    " c style indent
    set shiftwidth=4    " 자동 공백 채움 시 4칸
    set tabstop=4    " tab을 4칸 공백으로
    set ignorecase    " 검색 시 대소문자 무시
    set hlsearch    " 검색 시 하이라이트
    set nocompatible    " 방향키로 이동 가능
    set fileencodings=utf-8,euc-kr    " 파일 저장 인코딩 : utf-8, euc-kr
    set fencs=ucs-bom,utf-8,euc-kr    " 한글 파일은 euc-kr, 유니코드는 유니코드
    set bs=indent,eol,start    " backspace 사용가능
    set ruler    " 상태 표시줄에 커서 위치 표시
    set title    " 제목 표시
    set showmatch    " 다른 코딩 프로그램처럼 매칭되는 괄호 보여줌
    set wmnu    " tab 을 눌렀을 때 자동완성 가능한 목록
    syntax on    " 문법 하이라이트 on
    filetype indent on    " 파일 종류에 따른 구문 강조
    set mouse=a    " 커서 이동을 마우스로 가능하도록

     

    alias 세팅

    수정 - 마지막 라인에 alias tf=terraform 추가

    vi /etc/bashrc

     

    동기화

    source /etc/bashrc

    terraform 대신 tf라는 alias를 통해 명령어를 입력할 수 있다.

     

    나는 윈도우에서 코딩을 할 때 Jetbrains 제품을 애용한다. 

    요즘 파이썬을 쓰는 일이 많아 Pycharm에 terraform 플러그인을 추가하여 사용하였다.

    terraform 플러그인을 설치하면 자동완성이 지원된다.

     

    어디까지나 편의성을 위해 설치한 것이지 필수는 아니다.

     


    참조

    [1] https://www.redhat.com/ko/topics/automation/what-is-infrastructure-as-code-iac

    [2] https://learn.hashicorp.com/tutorials/terraform/install-cli?in=terraform/aws-get-started

    [3] https://gabii.tistory.com/entry/Ubuntu-vim-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%84%A4%EC%A0%95

    'DevOps > Terraform' 카테고리의 다른 글

    [TF]Terraform 조건문  (0) 2021.12.21
    [TF]Terraform Count, Foreach  (0) 2021.12.19
    [TF]Terraform Variable & Local & Output  (0) 2021.12.19
    [TF] AWS Resource 생성  (0) 2021.12.19
    [TF]HCL 기초문법  (0) 2021.12.19

    댓글

www.devc4sh.com