반응형
https://youtu.be/YtdEtWrw5TI?si=dw8ttmt_mA1HGMwf
1. 멱등성이란?
ansible은 사용하는 모듈에 따라 멱등성을 보장합니다. 따라서 ansible이 멱등성을 보장하냐라는 질문의 답은 항상 참이 아닙니다.
멱등성은 여러 번 실행해도 동일한 결과를 얻는다는 의미입니다. 멱등성이 보장되는 모듈은 task 실행 전/후 결과가 같다면 task를 실행하지 않습니다.
2. 멱등성 원리
멱등성 원리는 모듈마다 다릅니다. 따라서 모듈마다 코드를 분석해야 합니다. 파일을 복사하는 copy모듈은 해시를 활용하여 멱등성 검사합니다.
3. 멱등성을 보장하지 않은 예
command 모듈이 멱등성을 보장하지 않는 대표적인 모듈입니다. command 모듈은 명령어를 무조건 실행하기 때문에, 여러 번 command모듈을 실행하면 결과가 달라질 수 있습니다. command모듈은 항상 ansible 실행 결과가 changed로 나옵니다.
- name: Example
hosts: debian
tasks:
- name: Install curl (non-idempotent)
ansible.builtin.command: apt install -y curl
4. command모듈을 멱등성을 보장하려면?
2번 예제에서 멱등성을 보장하려면 apt 모듈을 사용해야 합니다. apt 모듈은 이미 패키지가 설치되어 있다면 task를 실행하지 않습니다
- name: Example
hosts: debian
tasks:
- name: Ensure curl is installed
ansible.builtin.apt:
name: curl
state: present
5. 모듈이 멱등성이 보장되지 않는지 어떻게 미리 알 수 있을까?
멱등성이 보장되지 않는 모듈은 ansible-lint로 쉽게 확인 가능합니다. 멱등성이 보장되지 않은 모듈은 ansible-lint에서 syntax에러를 발생시킵니다.
반응형
'연재 시리즈' 카테고리의 다른 글
Ansible collection (0) | 2024.02.04 |
---|---|
playbook 반복문 (0) | 2024.01.20 |
Ansible playbook task 결과를 변수로 저장 (0) | 2024.01.20 |
Ansible playbook 파일을 사용하여 변수 정의 (0) | 2024.01.20 |
Ansible playbook 변수 (0) | 2024.01.20 |