반응형
  1. Yaml을 이용하여 파일을 Node에 복사하는 작업 도중 발생한 이상 현상에 대한 내용
  2. 다양한 예제 파일이 존재하나 다음 소스를 가지고 테스트 
    • 위 소스를 바탕으로 ansible-playbook을 이용하여 command로 실행시 다음과 같은 결과 도출
    • #ansible-playbook -i hosts.inv notworking_filecopy.yml
    • 성공
    • AWX에 적용
    • 실패
    • -
  3. 원인 파악
    • 먼저 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에서는
        • 성공
  4. 결론
    • Yaml파일에서 절대 경로를 인식하지 못함 (모든 명령어에서 확인한 부분은 아님)
    • 이는 copy나 shell:cp .. 혹은 Command 등 모든 명령어에서 동일하게 현상이 발생하는 문제
    • 절대 경로를 인식하지 못하는 버그 혹은 설치시 뭔가 설정을 잘못 했다는 결론에 이름
    • 절대 경로 인식 버그일 확률 90% 이상
    • playbook 사용시에는 반드시 상대 경로로 작업할 것을 권장


AWX 실습 #12_Workflow

AWX 2019. 1. 2. 11:10
반응형
  1. 작성되어 있는 Template를 활용하여 Workflow를 만들기
    • 로그인 후 화면에서 TEMPLATES 메뉴를 선택
    • 를 클릭하면 다음과 같은 두가지 메뉴가 팝업 됨
    • Workflow Template를 선택
    • NAME : Workflow_example
    • ORGANIZATION : AWX_HQ
    • 로 선택하고 를 눌러 저장
    • 저장되지 않은 경우 상위 메뉴 중 이 비 활성화 상태로 클릭이 안됨
    • 를 클릭
    • WORKFLOW VISUALIZER는 작성되어 있는 Templates를 작업 순서 별로 연결 시켜 표시 하는 기능을 제공
    • 를 클릭하면 신규 연결 Templates를 선택할 수 있음
    • 좌측에는 다음 작업에 대한 공간이 표시되고
    • 우측에는 추가할 작업에 대한 Templates들이 표시 됨
    • 우측 Template에서 기 작성해 두었던, Firewall Stop을 찾아 선택하면 하단에 RUN 항목과 버튼이 활성화 됨 
    • RUN : Always   - 항상 실행 한다는 옵션
    • 를 누르면 좌측에 해당 Template가 들어감
    • 이후 다음 작업을 추가하기 위해서 를 클릭하면
    • 형태로 표시됨
    • 는 이후 작업 추가
    • 는 현재 작업 삭제
    • 를 누르면 다음 작업 공간이 표시되며 우측에는 Template가 표시됨
    • RUN에는 세가지 옵션이 나옴
    • Always : 선행 작업이 끝나면 항상 실행 ; 독립적으로 실행 가능한 작업의 경우
    • On Success : 선행 작업이 성공하면 실행 ; 선행 작업이 반드시 성공한 후 필요한 작업을 진행할 경우
    • ON Failure : 선행 작업이 실패하면 실행  ; 선행 작업이 실패아여 원복 작업 등을 할 경우  
    • 위와 같은 방법으로 마지막에 Firewall Start까지 작업하면 다음과 같이 표현 됨
    • 를 눌러 작업된 애역을 저장
  2. 주의 사항
    • 모든 작업은 최종적으로 를 눌러야 변경 됨
    • 화면에서 삭제해도 자동저장되지 않음
    • 반드시 후 다시 확인하는 습관 필요
  3. 실행
    • TEMPLATES에서 작성한 Workflow_example을 찾아 선택
    • 를 눌러 실행
    • 실행은 각 Template별로 진행되며 성공시에만 초록색으로 표현 됨
    • 노드에 변경된 내용 확인
    • 사용자 등록 확인
    • 방화벽 서비스 가동 상태 확인
    • -
  4. 목표
    • Workflow를 작성하여 순차적인 작업 수행 확인
    • 추가 목표 : 의도적인 Fail상황을 만들어 표시 상태 확인 및 Fail 시 처리 작업 추가


반응형
  1. Admin으로 생성한 Template를 각 팀별로 지정된 사용자에게 할당하기
  2. op 로그인 후 TEMPLATES 클릭
    • 현재 지정된 Template가 없음
  3. 로그아웃 후 admin으로 재 접속
    • TEMPLATES 클릭
    • 현재까지 생성된 Template가 표시됨
    • Firewall Start( )를 클릭
    • 상단 메뉴에 을 클릭하여 권한 변경 화면으로 이동
    • 현재 admin만 부여되어 있는 상태 확인
    • 를 눌러 신규 할당
    • op의 체크박스를 선택하면 하단 화면이 펼쳐짐
    • Admin을 선택 ( Admin, Excute, Read : 각 내용은 추후 별도 확인 필요)
    • 를 눌러 저장
    • 위와 같이 생성됨
    • 위 작업과 마찬가지로 Firewall Stop도 op PERMISSIONS 등록
    • Admin 로그아웃
  4. op로 재 로그인 
    • TEMPALTES를 선택
    • 할당된 Templates 확인
    • 를 눌러 작업 수행
    • 수행 완료
    • -
  5. 목표
    • Admin으로 작업 후 각 사용자에게 PERMISSION 할당 및 수행
    • 추가 목표 : dev 계정에도 추가 후 테스트