0420 Ansible 8

Ada·2022년 4월 21일
0

Playdata-Cloud

목록 보기
12/21

delegate_facts: no or default

위임 대상에게 수집한 facts를 내가 갖는다.

수집한 다른 node facts로 hosts 키워드의 대상 노드의 facts를 덮어씀

delegate_facts: yes

위임 대상에게 수집한 facts를 넘겨줌

태그(tags)

▪ 많은 작업이 있는 플레이북의 경우 플레이북 전체를 실행하는 대신 특정 일부분 만 실행하는
것이 유용할 수 있음
▪ Ansible 태그로 특정 작업만 실행하거나, 특정 작업을 실행하지 않을 수 있음
▪ 태그는 플레이, 블록, 역할, 작업에 설정하고, 플레이북 실행 시 태그를 선택

태그 사용

▪ ansible-playbook 명령의 태그 관련 옵션
--tags all: 모든 작업 실행(기본 옵션)
--tags [tag1, tag2]: tag1 및 tag2 태그가 있는 작업 만 실행
--skip-tags [tag3, tag4]: tag3 및 tag4 태그가 있는 작업 건너뛰기
--tags tagged: 태그가 설정된 작업 만 실행
--tags untagged: 태그가 없는 작업 만 실행

태그 작업 미리보기

▪ ansible-playbook 명령의 태그 및 작업 관련 미리보기 옵션
--list-tags: 사용 가능한 태그 목록 확인
--list-tasks: --tags 및 --skip-tags 옵션과 함께 사용시 관련 작업 목록 확인

아티팩트

• Ansible 플레이북 작성 시 하나의 매우 큰 파일에 플레이 및 작업을 작성할 수 있음
• 단일 플레이북의 복잡한 작업을 다른 파일로 나누어 작업 집합으로 구성할 수 있음
• 더 작고 분산된 아티팩트를 통해 변수, 작업 및 플레이를 여러 플레이북에서 재사용
가능
• 재사용 가능한 아티팩트:

  • 변수 파일
  • 작업 파일
  • 플레이북 파일
  • 역할

변수 재사용

[플레이북에서 변수 재사용]

▪ 플레이북에서 vars_files 키워드 및 include_vars 모듈을 사용하여 외부 변수 파일을
가져올 수 있음

▪ vars_files 키워드

  • 플레이 안에서 변수 파일을 불러와서 참조함

▪ include_vars 모듈

  • tasks 영역에서 변수 파일을 불러와서 참조함

[인벤토리 / 플레이북 디렉토리에서 변수 재사용]

▪ Ansible Automation Engine은 인벤토리 또는 플레이북 파일이 있는 디렉토리에서 group_vars/
또는 host_vars 디렉토리의 YAML 형식의 변수 파일을 가져올 수 있음
▪ 별도로 플레이북 키워드나 모듈을 사용하지 않아도 Ansible Automation Engine이 group_vars/
또는 host_vars/ 디렉토리가 있으면 읽어 들임

  • 그룹 변수: group_vars/ 디렉토리
  • 호스트 변수: host_vars/ 디렉토리

작업 재사용

• 플레이북, 플레이, 작업 일부, 변수를 재사용하기 위해 include* 및 import 모듈을
사용할 수 있음
▪ include_
모듈

  • include_* 모듈의 주요 용도는 반복문에서 사용하는 것
  • include_* 모듈과 반복문을 함께 사용하면 포함된 작업이 루프의 각 항목에 대해 한 번씩 실행

▪ import 모듈

  • import_* 관련 모듈은 플레이북, 역할, 작업을 가져올 수 있으며 정적으로 플레이북에 추가
  • import_*에 의해 가져온 작업은 사전 처리되어 정적으로 추가되기 때문에 이전 작업의 결과에 영향을 받지
    않음

[ include vs import ]

▪ 처리 시점

  • include: 해당 모듈 실행 시점에 읽고 실행
  • import: 플레이북 파싱 시점에 전처리
    ▪ 작업 옵션: 플레이북 작업 관련 키워드 사용 가능 여부
  • include: include_tasks 모듈에서 만 사용 가능
  • import: 모든 import_* 모듈에서 사용 가능
    ▪ 핸들러 알림: 외부 파일에서 가져온 핸들러 작업 알림
  • include: 외부 파일 내의 작업 이름으로 호출 안됨(include 모듈의 작업이름으로 호출)
  • import: 외부 파일 내의 작업 이름으로 호출 가능
    ▪ 플레이북 전체 포함
  • include: include_playbook 모듈 없음
  • import: import_playbook 모듈 사용
    ▪ 변수 파일 포함
  • include: include_vars 모듈 사용
  • import: import_vars 모듈 없음(대신 vars_files 사용)
profile
백엔드 프로그래머

0개의 댓글