⌨️ IaC

    [Terraform] Terraform Cloud

    📌INDEX 백엔드(Backend) Terraform Cloud ✔️ 백엔드(Backend) 현재 사용하고 있는 백엔드: Local Backend s3에 상태를 저장하고 공유 : s3, dynamo DB 를 이용한 원격 백엔드 예시 terraform { backend "s3" { bucket = "mybucket" key = "path/to/my/key" region = "us-east-1" } } 동시에 접근하는 것을 방지하기 위해 locking 사용하며, s3는 잠금 기능이 없기 때문에 dynamodb를 사용하여 locking한다. { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", ..

    [Terraform] 데이터 소스(Data Source)

    Data Source: aws_ami 프로바이더에서 정보를 가져오는 것을 모두 데이터 소스라한다. data 블록에 작성하며, 리소스와 정의하는 방법은 동일하다. owner 필수(required) 필터(filter)를 걸어서 검색 다음과 같이 Data Sources를 확인할 수 있다. 참고) ubuntu image 검색 사이트 💻 실습: aws_ami data source로 ami 생성하기 📝 data_source.tf data "aws_ami" "ubuntu_image" { owners = ["099720109477"] most_recent = true #가장 최신 버전을 사용할 것인가 filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-*-a..

    [Terraform] Count 반복문 (with length function)

    count Meta-Argument count는 resource에서만 사용 가능 count는 resource의 가장 처음에 적는 것이 관습 0부터 시작하는 count.index를 참조하여 사용 예시 : count에 값에 정수인 인수가 포함된 경우 Terraform은 그만큼의 인스턴스를 생성한다. resource "aws_instance" "server" { count = 4 # create four similar EC2 instances ami = "ami-a1b2c3d4" instance_type = "t2.micro" tags = { Name = "Server ${count.index}" } } 📝main.tf : eip에서 instance에 count.index를 통해 참조한다. resource "..

    [Terraform] 모듈(Module)

    ✔️ 모듈(Module)이란? Module Terraform AWS Module Github 저장소 ansible에서의 역할(role)과 비슷하며, 자주 사용하는 리소스들을 모아둔 컨테이너이다. 모듈의 종류 root 모듈 : 기본 작업 디렉터리의 파일에 정의된 리소스 child 모듈 : 모듈에 의해 호출된 모듈 모듈 초기화 초기화해야 모듈이 다운로드 된다. terraform init 예시 module "myvpc" { source = ...입력 변수... } resource "aws_instance" "web" { subnet_id = module.myvpc. } 💻 AWS VPC 모듈 사용해보기 여기에 이어서 작성한다. 모듈을 사용할 때는 output 변수 이름 잘 확인해야 한다❕ : aws vpc m..

    [Terraform] Provisioners (feat.Taint)

    📌INDEX Provisioners Provisioner 연결 실습해보기 Taint란? Ansible 실행 방법 ✔️ Provisioners Provisioners는 terraform에서 제공하는 공통 argument이다. "Provisioners are a Last Resort " : 최후의 수단이라는 뜻으로, 되도록 user-data를 사용하는 것을 권장한다. ☁️ 참고 user_data를 먼저 실행할 지 provisioner를 먼저 실행할 지 결정할 수 있는 방법은 없고, provisioner는 순서대로 실행된다. Provisioner 종류 file: 파일 복사 새로 생성된 리소스로 파일 또는 디렉토리를 복사하는 데 사용한다. resource "aws_instance" "web" { # ... # ..

    [Terraform] 사용자 데이터(Userdata)와 보안그룹(Security Group)

    📌INDEX 사용자-데이터(Userdata) security_group ✔️ 사용자 데이터(Userdata) AWS EC2 인스턴스 생성시 작성하는 userdata와 동일하다. 예시 1) 인스턴스 resource 내에 작성하기 user_data = d > c > EOF 꼭 EOF일 필요는 X [vagrant@controller 01]$ cat a > b > c > ABC 참고) output으로 확인되는 elastic_ip와 ec2 public ip는 왜 다를까? Outputs: app_server_elastic_ip = "3.35.59.108" app_server_public_ip = "3.38.93.53" 출력된 ec2 public ip는 인스턴스가 생성될 때의 ip이고, 탄력적 ip를 할당받으면서 기..

    [Terraform] 출력값(Output)과 로컬값(Local)

    📌INDEX 출력 값(Output) 로컬 값(Local) ✔️ 출력 값(Output) Output Values 원하는 값을 쉽게 얻기 위해 사용하며, 출력 값은 output 블록을 사용하여 선언해야 한다. 📝output.tf output "app_server_elastic_ip" { value = aws_eip.app_server_eip.public_ip } output "app_server_public_ip" { value = aws_instance.app_server.public_ip } 명령어를 통해 output 목록을 확인할 수 있다. terraform output apply 후 마지막에 output을 확인할 수 있다. Apply complete! Resources: 0 added, 0 chang..

    [Terraform] Terraform 개요 및 설치

    📌INDEX Terraform이란? Terraform 설치 Terraform 구성 파일 Terraform 실행 순서 Terraform 입력 변수 실습해보기 ✔️ Terraform이란? hashicorp/terraform: Terraform 깃허브 저장소 What is Terraform? terraform은 배포를 위한 것 => 새로운 것을 만들어내는 것 , 라이프사이클(변경, 삭제, 생성 등) 담당 ansible은 새로운 것을 만들어내는 것이 아닌 주로 구성을 관리하기 위한 것 terraform은 IaC(Infrastructure as Code) 도구 provider를 통해 액세스 가능한 API를 통해 거의 모든 플랫폼 또는 서비스와 함께 작동할 수 있음 HCL(Hashicorp Configuration..

    [Ansible] AWX

    📌INDEX AWX란? AWX설치 AWX 리소스 생성 ✔️ AWX란? AWX 는 Ansible 프로젝트 관리를 위한 웹 기반 사용자 인터페이스, REST API 및 Task 엔진 제공하는 툴 목적: 실행 / 모니터링 Red Hat Ansible Automation Platform 프로젝트 중에 하나 이며, 오픈소스로 제공 : ansible/awx 18버전 부터는 쿠버네티스로만 설치가능 따라서 도커로 설치가 가능한 17버전으로 진행 AWX: RedHat Ansible Tower 제품의 Upstream upstream이란? 간단하게 말해 무엇으로 만들어진 것인지 참고 CentOS --up--> RHEL --up--> Fedora RHEL --> CentOS Stream --> Fedora Ansible To..

    [Ansible] Ansible Vault

    📌INDEX Ansible Vault란? ansible-vault 명령 vault password file 멀티 패스워드 ✔️ Ansible Vault란? 데이터를 안전하게 보관하기 위한 기술(암호화) 파일, 일부 텍스트를 암호화 파일 수준 플레이북 변수 파일(group_vars, host_vars 등) include/import 작업 파일 텍스트 수준 변수의 값 Vault Password : AES(대칭키) 알고리즘 사용 단일 패스워드 --ask-vault-pass --vault-password-file 멀티 패스워드 --vault-id ✔️ ansible-vault 명령 ansible-vault SUB-COMMAND create: 암호화될 빈 파일 생성 decrypt: 암호화된 파일 복호화 edit:..

    [Ansible] 역할(Role)

    📌INDEX 역할(Role) 실습 ansible-galaxy ✔️ 역할(Role) Roles 통합(통일)된 플레이북을 만들기위한 통일화된 구조 : 역할 생성 --> 통합 --> 플레이북 roles디렉토리 사용 mkdir roles 구조화된 형식을 자동으로 만들어주는 명령어 : ansible-galaxy init 직접 mkdir로 만들어도 상관없으나, 이름은 정해져있음 ansible-galaxy init [역할이름] --init-path [역할 디렉토리 위치] 예시 ansible-galaxy init common --init-path roles tree명령어로 구조 확인 . └── roles └── common ├── defaults │ └── main.yml ├── files ├── handlers │ ..

    [Ansible] Artifact 재사용 : 변수 파일, 인벤토리 변수, include/import

    📌INDEX Artifact란? 변수 파일 인벤토리 변수 작업 재사용: import vs. include ✔️ Artifact란? Artefact, Artifact: 인공물 애플리케이션이 작동해서 생성한 데이터 사람이 직접 작성한 코드 파일을 용도별로 구분을 해서 재사용하기 위함 Ansible에서 재사용할 수 있는 분야 변수 파일 작업 파일 플레이/플레이북 파일 역할(Role) ✔️ 변수 파일 vars_files 모듈이 아닌, 플레이의 키워드 변수를 playbook에 직접지정하는 것이 아니라, 별도의 파일에 지정하는 것 vars_files의 값으로 기본적으로 리스트를 받음 - hosts: x vars_files: - vars/a.yaml tasks: ... include_vars 모듈 변수를 YAML/J..

728x90