전체 글
[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..
[Ansible] Template 주석: ansible_managed
✔️ 템플릿 주석 관습적으로 파일 앞에 주석 붙여놓음 => 경고의 목적 예시 #이 파일은 Ansible에 의해 만들어 졌습니다. #직접 수정하지 마세요. 기법을 사용해서 수정 가능 Ansible managed : Ansible이 관리하고 있는 파일이라는 뜻. 직접 수정하지 않도록 사용자에게 경고를 줌 어떤 값을 넣을지는 사용자가 설정할 수 있음 일반적으로 ansible 설정 파일에 선언 📝ansible.cfg 언제, 어떤 시스템(호스트)에서, 어떤 사용자(uid)에 의해 만들어졌는지 남게됨 [defaults] ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host} 📝templates/port.cnf..
[Ansible] 블록(Block), 태그(Tag)와 작업제어(Step)
📌INDEX 블록(Block) 태그(Tag) 작업 제어(Step) ✔️ 블록(Block) Blocks 블록이란? 여러 작업(task)을 묶어 놓은 그룹 playbook 키워드 블록의 기능 여러 작업에 공통의 키워드를 부여할 수 있음(ex: 조건문) block, rescue, always 블록을 이용해 오류 처리를 할 수 있음 => 자주 사용되지는 X block 블록은 항상 실행 rescue 는 block 블록의 오류가 있을 때만 실행 playbook은 원래 중간에 task가 실패하면 play가 중단됨 실패했을 때, 중단되지 않고 rescue로 넘어감(rescue 실행) 예: 어떠한 작업이 실패할 가능성이 있다고 판단되는 경우 block으로 묶고, 오류를 해결하기 위한 작업을 rescue에 always 는..