연재 시리즈 165

Ansible collection

https://youtu.be/hh3K9if2-2U?si=SHwN7xoInZLHcMja Collection이란? Ansible collection은 나만의 Ansible 컨텐츠(content)를 개발하고 배포할 때 사용되는 배포포맷입니다. 컨텐츠는 playbooks, roles, modules, plugin가 있을 수 있습니다. collection은 커뮤니티 또는 벤더사에서 Ansible을 활용한 로직을 공유할 때 사용됩니다. 예를 들어 Ansible mysql collection에는 Ansible로 mysql을 대상으로 작업하는 수행하는 Ansible 플러그인이 있습니다. collection을 공유하는 사용자는 collection 디렉터리 구조를 준수해야 합니다. Collection 조회 collect..

연재 시리즈 2024.02.04

Ansible 멱등성

https://youtu.be/YtdEtWrw5TI?si=dw8ttmt_mA1HGMwf 1. 멱등성이란? ansible은 사용하는 모듈에 따라 멱등성을 보장합니다. 따라서 ansible이 멱등성을 보장하냐라는 질문의 답은 항상 참이 아닙니다. 멱등성은 여러 번 실행해도 동일한 결과를 얻는다는 의미입니다. 멱등성이 보장되는 모듈은 task 실행 전/후 결과가 같다면 task를 실행하지 않습니다. 2. 멱등성 원리 멱등성 원리는 모듈마다 다릅니다. 따라서 모듈마다 코드를 분석해야 합니다. 파일을 복사하는 copy모듈은 해시를 활용하여 멱등성 검사합니다. 3. 멱등성을 보장하지 않은 예 command 모듈이 멱등성을 보장하지 않는 대표적인 모듈입니다. command 모듈은 명령어를 무조건 실행하기 때문에, 여..

연재 시리즈 2024.01.20

playbook 반복문

1. playbook 반복문이란? Playbook 반복문은 task를 n번 실행합니다. task 반복횟수는 loop필드에 정의한 리스트 인덱스 개수와 일치합니다. 2. 사용방법 예를 들어 아래 “Echo loop” task는 총 3번 실행됩니다. loop에 정의한 리스트 인덱스가 3개이기 때문입니다. - name: Loop hosts: localhost tasks: - name: Echo loop ansible.builtin.debug: msg: "{{ item }}" loop: - 1 - 2 - 3 task가 반복하면서 loop값을 참조하려면 “{{ item }}”을 사용합니다. task 반복횟수에 일치하는 loop 인덱스 값을 참조합니다. 위 예제를 실행하면 아래그림처럼 loop인덱스 순서대로 1,2..

연재 시리즈 2024.01.20

Ansible playbook 파일을 사용하여 변수 정의

사용방법 playbook은 변수를 파일로 정의할 수 있습니다. 파일에 변수를 정의하고 var_files로 파일 변수를 불러오면 됩니다. 아래 예제는 vars.yaml에 변수를 정의하고 playbook에서 vars.yaml에 정의한 변수를 사용합니다. # vars.yaml hello: world alphabets: - a - b - c - name: Variables key value hosts: localhost vars_files: - vars.yaml tasks: - name: Echo vars ansible.builtin.debug: msg: "{{ hello }}" - name: Echo index 0 ansible.builtin.debug: msg: "{{ alphabets[0] }}" - na..

연재 시리즈 2024.01.20

Ansible playbook 변수

1. 변수 정의와 사용 방법 playbook에서 변수 정의는 vars필드로 합니다. - name: Variables hosts: localhost vars: hello: world 그리고 정의한 변수는 “{{ 변수이름 }}”으로 사용합니다. 꼭 쌍따옴표가 있어야 합니다. - name: Variables key value hosts: localhost vars: hello: world tasks: - name: Echo vars ansible.builtin.debug: msg: "{{ hello }}" playbook을 실행하면 변수 값이 잘 출력됩니다. ansible-playbook playbook.yaml 2. 변수 유형 2.1 key-value key-value는 변수이름과 변수 값을 정의하는 유형입..

연재 시리즈 2024.01.20

Ansible playbook 실패 제어

playbook이 중간에 실패하면? playbook은 실행한 taks결과가 실패라면 다음 task를 실행하지 않습니다. 아래 예제에서는 ls명령어로 존재하지 않는 경로를 조회하는 task가 있습니다. - name: Failed Example hosts: localhost tasks: - name: Echo start ansible.builtin.debug: msg: "start" - name: List files ansible.builtin.command: cmd: "ls /tmp/doest_not_exist" - name: Echo end ansible.builtin.debug: msg: "end" ls명령어는 실행을 실패하기 때문에 “Echo end” task는 실행되지 않습니다. 실패해도 계속 실행..

연재 시리즈 2024.01.19

Ansible vault

https://youtu.be/N2wzqgkUYD0 1. Ansible vault란? ansible vault는 ansible실행에 필요한 민감정보를 암호화/복호화합니다. github같은 공개된 코드저장소에 ansible 민감정보를 관리할때 꼭 사용해야 합니다. ansible vault를 사용하면 아래그림 오른쪽처럼 민감정보가 암호화됩니다. 그리고 ansible을 실행할 때 암호화된 값을 복호화합니다. 복호화키는 암호화에 사용한 비밀번호와 동일합니다. 복호화 키는 --ask-vault-pass인자로 전달합니다. ansible-playbook -i inventory playbook.yaml --ask-vault-pass {복호화 키} 2. 사용방법 처음 민감정보 파일을 생성하는 경우 ansible-vaul..

연재 시리즈 2024.01.14