글
YAML with AWX : SELINUX mode Change
- selinux의 current mode를 변경
- 현재 selinux의 mode를 확인하는 방법
- #sestatus
- -
- Node들의 mode도 확인
- Node1, Node2 에서 모두 확인
- #sestatus
- -
- mode를 변경하는 명령어
- selinux의 모드를 변경하는 명령어
- #setenforce [0 or 1] – 0: permissive, 1:enforcing
- #setenforce 0
- #setenforce 1
- -
- yaml 파일 작성
- /var/lib/awx/projects/awxtest에 yml파일 작성
- #vi change_selinux_mode_permissive.yml로 작성
- `
공백주의
---
- name: change selinux to permissive to all node
hosts: all
tasks:
- name: change permissive
command: /usr/sbin/setenforce 0참고 : setenforce 위치 찾기
- #whereis setenforce
- -
AWX에서 Template 생성
- NAME : SELINUX_Permissive
- INVENTORY : AWX_TEST
- PROJECT : awx_test
- PLAYBOOK : change_selinux_mode_permissive.yml
- CREDENTIAL : AWX_CRED
- 를 눌러서 저장
- 를 눌러 실행
- -
- 결과 확인
- 각 노드들에서 변경값 확인
- 완료
- -
- 목표
- Yaml파일을 작성하여 AWX로 각 노드들의 Selinux mode를 변경.
- 추가 실습 : change_selinux_mode_enforcing.yml을 작성하여 모드를 원복(enforcing)
글
YAML with AWX : import_playbook
playbook을 import 하여 실행 하는 방법
- Command : import_playbook
- 아래와 같이 merge_task.yml을 만들고 저장
- 설명
- host: local # inventory 파일에 [local] 추가
- import_playbook: ./makeoriginaltar.yml # makeoriginaltar.yml을 실행
- 기타 사항
- 유사한 문법으로 include가 있으나, include는 사용하지 말고 import_task를 사용하라는 메시지가 나옴
- include는 추후 deprecated 될 수 있음
- 실행 결과
- SSH 관련 오류 발생 시
- Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 라는 메시지 발생 함
- 사유 : local(127.0.0.1)로 설정하였으나, 내부적으로도 ssh 연결을 하는 듯 함 (추후 확인 필요)
- 내부에 authorized_keys 생성 필요
- 사용자 계정(HOME)에 .ssh 디렉토리에 id_rsa.pub을 authorized_keys로 복사
- #cp /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
- -
- 성공
- 중간 로그 생략
- 각 노드 확인
- SSH 관련 오류 발생 시
- 전체 소스
- hosts.inv
- -
- merge_task.yml
- -
- makeoriginaltar.yml
- -
- deploytar2.yml
- -
- 실행 명령
- ansible-playbook
- -
- 전체 소스
- 소스 첨부 : full_source_merge.zip
- 추가 목표
- 외부 변수 등을 받아 처리하는 방법
글
YAML with AWX : Final Source for Tranfer and Deploy with Tar file
- tar 파일을 Node단에 전달한 후 압축을 해제
- 로직
- tar파일은 미리 준비되어야 함 ; 서버단에서 tar를 만드는 로직 (가능 여부 확인 후 추가 필요)
- 파일 전송 : copy 명령어
- 디렉토리 생성 : file 명령어
- 압축 해제 : shell 명령어
- 전체 소스
- 설명
- 5 : - enable_debug: false # return 값을 확인하기 위해 사용하며, true로 변경시 하단 (debug)로 시작되는 task가 실행 됨
- 8~15 : file copy # result1에 실행 결과 리턴 됨
- 17~19 : debug section 1
- 21~23 : tar 압축 해제를 위한 디렉토리 생성 # result2에 실행 결과 리턴 됨
- 25~27 : debug section 2
- 29~35 : tar 압축 해제 # result1이 성공이고 변동이 있으며 result2에서 정상적으로 폴더가 생성이 되었으면 실행 # 주의 : result2는 폴더가 존재하는 경우 false로 리턴 됨
- 37~39 : debug section 3
---
- name: file transfer to remote and extract tar
hosts: all
vars:
- enable_debug: false
target_dir: /testdir/doc2
tasks:
- name: (step 1) copy to node
copy:
src: "./doc.tar"
dest: /testdir/doc2.tar
owner: root
group: root
mode: 644
register: result1- name: (debug) after step 1
debug: var=result1
when: enable_debug == true- name: (step 2) make directory
file: path={{target_dir}} state=directory
register: result2- name: (debug) after step2
debug: var=result2
when: enable_debug == true- name: (step 3) extract tar
shell: tar -xvf /testdir/doc2.tar -C /testdir/doc2
args:
chdir: /testdir/
warn: False
when: result1.failed == false and result1.changed == true and result2.changed == true
register: result3- name: (debug) after step3
debug: var=result3들여쓰기 및 띄여쓰기 주의
- -
AWX 적용
- AWX의 Template에 다음과 같이 작성
- NAME : Deploy Tar
- INVENTORY : AWX_TEST
- PROJECT : awx_test
- PLAYBOOK : deploytar.yml
- 를 눌러 저장
- -
- 실행 결과
- Node단 확인
- AWX의 Template에서 를 눌러 실행
- Node 단 확인
- 추가 목표
- 로컬에서 tar파일 생성
- 배포한 파일 내용 수정