ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Ansible 101] 앤서블 블록 및 오류처리
    IT/Ansible 2024. 1. 21. 08:34
    728x90

     

    앤서블은 블록 block이라는 오류를 제어하는 문법을 제공합니다.

     

    블록은 작업을 논리적으로 그룹화하는 절입니다.

    이를 통해 작업 실행 방법을 제어에 사용할 수 있습니다.

    블록을 통해 rescue 문과 always 문을 함께 사용함으로써 오류를 처리할 수 있습니다.

     

     

     

    • block : 실행할 기본 작업을 정의함
    • rescure : block 절에 정의된 작업이 실패할 경우 실행할 작업을 정의함
    • always : block 및 rescue 절에 정의된 작업의 성공 또는 실패 여부와 관계없이 항상 실행되는 작업을 정의함

    1) 플레이북 생성

    ---
    - hosts: tnode2
      vars:
        logdir: /var/log/daily_log
        logfile: todays.log
    
      tasks:
        - name: Configure Log Env
          block:
            - name: Find Directory
              ansible.builtin.find:
                paths: "{{ logdir }}"
              register: result
              failed_when: "'Not all paths' in result.msg"
    
          rescue:
            - name: Make Directory when Not found Directory
              ansible.builtin.file:
                path: "{{ logdir }}"
                state: directory
                mode: '0755'
    
          always:
            - name: Create File
              ansible.builtin.file:
                path: "{{ logdir }}/{{ logfile }}"
                state: touch
                mode: '0644'

     

    2) 실행

    ansible-playbook block-example.yml

     

    먼저 실행해보면, 다음과 같이 출력되는 것을 알 수 있습니다.

    Find Directory 태스크에서 logdir 디렉터리가 존재하지 않으면 실패하고, rescue 섹션이 실행되도록 명시되어 있는데,

    첫 번째 실행시에는 해당 파일을 찾을 수 없습니다. 

     

    따라서 rescue로 이동하였습니다.

    always 구문은 실패에 상관없이 실행되었습니다.

     

    다음의 명령어를 통해서 Ansible의 shell 모듈을 사용하여 tnode2 호스트에서 ls -l /var/log/daily_log/ 명령을 실행합니다.

    ansible -m shell -a "ls -l /var/log/daily_log/" tnode2

     

     

     

    다시금 플레이북을 실행해 보면, 다음과 같이 동작하는 것을 볼 수 있습니다.

     

    감사합니다.

    728x90
    반응형

    'IT > Ansible' 카테고리의 다른 글

    [Ansible 101] 사용자 계정 생성하기  (0) 2024.02.04
    [Ansible 101] 2주차 도전과제  (0) 2024.01.21
    [Ansible 101] 핸들러 및 작업 실패 처리  (0) 2024.01.21
    [Ansible 101] 조건문  (0) 2024.01.21
    [Ansible 101] 반복문  (2) 2024.01.21
Designed by Tistory.