검색결과 리스트
yaml에 해당되는 글 12건
- 2019.01.02 YAML with AWX : Debug for ansible_facts
- 2019.01.02 YAML with AWX : Absolute Path for FILE COPY . is it a BUG?
- 2019.01.02 AWX 실습 #06_Yaml 파일 생성
글
YAML with AWX : Debug for ansible_facts
카테고리 없음
2019. 1. 2. 11:19
반응형
- Yaml에서 ansible_facts를 사용하기 위해 어떤 것들이 지원되는지 알아보기 위한 샘플 코드
- #debugtest.yml 파일 생성
---
- name: debug Test
hosts: all
tasks:
- name: debug testing
shell: echo "debug test"
- debug: var=ansible_facts- 들여쓰기 등 주의
- 아래 이미지와 같이 생성 후 저장
- #ansible-playbook -i hosts.inv debugtest.yml
- 중간 생략
- -
- Yaml에서 ['os_family']를 확인할 경우
tasks: - shell: echo "only on Red Hat 6, derivatives, and later" when: ansible_facts['os_family'] == "RedHat" and ansible_facts['lsb']['major_release']|int >= 6
의 형태로 사용 가능
- 자세한 내용을 알고 싶을 경우 stdout을 파일로 받아서 확인
- #ansible-playbook -i hosts.inv debugtest.yml > out.txt
- #cat out.txt
- -
- 목표
- ansible_fact에서 사용가능한 종류 확인
글
YAML with AWX : Absolute Path for FILE COPY . is it a BUG?
AWX
2019. 1. 2. 11:19
반응형
- Yaml을 이용하여 파일을 Node에 복사하는 작업 도중 발생한 이상 현상에 대한 내용
- 다양한 예제 파일이 존재하나 다음 소스를 가지고 테스트
- 위 소스를 바탕으로 ansible-playbook을 이용하여 command로 실행시 다음과 같은 결과 도출
- #ansible-playbook -i hosts.inv notworking_filecopy.yml
- 성공
- AWX에 적용
- 실패
- -
- 원인 파악
- 먼저 AWX의 로그를 살펴보면
- "Could not find or access '/testdir/doc.tar' on the Ansible Controller." 라고 표현되어 있음
- could not find? - 아래와 같이 파일 존재 함
- could not access? - 아래와 같이 모든 권한이 부여 됨
- ..... Thniking and Thniking .....
- 파일의 권한과 존재는 이미 확인되었으며,
- ansible-playbook 실행 시에도 정확하게 동작 됨
- 접근 방법 1 (실패) - AWX_WEB의 계정 권한 ?
- Docker의 Container에 실행되는 AWX_WEB이 root의 계정이 아니라 다른 계정으로 실행되고 있을수 있다는 생각에서 시작
- 그러나, 위에서 언급한대로 권한은 744로.. 모든 사용자가 접근이 가능하므로 의미 없음으로 판단
- -
- 접근 방법 2 (실패) - AWX_WEB의 디렉토리 접근 문제 ?
- 터미널에서 #ansible-playbook 명령어로는 정상실행 되나, AWX에서 안되면
- Docker 실행 시 AWX_WEB의 도커 내의 폴더를 절대경로로 인식한다고 의심
- 이를테면 테스트 PC내의 Docker내의 AWX_WEB의 경로는
- /var/lib/docker/overlay2/9a61d8e0b1f574bea31bd208edde4fac0edb8458a3fc4ef00decd5d7ef525fc4/merged/var/lib/awx/public/static로 설정되어 있음
- /var/lib/docker/overlay2/9a61d8e0b1f574bea31bd208edde4fac0edb8458a3fc4ef00decd5d7ef525fc4/merged/var/lib/awx/public/static를 절대경로 root(/)로 설정하여 사용한다는 의심
- 그러나 다시 생각해 보면, 배포시 마다 사용자가 매번 저 경로로 파일을 옮겨 작업한다는 것은 사실상 불가능
- 시스템 어드민이 아니고서는 저 경로를 접근하는 것도 어렵고, Docker의 사상(?)과도 맞지 않음
- 결정적으로
- AWX에서 Playbook이 저장된 Yml파일 경로는 처음 설치시 설정한 /var/lib/awx/projects에서 읽어서 처리하게 되어 있음
- 이 또한 의미 없음으로 판단
- -
- 접근 방법 3(성공) - Absolut path(절대경로)를 인식하지 못하는 문제?
- AWX에서 Playbook을 선택하여 실행하는 경우
- 해당 yml파일을 읽어서 메모리에서 처리한다라고 생각하는게 잘못된 생각임
- yml파일을 해당 위치에서 실행하는것으로 판단 - import나 기타 등등을 생각해보면 됨.
- 배포 테스트 파일을 yml이 위치한 폴더로 이동
- yml을 수정
- Absolute path (절대 경로)를 Relative Path(상대 경로)로 변경
- 터미널에서는 당연히 성공
- AWX에서는
- 성공
- 접근 방법 1 (실패) - AWX_WEB의 계정 권한 ?
- 결론
- Yaml파일에서 절대 경로를 인식하지 못함 (모든 명령어에서 확인한 부분은 아님)
- 이는 copy나 shell:cp .. 혹은 Command 등 모든 명령어에서 동일하게 현상이 발생하는 문제
- 절대 경로를 인식하지 못하는 버그 혹은 설치시 뭔가 설정을 잘못 했다는 결론에 이름
- 절대 경로 인식 버그일 확률 90% 이상
- playbook 사용시에는 반드시 상대 경로로 작업할 것을 권장
글
AWX 실습 #06_Yaml 파일 생성
AWX
2019. 1. 2. 11:05
반응형
- yaml이란
- YAML Ain't Markup Language의 약어
- 구조화된 데이터나 오브젝트를 문자열로 변환 및 관리하기 위한 데이터 형식의 한 종류
- 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식
- JSON이나 XML과 유사하나 가독성이 뛰어남
- JSON과 상위 호환
- 확장자는 대부분 .yml로 표기 (8.3 포맷의 경우)
- 공백문자의 갯수로 상위와 구분 (탭문자는 사용할 경우 디버깅의 문제가 발생함)
- 특수문자는 \(역슬래쉬)키와 함께 사용 됨 (c 코딩 패턴과 유사)
- yaml 방식 비교
- 구분소스 (단순 비교를 위한 코드임)
XML <keys>
<key1> <value>value1</value>
</key1> <key2> <value>1</value> <value>2</value> <value>3</value>
</key2>
<key3> <keys> <keys3-1> <value>1</value> </keys3-1> <keys3-2> <value>4</value> <value>5</value> <value>6</value> </keys3-2> </keys>
</key2> </keys>JSON {"key1":"value1","key2":[1,2,3]","key3":{"key3-1":"value3-1","key3-2":"value":[4,5,6]}}
YAML --- key1: value1 key2: [1,2,3] key3: key3-1: value3-1 key3-2: [4,5,6]
- 샘플 코드 작성
- 하기 샘플 코드는 다른 명령어로도 가능하나 기본적인 테스트를 위해 작성 됨
- HOST VM에 접속하여 샘플 코드를 /var/lib/awx/projects/awxtest에 각각 작성하여 저장
- vi 명령어는 VI명령어 를 참조
- 주의 : 모든 소스의 들여쓰기는 맞추어야 함(우측 이미지 참고, 탭 사용 금지)
- helloworld.yml 작성
---
- name: Hello World!
hosts: alltasks:
- name: Hello World!
shell: echo "Hi! It is working"- firewall 서비스 시작 (startFirewall.yml)
---
- name: Turn on the FireWall in system
hosts: alltasks:
- name: execute command for firewall
shell: systemctl start firewalldfirewall 서비스 중지 (stopFirewall.yml)
---
- name: Turn on the FireWall in system
hosts: alltasks:
- name: execute command for firewall
shell: systemctl stop firewalld- 작성 후 최종 화면 (read 권한 확인)
- -
- 목표
- yaml 파일 생성