전체 글 64

Terraform State

Terraform Backend 상태 관리를 위해서는 그 상태관리를 한 파일들을 보관해야하는 곳이 있어야한다. 이를 Terraform에서는 Backend라고 칭한다. 종류에 따라서 Local서버에서 저장하는 방식과 그 외에 저장하는 방식이 나뉘어지며, 종류는 다양하게 있다 종류 Local Backend Remote Backend(Terraform Cloud) → 최근에 나왔지만, 기능이 파워풀 하다 AWS S3 Backend(with/without DynamoDB) → DynamoDB가 있을 땐 Locking 기능이 있다(없으면 없다) kubernetes Backend를 고려를 할 때 가장 중요한 고려 대상은 Locking이라는 기술이 들어가있냐 아니냐 이다. Locking? 테라폼 상태 파일을 원격으로..

DevOps/Terraform 2023.08.05

HCL 문법

공식 Langauge documentation Terraform by HashiCorp 기초 HCL 문법 # 기본 사용 방법 "" "" { # Block body = # Argument } # 예제 resource "aws_vpc" "main" { cidr_block = var.base_cidr_block } Terraform에 파일 구조 파일 확장자 기본적으로 .tf 는 HCL 문법을 사용합니다. 하지만, 사용자의 편의상 JSON이 편하다고 느끼면, .tf.json 이라고 확장자 명을 변경하면 된다. ⇒ HCL문법보다 장점이 많은 방식은 아니기 때문에 그렇게 추천 하진 않는 방식이다. Terraform은 현 디렉토리에 존재하는 .tf 파일만 파싱하고 하위 디렉토리에 존재하는 .tf 파일은 파징 하지 않..

DevOps/Terraform 2023.08.05

Terraform && Packer 설치

TerraForm 설치 Downloads | Terraform by HashiCorp 우선 TerraForm 설치하려면 위의 사이트에 접속하여서 TerraForm을 설치한다. MacOS 기준 brew tap hashicorp/tap brew install hashicorp/tap/terraform 성공적으로 terraform이 설치가 된 것을 확인하려면 terraform version 만약 버전이 성공적이라면, 정상적으로 설치가 완료 된 것이다. 자동 완성 기능 추가 Terraform에 자동 완성 기능을 추가하기 위해서는 Enable tab completion 탭을 가면 된다 저는 Zsh 를 이용하기 때문에 Zsh 기준으로 작성하겠습니다. touch ~/.zshrc terraform -install-au..

DevOps/Terraform 2023.08.05

Terraform 개요

TerraForm TerraForm은 Write, Plan, Apply에 대한 개념을 강조하고 있다. Write TerraForm을 만든 HashiCorp는 다양한 인프라 언어들을 만들었습니다. 그 중에서 YAML 언어와 비슷한 HashiCorp Configuration Language(HCL) 을 통해서 인프라 코드를 작성할 수 있다. ← AWS EC2 서버를 정의하는 HCL이다. Plan plan을 통해서 해당 인프라 코드가 어떤 변화를 가져올 지 확인이 가능하다. 맨 하단에 있는 Plan 결과가 가장 중요하다는 것을 알 수 있습니다. Plan : 1 to add, 0 to change, 0 to destory 라고 하단에 적혀 있는데 이는 인프라 리소스가 1개 추가 될 예정이고, 변경점은 없고, 삭..

DevOps/Terraform 2023.08.05

Docker 간단 총 정리

이전에 Docker를 총 정리 했지만, 좀 더 쉬운 접근 방법으로 Container 기술을 저 나름대로 정의해보았기에, 공유해봅니다. Docker 배우기 전 준비 단계 왜 Docker를 사용할까? Docker를 왜 사용하는지에 대한 해답은 우리가 가상화를 왜 사용할까? 라는 물음에서 답을 얻을 수 있습니다 가상화 기본적으로 컨테이너는 가상화 기술의 발전형이라고 생각하면 됩니다. 가상화 시스템이 무엇이고, 가상화가 왜 필요한지를 알게 되면, Docker도 왜 탄생했는지를 알 수 있습니다. 가상화는 전통적으로 하드웨어에 종속된 리소스를 사용해 유용한 IT 서비스를 만들 수 있는 기술입니다. RedHat에서 정의하는 가상화입니다. 하지만, 용어가 어렵기에 쉽게 풀이를 해보겠습니다. 가상화란 결국 물리적 머신(..

DevOps/Docker 2023.08.05

Ansible Facts

Ansible Facts Discovering variables: facts and magic variables - Ansible Documentation 앤서블은 기본값으로는 Facts를 수집하게 되어있다. 그렇기 때문에 굳이 처음에 Facts를 수집하라고 하지 않아도 알아서 수집을 한다. 그러나, Facts를 수집하지 말아야할 상황이 생길 수도 있다. --- - name: Prepare Amazon Linux hosts: amazon become: true gather_facts: false tasks: # 컨테이너와 같은 python이 선생적으로 설치 되어있지 않는 것들은 yum, apt말고 comnmand 명령어로 직접 shell 작업을 해줘야한다. # Docs: https://docs.ansib..

DevOps/Ansible 2023.08.04

Ansible Loop

Ansible Loop Loops - Ansible Documentation Loops 반복문에는 3가지의 문법이 존재한다. loop, with_, until 문법이 존재하며, 여기서는 loop와 with_ 문법을 살펴볼 예정입니다. loop 문법은 현재 Ansible 2.5버전에서 나온 최신 문법이다. 해당 문법은 with_을 추후에 완전 대체할 문법입니다. 현재는 완전 대체하지 못하여 공존하고 있지만, 추후에 변경점이 생기지 않게 하기 위해서는 반복문 코드는 loop로 만드는 것을 추천한다. 실습 --- - name: Example hosts: ubuntu become: true vars: tags: Name: "Debug" Environment: "Test" Owner: "posquit0" user..

DevOps/Ansible 2023.08.04

Ansible Variables

Ansible Variables Using Variables - Ansible Documentation Ansible Varialbes 앤서블은 Python을 사용하기 때문에, Python의 예약어 및 ansible의 예약어를 사용하지 못한다. 변수 명 가능한 변수명 불가능한 변수명 foo *foo , python 예약어 foo_env playbook의 예약어(environment) foo_port foo-port, foo port, foo.port foo5, _foo 5foo, 12 변수 사용 형태 ansible.builtin.template: src: foo.cfg.j2 dest: '{{ remote_install_path }}/foo.cfg' 변수의 사용 형태는 {{ 변수 명 }} 으로 사용하면 된..

DevOps/Ansible 2023.08.04

Ansible Handler

Ansible Handler? 이번트를 기반으로 돌아가는 Task를 의미한다. 어떤 식으로 Handler을 사용하는지 알아보려면 우선 코드를 보면 된다. handler를 사용하는 이유는 Nginx와 같은 Web, Was들의 config 파일들을 바꾸고, ansible 명령어를 사용하게 된다면, 이에 대해서 변화가 없다는 것을 알 수 있다. ansible 몇몇 명령어들은 완벽한 멱등성을 제공하지 않으므로, (Nginx start)와 같이 다시 재 랜더링이 되지 않는 부분에 대해서 이벤트를 걸어서 Restart를 하게 해주는 것이 handler의 목적이다. 실습 코드 --- - name: Example hosts: ubuntu become: true tasks: # Docs: https://docs.ansi..

DevOps/Ansible 2023.08.04