ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오픈소스로 구성하는 데브옵스 시스템 - AWX에서 Ansible 실행
    DevOps 2018. 2. 13. 23:19

    지금부터 ping을 실행하는 Playbook을 등록하고, 이를 ansible과 AWX을 이용해 실행까지 해보도록 하겠습니다.


    그전에 간단히 AWX의 메뉴 구성을 설명하면...


     DASHBOARD

     Job의 최근 실행 상태를 한눈에 볼 수 있는 화면

     JOBS

     최근 실행한 JOB 리스트

     SCHEDULES

     스케줄로 등록된 Job 리스트

     PORTAL MODE

     등록된 Job과 실행중인 Job을 하나의 화면에서 확인 가능

     PROJECTS

     playbook 모음을 하나의 단위로 묶어서 관리

     CREDENTIALS

     ansible 실행을 위한 계정 관리 메뉴 

     CREDENTIAL TYPES

     사용자 설정 인증 타입

     INVENTORIES

     Job을 실행하는 Host 모음

     TEMPLATES

     Inventory와 Playbook을 조합하여 실제 job이 실행되는 구성 단뒤 

     ORGANIZATIONS

     Users, Teams, Projects, Inventoryes의 최상위 묶음 단위

     USERS

     AWX 사용자 관리 메뉴

     TEAMS

     AWX 사용자 그룹 단위 

     INVENTORY SCRIPTS

     사용자 Inventory Script 관리 메뉴

     NOTIFICATIONS

     ansible의 실행 상태를 알려주는 알람 등록 화면

     MANAGEMENT JOBS

     Job 리스트나 실행 상태를 관리

     INSTANCE GROUPS

     Job을 실행하는 단위 그룹

     SETTINGS

     AWX의 인증과 기본 Job, ansible 설정을 관리


    자세한 내용은 Ansible Tower 가이드 문서를 참고하시면 좋을 듯 합니다.


    본격적으로 AWX 구성을 하기전에 우리는 ansible의 playbook을 등록해야 됩니다.

    지난번 gitlab에 해당 프로젝트 repository를 만들어서 AWX와 연동시켰습니다. 해당 프로젝트에 playbook을 등록합니다.

    ping을 실행하는 playbook 입니다. 

    hosts는 all을 값으로 줬으나 Inventory에서 실행 Host를 따로 등록할 예정 입니다.

    그리고 중요한 건 remote_user는 실행하는 Host에 계정 등록이 되어 있어야 합니다. 그리고 이 계정은 AWX의 credential 메뉴에 등록이 되어 있어야 합니다. 또한 root로 실행을 하기 위해서는 become: yes, become_user: root 지정이 되어야 합니다.


    Playbook이 등록되면 아래와 같이 등록한 Projects에서 Update SCM 버튼을 클릭합니다.


    그리고 CREDENTIALS 메뉴에서 HOST에 remote 접속이 가능한 계정을 등록합니다.


    원격 계정에 대한 실행 권한이 없는 경우에는 root로 권한 상승을 해야 되기에 ESCALATION 설정도 등록 합니다.


    다음으로 명령을 실행하는 Host 등록을 위해 Inventory를 생성 합니다.


    그리고 해당 Inventory에 명령을 실행할 Host나 Group을 등록 합니다. HOSTNAME에는 IP나 Host명을 등록 합니다.


    이제 마지막으로 TEMPLATES 메뉴에서 명령 실행을 위한 최종 구성을 합니다.

    NAME과 JOB TYPE을 설정하고 INVENTORY에서 적용할 HOST가 등록된 inventory를 선택합니다.

    그리고 명령을 실행할 PROJECT를 선택하면 git에 해당 PROJECT에 등록된 PLAYBOOK을 가져올 수 있습니다.

    CREDENTIAL 지정을 하고 Enable Privilege Escalation 옵션을 체크합니다.

    혹시 password나 계정을 직접 입력하기 원한다면 PROMPT ON LAUNCH를 체크 합니다.


    모든 설정이 완료 되었습니다.

    이제 PORTAL MODE 메뉴에서 JOB TEMPLATES에 등록된 JOB Actions 버튼으로 명령을 실행합니다.


    그리고 해당 job을 클릭하면 아래와 같은 실행화면창을 볼 수 있습니다.

    요약해서 설명하면...

    1. Playbook을 등록해서 Project에서 update 합니다.

    2. CREDENTIALS, INVENTORY&HOST를 등록합니다.

    3. TEMPLATES에서 INVENTORY, PROJECT, PLAYBOOK, CREDENTIAL 지정을 합니다.

    4. JOB을 실행하고 결과를 봅니다.


    처음에는 CREDENTIAL, INVENTORY, PROJECT, PLAYBOOK을 계속 등록해야 되지만 이런것들이 계속 쌓이면 TEMPLATES에서 기존 등록된 항목들을 조합하여 Job만 등록하면 될 듯 합니다.


    여기까지 리눅스 환경에서 실행 가능한 AWX & Ansible 구성을 해봤습니다.

    Ansible은 윈도우 환경에서도 실행이 가능한데, 다음에는 윈도우 환경 구성을 다뤄보도록 하겠습니다.

Designed by Tistory.