nayoungs
항상 끈기있게
nayoungs
  • 분류 전체보기 (274)
    • Cloud (21)
      • AWS (15)
      • Azure (3)
      • NCP (2)
      • GCP (1)
    • DevOps (68)
      • Docker (16)
      • Kubernetes (50)
      • CICD (2)
    • IaC (25)
      • Ansible (17)
      • Terraform (8)
    • Certification (4)
    • 금융 IT (5)
    • AI (3)
    • Linux (47)
    • 미들웨어 (5)
    • Programming (7)
      • GoLang (3)
      • Spring (4)
    • CS (25)
      • 네트워크 (17)
      • 운영체제 (5)
      • Web (1)
      • 개발 상식 (2)
      • 데이터베이스 (0)
    • Algorithm (59)
      • 프로그래머스 (36)
      • 백준 (18)
      • 알고리즘 정리 (5)
    • ETC (5)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
nayoungs

항상 끈기있게

IaC/Ansible

[Ansible] 블록(Block), 태그(Tag)와 작업제어(Step)

2022. 4. 19. 00:59
728x90

📌INDEX

  • 블록(Block)
  • 태그(Tag)
  • 작업 제어(Step)



✔️ 블록(Block)

  • Blocks
  • 블록이란? 여러 작업(task)을 묶어 놓은 그룹
    • playbook 키워드
  • 블록의 기능
  1. 여러 작업에 공통의 키워드를 부여할 수 있음(ex: 조건문)
  2. block, rescue, always 블록을 이용해 오류 처리를 할 수 있음 => 자주 사용되지는 X
  • block 블록은 항상 실행
  • rescue 는 block 블록의 오류가 있을 때만 실행
    • playbook은 원래 중간에 task가 실패하면 play가 중단됨
    • 실패했을 때, 중단되지 않고 rescue로 넘어감(rescue 실행)
    • 예: 어떠한 작업이 실패할 가능성이 있다고 판단되는 경우 block으로 묶고, 오류를 해결하기 위한 작업을 rescue에
  • always 는 항상 실행
    • 실패와 상관없이 항상 실행
- hosts: 192.168.100.11

  tasks:
    - block:
        - debug:
            msg: hello world
        - command: /usr/bin/false #항상 실패
        - debug:
            msg: hello world2

      rescue:
        - debug:
            msg: It's rescue

      always:
        - debug:
            msg: It's Always

 

참고) ignore_errors 

  • 기본적으로 값은 block
  • 오류가 발생할 수 있다고 판단되고, 오류가 발생하더라도 후속작업을 해야하는 경우 유용
  • 특정 작업에서 오류를 처리 가능
- hosts: 192.168.100.11

  tasks:
    - block:
        - debug:
            msg: hello world
        - command: /usr/bin/false #항상 실패
        - debug:
            msg: hello world2
      ignore_errors: yes #msg와 같은 level에 작성하는 것도 가능

      rescue:
        - debug:
            msg: It's rescue

      always:
        - debug:
            msg: It's Always



✔️ 태그(Tag)

  • Tags
  • 아주 큰 playbook을 작성할 때 사용
  • 작업에 태그를 부여하고, 특정 태그의 작업만 실행할 수 있음
- hosts: 192.168.100.11
  gather_facts: no

  tasks:
    - debug:
        msg: "web server stage"
      tags:
        - stage
    - debug:
        msg: "web server product"
      tags:
        - prod
    - debug:
        msg: "web server all"
  • 태그 종류
    • all 태그: 모든 작업이 속함(태그가 없는 것 까지 실행)
    • untagged 태그: 태그가 설정되어 있지 않는 작업 속함
ansible-playbook test.yaml --tags=all
ansible-playbook test.yaml --tags=stage,prod
  • 태그 관련 확인 옵션
ansible-playbook test.yaml --list-tasks
ansible-playbook test.yaml --list-tags



✔️ 작업 제어(Step)

디버깅할 때 많이 사용

step

  • 하나씩 실행해가면서 확인해볼 수 있음
ansible-playbook test.yaml --step

특정 작업 부터 시작

  • 이름(name)을 부여하여 특정 작업을 실행
ansible-playbook test.yaml --start-at-task="task3"
ansible-playbook test.yaml --start-at-task="task3" --step
ansible-playbook test.yaml --start-at-task="task3" --limit 192.168.100.12

 

 

728x90
저작자표시 (새창열림)
    'IaC/Ansible' 카테고리의 다른 글
    • [Ansible] Artifact 재사용 : 변수 파일, 인벤토리 변수, include/import
    • [Ansible] Template 주석: ansible_managed
    • [Ansible] 핸들러(Handler)
    • [Ansible] 반복문(loop)과 조건문(when)
    nayoungs
    nayoungs
    안되면 될 때까지

    티스토리툴바