연재 시리즈

Ansible 멱등성

악분 2024. 1. 20. 17:50
반응형

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