본문 바로가기

리눅스

[draft] Ansible Playbook에서 register와 debug 모듈 사용하는 방법

Ansible Playbook에서 register와 debug 모듈 사용하는 방법

Ansible Playbook에서는 작업(Task)의 실행 결과를 변수에 저장하고 이후 작업에서 활용할 수 있다.

  • register : 작업(Task)의 실행 결과를 변수에 저장
  • debug : 변수의 값을 출력하여 확인

1. 기본 사용 방법

register

register 키워드는 특정 작업의 실행 결과를 변수에 저장한다.

register: result_variable

저장되는 주요 값 예시

  • stdout : 명령 실행 결과 문자열
  • stdout_lines : 결과를 줄 단위 리스트로 분리
  • stderr : 오류 메시지
  • rc : Return code
  • changed : 작업 변경 여부

debug

debug 모듈은 변수 값을 출력할 때 사용한다.

debug:
  var: result_variable

또는 특정 필드 출력

debug:
  var: result_variable.stdout

2. Playbook 예제

Playbook 작성

vim example1.yml
---
- name: 예제 플레이북
  hosts: all
  gather_facts: true

  tasks:

    - name: 명령 실행 후 결과 저장
      ansible.builtin.command: echo "Hello, World!"
      register: command_result

    - name: 명령 실행 결과 출력
      ansible.builtin.debug:
        var: command_result.stdout

    - name: /tmp 디렉토리 목록 확인
      ansible.builtin.command: ls /tmp
      register: ls_result

    - name: /tmp 디렉토리 목록 출력
      ansible.builtin.debug:
        var: ls_result.stdout_lines

    - name: 현재 날짜 및 시간 확인
      ansible.builtin.shell: date +%Y-%m-%dT%H:%M:%SZ
      register: current_date_time

    - name: 현재 날짜 및 시간 결과 출력
      ansible.builtin.debug:
        var: current_date_time

###
# ansible-playbook -i inventory/hosts.ini ansible_learn/example1.yml --limit localhost

3. Playbook 실행

실행 명령어

ansible-playbook -i inventory/hosts.ini ansible_learn/example1.yml --limit localhost
  • -i : 인벤토리 파일 지정
  • --limit : 특정 호스트만 실행

ansible-playbook

4. register 변수 구조 예시

current_date_time:
  changed: true
  cmd: "date +%Y-%m-%dT%H:%M:%SZ"
  rc: 0
  stdout: "2026-03-08T12:00:00Z"
  stdout_lines:
    - "2026-03-08T12:00:00Z"
  • stdout : 명령 실행 결과
  • stdout_lines : 결과를 리스트 형태로 분리
  • rc : 명령 실행 결과 코드
  • changed : 작업 상태

5. 실무 활용 예시

register는 다음과 같은 상황에서 자주 사용된다.

 

서비스 상태 확인

- name: nginx 상태 확인
  command: systemctl is-active nginx
  register: nginx_status

조건 실행

- name: nginx 재시작
  service:
    name: nginx
    state: restarted
  when: nginx_status.stdout != "active"

6. 실무 팁

전체 변수 구조 확인

  • 처음에는 전체 변수를 출력해서 구조를 확인하는 것이 좋다.
debug:
  var: result_variable

특정 값만 출력

  • 필요한 값만 출력
debug:
  var: result_variable.stdout

리스트 출력

debug:
  var: result_variable.stdout_lines

 

참고URL

- Ansible Documentation : ansible.builtin.debug module

- Ansible Documentation : register variable