⌨️ IaC/Ansible

    [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 는..

    [Ansible] 핸들러(Handler)

    📌INDEX Idempotent(멱등성) 플레이, 작업의 이름(name) 핸들러(Handler) ✔️ Idempotent(멱등성) 명령을 여러번 실행해도 결과가 변하지 않는다는 것 예: start/started => 이미 현재 실행되고 있으면 아무 작업 안함(다시 시작할 필요X) but restarted는 멱등성을 해치는, 바람직하지 않은 방법임 해결방법: 조건문 사용 가능하면 멱등성을 만족하는 방향으로 설계해야함 모든 모듈, 모듈의 파라미터가 멱등성을 만족 하지는 않음 문제가 있는 코드: 24/7 서비스의 경우, 찰나의 순간이지만 서비스가 중단됨 + 세션이 끊어짐 => 실질적인 해결방법이 아님, 멱등성 없는것 - hosts: 192.168.100.11 become: yes #명령어에 -b 옵션 써줄 필..

    [Ansible] 반복문(loop)과 조건문(when)

    📌INDEX 반복문(loop) 리스트(목록) 반복문 사전 반복문 프로세스 관점 조건문(when) ✔️ 반복문(loop) 공식 문서 키워드를 사용 : 키워드 문서 반복은 기본적으로 task 레벨에서 진행함 : play level에서는 불가, (loop)키워드가 있는 레벨 작업(Task)에서 loop, 'with_', 'until'키워드로 반복문 구성 2.5버전부터 loop 추가됨: 글쓴이가 사용하는 건 2.9 loop 지시어에 리스트가 들어가 있음 반드시 이름이 item이어야함 . for i에서 i와 비슷한 것 🔹 리스트(목록) 반복문 loop 대신, with_items, with_list with_items, with_list 리스트를 사용해 다양한 방법으로 활용 가능 - hosts: 192.168.10..

    [Ansible] Playbook으로 WordPress 구성부터 원복까지

    구성과정은 Ad-Hoc으로 WordPress 구성부터 원복까지 와 동일하고, 같은 내용을 playbook(.yaml)으로 작성한 것임 📌INDEX 기본 playbook + revert 과정 vars로 작성 template 사용 ✔️ 기본 Playbook + revert 과정 wordpress.yaml - hosts: wp tasks: - yum: name: https://rpms.remirepo.net/enterprise/remi-release-7.rpm state: present validate_certs: no - yum_repository: name: remi-safe file: remi-safe mirrorlist: http://cdn.remirepo.net/enterprise/7/safe/mir..

    [Ansible] Ad-Hoc으로 WordPress 구성부터 원복까지

    📌INDEX Ad-Hoc으로 WordPress 구성하기 원복하기 ✔️ Ad-Hoc으로 WordPress 구성하기 🐾 들어가기에 앞서.... ansible 모듈을 사용할 때는 요구사항(requirement)를 잘 확인하자 required 파라미터를 잘 확인하자 : 꼭 포함시켜야하는 파라미터 상태(state)는 항상 표시해주는 것이 좋음 1. Inventory 파일 수정하기 (편의를 위해) wp (wordpress) 그룹 생성 [vagrant@controller ~]$ vi inventory.ini [vagrant@controller ~]$ cat inventory.ini 192.168.100.11 192.168.100.12 [wp] 192.168.100.11 2. ~/.ansible.cfg 에 invent..

    [Ansible] Ansible SSH Jump : Public Bastion to Private Instance

    📌INDEX 인스턴스 구성하기 첫번째 방법(ProxyJump) 두번째 방법(Inventory 파일) ✔️ 인스턴스 구성하기 본 실습의 아키텍처(Architecture)는 다음과 같다. Ansible -> Bastion 으로 SSH 접속할 때와, Bastion -> Private Instance로 SSH 접속할 때 다른 키 페어를 사용할 예정이다. 1. Ansible Controller에서 공개키 복사 (편의를 위해) controller에 생성되어있는 공개키 ~/.ssh/id_rsa.pub를 사용 [vagrant@controller ~]$ cat .ssh/id_rsa.pub ...키 내용... 2. AWS에서 [작업] - [키 페어 가져오기] 복사한 키를 붙여넣기 3. Private Subnet 생성 de..

    [Ansible] Ansible 명령어 옵션

    📌INDEX Ansible 옵션 ansible-config 명령 모듈 ad-hoc 명령 ✔️ Ansible 옵션 SSH 접속 옵션 -u REMOTE_USER, --user REMOTE_USER : SSH 접속 계정(기본: 현재 사용자) -k, --ask-pass : 옵션 사용 SSH 패스워드 인증 옵션 사용하지 않으면 --> SSH 키 인증 ansible의 기본 인증 방법: SSH 키 인증 권한 상승 옵션 -b, --become : 권한 상승 옵션 사용하지 않으면 --> 권한상승 하지 않음 --become-method sudo: 기본값 su --become-user : 어떤 사용자? root: 기본값 -K, --ask-become-pass : sudo 패스워드 묻기 옵션 사용하지 않으면 --> Passw..

728x90