반응형
  1. selinux의 current mode를 변경
    • 현재 selinux의 mode를 확인하는 방법
    • #sestatus
    • -
  2. Node들의 mode도 확인
    • Node1, Node2 에서 모두 확인
    • #sestatus
    • -
  3. mode를 변경하는 명령어
    • selinux의 모드를 변경하는 명령어
    • #setenforce [0 or 1]   – 0: permissive,  1:enforcing
    • #setenforce 0
    • #setenforce 1
    • -
  4. 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
    • -
  5. AWX에서 Template 생성

    • NAME : SELINUX_Permissive
    • INVENTORY : AWX_TEST
    • PROJECT : awx_test
    • PLAYBOOK : change_selinux_mode_permissive.yml
    • CREDENTIAL : AWX_CRED
    • 를 눌러서 저장
    • 를 눌러 실행
    • -
  6. 결과 확인
    • 각 노드들에서 변경값 확인
    • 완료
    • -
  7. 목표
    • Yaml파일을 작성하여 AWX로 각 노드들의 Selinux mode를 변경.
    • 추가 실습 : change_selinux_mode_enforcing.yml을 작성하여 모드를 원복(enforcing)


반응형

playbook을 import 하여 실행 하는 방법

  1. 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
        • -
      • 성공 
        • 중간 로그 생략
        • 각 노드 확인
  2. 전체 소스
    • hosts.inv
    • -
    • merge_task.yml
    • -
    • makeoriginaltar.yml
    • -
    • deploytar2.yml
    • -
  3. 실행 명령
    • ansible-playbook
    • -
  4. 전체 소스 
  5. 추가 목표
    • 외부 변수 등을 받아 처리하는 방법


반응형
  1. tar 파일을 Node단에 전달한 후 압축을 해제
  2. 로직
    • tar파일은 미리 준비되어야 함 ; 서버단에서 tar를 만드는 로직 (가능 여부 확인 후 추가 필요)
    • 파일 전송 : copy 명령어 
    • 디렉토리 생성 : file 명령어
    • 압축 해제 : shell 명령어 
  3. 전체 소스
    • 설명
      •  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

      들여쓰기 및 띄여쓰기 주의

    • -
  4. AWX 적용

    • AWX의 Template에 다음과 같이 작성
    • NAME : Deploy Tar
    • INVENTORY : AWX_TEST
    • PROJECT : awx_test
    • PLAYBOOK : deploytar.yml
    • 를 눌러 저장
    • -
  5. 실행 결과 
    • Node단 확인
    • AWX의 Template에서 를 눌러 실행
    • Node 단 확인
  6. 추가 목표
    • 로컬에서 tar파일 생성
    • 배포한 파일 내용 수정