[Ansible] 태그 (Tag)DevOps/Ansible2022. 4. 20. 22:10
Table of Contents
728x90
✔️ 태그 (Tag)
작업에 태그를 부여하고, 특정 태그의 작업만 실행할 수 있다.
- all 태그 : 모든 작업이 속한다.
- untagged 태그 : 태그가 설정되어 있지 않는 작업이 속함
일반적으로 개발자들은 자신이 맡은 일부를 local에서 개발하고 개발 통합 서버에서 통합하며
개발 단계는 다음의 순서로 진행된다.
로컬에서 작업 테스트 → 통합 개발 서버에 올린 후 통합 테스트 → QA 팀에서 시스템 구축 후 테스트 → 실제 개발 서버와 구성을 똑같이 맞춰놓고 Staging에서 테스트 → 실제 서비스 운영 서버에 릴리즈
staging 단계와 production 단계는 시스템 구성의 거의 유사한데, 둘을 구별할 때 tag를 사용하면 효율적이다.
예시
tasks:
- name: Install the servers
ansible.builtin.yum:
name:
- httpd
- memcached
state: present
tags: # keyword
- packages
- webservers
- name: Configure the service
ansible.builtin.template:
src: templates/src.j2
dest: /etc/foo.conf
tags: # keyword
- configuration
특정 tag만 실행할 수 있다.
- 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"
ansible-playbook test.yaml --tags=stage, prod, all
기본적으로 모든 task는 all이라는 tag에 속해있다고 볼 수 있다.
tags 옵션에 all을 지정하면 playbook 내의 모든 tag 작업이 실행된다.
[vagrant@controller 06_tags]$ ansible-playbook test.yaml --tags=all
PLAY [192.168.100.11] ***********************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **********************************************************************************************************************************************************************************************************************************************
ok: [192.168.100.11]
TASK [debug] ********************************************************************************************************************************************************************************************************************************************************
ok: [192.168.100.11] => {
"msg": "web server stage"
}
TASK [debug] ********************************************************************************************************************************************************************************************************************************************************
ok: [192.168.100.11] => {
"msg": "web server product"
}
TASK [debug] ********************************************************************************************************************************************************************************************************************************************************
ok: [192.168.100.11] => {
"msg": "web server all"
}
PLAY RECAP **********************************************************************************************************************************************************************************************************************************************************
192.168.100.11 : ok=4 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
[vagrant@controller 06_tags]$
다시 말하면 환경이나 구분에 따른 작업을 해야한다면 tag를 사용한다.
- name: play1
hosts: 192.168.100.11
gather_facts: no
tasks:
- name: task1
debug:
msg: "web server stage"
tags:
- stage
- name: task2
debug:
msg: "web server stage"
tags:
- prod
- name: task3
debug:
msg: "web server all"
✔️ 태그 관련 확인
[vagrant@controller 06_tags]$ ansible-playbook test.yaml --list-tasks
playbook: test.yaml
play #1 (192.168.100.11): play1 TAGS: []
tasks:
task1 TAGS: [stage]
task2 TAGS: [prod]
debug TAGS: []
[vagrant@controller 06_tags]$ ansible-playbook test.yaml --list-tags
playbook: test.yaml
play #1 (192.168.100.11): play1 TAGS: []
TASK TAGS: [prod, stage]
728x90
'DevOps > Ansible' 카테고리의 다른 글
[Ansible] artifact 재사용 - 파일 재사용 (1) (0) | 2022.04.20 |
---|---|
[Ansible] 작업 제어 (Task Controll) (0) | 2022.04.20 |
[Ansible] 블록 (Block) (0) | 2022.04.20 |
[Ansible] 핸들러 (Handler) (0) | 2022.04.20 |
[Ansible] 조건문(Conditionals) (0) | 2022.04.19 |
@TTOII :: 뭉게뭉게 클라우드
영차영차 성장 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!