네트워크/네트워크 가상화, 자동화

Ansible Tags

2023. 10. 10. 18:08
목차
  1. Tags?
  2. skip-tags
  3. always or never
728x90

Tags?

만약 플레이북이 너무 커진다면 플레이북 안에서 특정 플레이만 실행하고 나머지는 실행하지 않고 싶을 수 있다. 이때 이를 가능하게 해주는 것이 ansible tag이다. 이는 개별 task에 다르게 설정할 수 있고 여러 태스크에 동일한 tag를 설정할 수도 있다.

 

tasks:
- name:
  ping:
  tags: 
    - ping_hosts 

 

기본적으로 위의 형식으로 적게된다. 

예시를 위해 known_hosts를 등록하는 task와 ping task를 한 play에 적고 tag를 지정해주었다.

ansible-playbook [playbook file] --list-tags

위 코드는 플레이북에 작성된 태그를 리스트화 해준다.

또한 아래 명령어를 통해 해당 태그가 어떤 task에 할당되어 있는지도 확인할 수 있다. 

ansible-playbook [playbook file] --tags "[tag1],[tag2]" --list-tasks

 

위와 같이 플레이북에 존재하는 tag들을 보여준다. 이렇게 tag로 분할된 task를 실행하는 방법은 -t 또는 —tags를 이용하면된다.

 

ansible-playbook -v [playbook file] -i [inventory file] -t tag

위와 같이 말이다. 아래의 사진을 보면 known_hosts로 지정된 task외에는 실행되지 않은 것을 볼 수 있다. tag가 없는 플레이북에서는 핑 모듈도 같이 실행됐을텐데 말이다. 

하나 더,, 여러개의 태그를 지정하고 싶다면 아래의 코드 처럼 작성하면 된다. 

ansible-playbook [playbook file] -i [inventory file] --tags "[task1],[task2]"

 

skip-tags

앞에서는 tag를 이용하여 특정 task만 실행했다면 tag를 이용하여 특정 task 이외의 task들이 실행되도록 지정할 수도 있다.

ansible-playbook [playbook file] -i [inventory file] --skip-tags [tag]

knwon_hosts 태그를 무시하도록 설정했는데 정상적으로 무시하고 ping 모듈만 실행한 모습을 볼 수 있다.

 

always or never

어떤 상황이 생기더라도 항상 무조건 실행되어야 하는 task들이 있다. 예를 들어 패키지를 설치하는 task라고 했을 때 패키지 설치 전 apt update가 무조건 필요하다. 이럴 때 다른 태그를 지정하더라도 always 태그가 지정된 task는 항상 실행되도록 설정할 수 있다.

플레이북 안에 하위 태스크로 apt update를 실행하는 task를 추가한다.

- name: generally apt updates
  apt: 
    update_cache: yes
  tags: 
    - always

 

이번엔 ping_hosts 태그만 실행되도록 명령어를 구성하여 실행했는데 always 태그가 작동하여 함께 실행되는 것을 확인할 수 있다. 물론 always 태그도 skip-tags를 이용하여 무시할 수 있다.

 

반면에 always가 항상 실행되도록 한다면 nerver는 태그를 지정하지 않는다면 절대 실행되지 않는 설정이다. 현재 플레이북에서 아래와 같이 known_hosts task와 apt update task를 never로 설정했다.

- hosts: all
  connection: local
  serial: 1
  gather_facts: no

  tasks:
  - command: /usr/bin/ssh-keyscan -t ecdsa {{ ansible_host }}
    register: keyscan
    tags:
      - known_hosts
      - never
  - lineinfile:
      name=~/.ssh/known_hosts
      create=yes
      line={{ item }}
    with_items:
      - "{{ keyscan.stdout_lines }}"
    tags:
      - known_hosts
      - never
  - name: ping pong to know what is alive server
    ping:
    tags:
      - ping_hosts
  - name: generally apt updates
    apt:
      update_cache: yes
    tags:
      - update_hosts
      - never

이론대로라면 실행 시 ping task만 실행되어야 한다.

 

일반 전역 실행 명령어로 실행했을 때 ping task 이외의 never로 설정된 모든 task가 실행되지 않은 것을 확인할 수 있다. 이 때 never로 설정된 task의 태그를 직접 지정해줬을 때 실행되는지 확인해보도록 하겠다.

 

정상적으로 실행되는 것을 확인할 수 있다. 

저작자표시 (새창열림)

'네트워크 > 네트워크 가상화, 자동화' 카테고리의 다른 글

Anycast Gateway  (1) 2024.04.29
Ansible facts  (0) 2023.09.13
Ansible known hosts 자동 등록 & 무시 방법  (0) 2023.09.12
Ansible Overview(config, inventory, dynamic inventory, playbook)  (0) 2023.09.11
  1. Tags?
  2. skip-tags
  3. always or never
'네트워크/네트워크 가상화, 자동화' 카테고리의 다른 글
  • Anycast Gateway
  • Ansible facts
  • Ansible known hosts 자동 등록 & 무시 방법
  • Ansible Overview(config, inventory, dynamic inventory, playbook)
코춘대길
코춘대길
우리의 인생은 우리가 노력한 만큼 가치가 있다. 2021~2023 고등학생, 2024 ~ Technical Architect 2025~2027 육군정보보호병
코춘대길
무지성 컴퓨터 성장일기
코춘대길
전체
오늘
어제
  • 분류 전체보기 (164)
    • 수상 실적 (8)
    • 네트워크 (133)
      • 보안 (3)
      • 서버 (20)
      • 클라우드 컴퓨팅 (25)
      • 네트워크 일반 (76)
      • 무선 네트워크 (3)
      • 네트워크 가상화, 자동화 (5)
      • 통신 설비 (0)
    • 정보보안산업기사 (0)
    • 시스템 (5)
    • Web (6)
    • C,C++ (8)
    • 사무 (2)
      • 엑셀,파워포인트 (2)
    • 일상 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 컨테이너
  • CISCO
  • System manager
  • vmnet
  • alb
  • 실장비
  • 실장비 초기화
  • AWS
  • 컨테이너 오케스트레이션 툴
  • 토폴로지
  • 실행주기
  • 개어려움
  • 클라우드 컴퓨팅
  • 도커
  • Session Manager
  • syn flooding
  • 네트워크 보안
  • 동적라우팅
  • cisco nat
  • flooding

최근 댓글

최근 글

hELLO · Designed By 정상우.
코춘대길
Ansible Tags
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.