AWX

YAML with AWX : Using Register:

거나미스 2019. 1. 2. 11:28
반응형
  1. Yaml파일 내에서 실행 결과를 저장하여 사용하는 방법
  2. 예약어는 register: 를 사용
    • 위 소스는 doc.tar파일을 각 Node에 doc2.tar로 전송 후 tar를 이용하여 압축을 풀어내는 소스
    • 선행 조건 : 각 Node에 /testdir/doc2 폴더가 생성되어 있어야 함
    • .
    • 위 소스의 12라인 
    •  register: result 문장은 tasks의 copy에 대한 결과를 result에 저장함
    • 14~15라인 : result step 1로 실행 블록 설정
    •  debug: var=result 문장은 result를 var변수에 넣고 debug로 화면에 출력 함
    • 각 결과에 대한 자세한 설명 내용은 
    • Ansible 문서인 https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module 을 참조
    • 위 결과를 확인 하면 각 노드별로 실행에 대한 결과 값이 저장되어 있음
    • 다시 한번 실행 해 보면
    • 처음 실행과 틀린 점은 재 실행시 changed가 false로 변경되며, extract tar의 task가 실행되지 않음
    • .
  3. 핵심 사항
    • 본 문서의 목적은 register:를 활용하는 것
    • ①의 실행 결과를 result에 저장하고
    • ②에서 result.changed로 전달된 값을 비교하여 변경되었다는 리턴값이 들어오면 
    • ③의 task를 실행하게 됨
    • 각 항목을 접근하기 위해서는
    • result.changed, result.checksum... 등으로 c/c++의 구조체나 객체를 접근하는 방식으로 사용하면 됨
    • 위에 제공된 소스는 result.changed == true를 비교하였으나, 좀 더 정확한 내용은 result.failed == false로 사용하는 것을 권장 함
    • .
  4. AWX에 적용 및 실행
    • [WARNING]에 대해서는 추가 분석 필요
    • .
  5. 추가 실습
    • 디렉토리를 생성하는 task의 추가
    • 디렉토리 및 파일 전송이 모두 완료된 경우 tar 압축 해제