Ansible 호스트 컨트롤러에서 매번 Ansible 플레이북과 Ansible 명령을 수동으로 실행하는 것에 지쳤나요? 왜 Ansible AWX를 사용하지 않고 웹 인터페이스를 사용하여 더 쉽게 할 수 없을까요?
AWX는 Red Hat에서 후원하는 오픈 소스 웹 애플리케이션으로, 모든 Ansible 작업을 수행하기 위한 사용자 인터페이스 및 API를 제공합니다. 이 튜토리얼에서는 Ubuntu 상자에 Ansible AWX를 설치하고 Ansible AWX를 사용하여 인벤토리를 관리하는 방법을 배웁니다.
오늘 Ansible AWX를 사용하여 효율적인 자동화 역량을 강화하세요!
전제 조건
이 튜토리얼은 단계별 지침으로 구성되어 있습니다. 함께 따라하려면 다음 사항이 준비되어 있는지 확인하십시오:
- An Ansible controller host – 이 튜토리얼에서는 Ubuntu 20.04.4 LTS 버전 머신에서 Ansible v2.11.7을 사용합니다.
- Docker – 이 튜토리얼에서는 Ubuntu 20.04.4 LTS 버전 머신에서 Docker v19.03.11을 사용합니다.
- Ansible 컨트롤러 호스트 머신에는 Python v3.6 이상이 설치되어 있어야합니다. 이 튜토리얼에서는 Python v3.8.10을 사용합니다.
- A GitHub account with one private and one public repository created in GitHub that you will use to store Ansible Playbook.
의존성 설치 및 Ansible AWX 구성
Ansible AWS는 Ansible Tower를 만드는 데 기초가되었습니다. Ansible AWX는 IT 팀이 테스트, 실험실, 개발 또는 다른 POC 환경에서 사용하기 쉽도록 Ansible을 만들었습니다.
Linux 시스템에 Ansible AWS가 기본적으로 설치되어 있지 않으므로 먼저 Ansible AWS를 설치하여 Ansible Playbook을 사용하여 멀티 컨테이너로 실행할 수 있습니다.
1. 아래의 각 명령을 실행하여 시스템 패키지를 업데이트하고 docker-compose-plugin을 설치하십시오.

2. 다음으로, 다음 명령을 실행하여 설치된 도커 컴포즈 버전을 확인하십시오.
아래 출력에서 최신 Docker Compose 버전 v2.5.0이 설치되어 있는 것으로 표시되어 Docker Compose가 올바르게 설치되었음을 확인할 수 있습니다.

3. Ansible AWX를 사용하기 위한 전제 조건으로 패키지를 설치하려면 아래의 각 명령을 실행하십시오.



4. 이제 다음 명령을 실행하여 공개 Git 저장소에서 AWX 패키지 아카이브를 다운로드하고 패키지를 압축 해제합니다.

5. 아래 명령을 실행하여 AWX 설치 디렉터리 (awx-17.1.0/installer/)로 이동하고 랜덤 비밀번호를 생성합니다.
귀하의 시스템에 설치된 Ansible AWX 버전에 따라 AWX 설치 디렉터리 (awx-17.1.0/installer/)가 다를 수 있습니다.
생성된 비밀번호를 AWX 콘솔에서 비밀 키로 사용할 수 있도록 메모해 두세요.

6. 마지막으로 텍스트 편집기에서 AWX 설치 디렉터리 (awx-17.1.0/installer/) 내의 inventory 파일을 엽니다. inventory 파일에는 AWX의 구성이 포함되어 있으며 AWX UI에 로그인하는 동안 사용됩니다.
인벤토리 파일에서 admin_password 값을 password로 변경하고 secret_key를 다섯 번째 단계에서 생성한 랜덤 비밀번호로 바꿉니다.

Ansible AWX 설치 및 시작하기
Ansible AWX를 올바르게 구성했으므로, 이제 Ansible 플레이북(install.yml)을 사용하여 설치하는 시간입니다. install.yml Ansible 플레이북은 추출한 Ansible AWX 패키지와 함께 제공됩니다. 이 플레이북에는 도커 이미지를 빌드하고 여러 컨테이너를 실행하는 명령을 실행하는 작업이 포함되어 있습니다.
1. 아래의 ansible-playbook 명령어를 실행하여 install.yml Ansible 플레이북을 실행합니다.
아래에서 AWX 호스트의 상태가 적절하지 않았고 명령을 실행하도록 수정되었음을 나타내는 일부 작업의 상태가 변경되었습니다.
반대로, 다른 작업은 변경 사항이 없음을 나타내는 ok 상태를 보여줍니다.

2. 다음으로, 아래의 도커 명령어를 실행하여 사용 가능한 모든 도커 컨테이너를 나열합니다.
아래의 출력에서 (awx_tasks, awx_redis, awx_web, awx_postgres) 실행 중인 컨테이너를 확인하여 AWX가 올바르게 설치되었음을 확인할 수 있습니다.

3. 마지막으로, 좋아하는 브라우저를 열고 Ansible AWX(https://AWX-HOST-IP:80)로 이동합니다. AWX-HOST-IP를 Ansible 호스트의 IP 주소로 교체해야 합니다. 모든 것이 잘 되었다면 아래와 같이 브라우저에서 Ansible AWX 로그인 페이지가 표시됩니다.
사용자 이름(admin)과 비밀번호(password)를 입력하고 로그인을 클릭하여 Ansible AWX 대시보드에 액세스할 수 있습니다. 이 자격 증명은 “의존성 설치 및 Ansible AWX 구성” 섹션의 마지막 단계에서 구성한 것입니다.
AWX 는 HTTPS 통신을 위해 자체 서명된 인증서를 자동으로 설치하며, 이는 브라우저에서 수락을 요구할 수 있습니다.

로그인 후, 브라우저는 아래와 같이 AWX 대시보드로 리디렉션됩니다.

인벤토리 생성 및 관리
이제 Ansible AWX 대시보드에 액세스할 수 있으므로 작업 자동화를 진행할 수 있습니다. 이 튜토리얼에서는 Ansible AWX 대시보드 내에서 여러 Ansible 구성 요소를 관리할 것입니다. 그러나 먼저 인벤토리를 생성하고 관리해야 합니다.
1. AWX 대시보드에서 Inventories를 클릭하여 Ansible AWX에 저장된 인벤토리 목록을 엽니다. 기본적으로 데모 인벤토리가 표시됩니다.
데모 인벤토리를 무시하고 새 인벤토리를 생성하려면 추가 드롭다운 버튼을 클릭하십시오.

2. 다음으로, Ansible AWX 대시보드에서 첫 번째 인벤토리를 구성하기 위해 아래 매개 변수를 지정하십시오:
- 이름 – ATA Learning (원하는 이름을 제공할 수 있습니다).
- 설명 – 인벤토리를 설명하는 선택적인 항목입니다. 많은 인벤토리 중에서 인벤토리를 식별하는 데 도움이 됩니다.
- 조직 – 기본 옵션을 선택하십시오. AWX는 기본 조직을 생성하지만 자체 조직을 생성할 수도 있습니다.
위의 모든 세부 정보를 지정한 후, 아래에 표시된대로 저장 버튼을 클릭하십시오.

마지막으로, 새로 생성된 재고 (ATA Learning)가 있는지 확인하려면 인벤토리 탭 (왼쪽 패널)을 클릭하십시오. 다음과 같이 표시됩니다.

Ansible 작업 생성 및 실행
인벤토리를 성공적으로 구성했지만 지금은 작업을 호출하지 않으면 쓸모가 없습니다. 작업은 AWX가 호스트 인벤토리에 대해 Ansible 플레이북을 실행하는 인스턴스입니다. 물론 작업을 호출하기 전에 먼저 하나를 만들어야 합니다:
Ansible을 생성하고 실행하려면:
1. GitHub 리포지토리 내에 YML 파일을 만들고 아래 플레이북을 복사/붙여넣기하십시오. YML 파일의 이름은 원하는 대로 지정할 수 있지만, 이 튜토리얼에서는 ata.yml이라는 플레이북을 사용합니다.

2. Ansible AWX 대시보드로 이동하여 좌측 패널에서 프로젝트를 클릭하여 사용 가능한 프로젝트 목록에 액세스하십시오. 작업을 생성하기 전에 프로젝트가 필요합니다.
데모 프로젝트를 무시하고 새 프로젝트를 만들려면 추가 버튼을 클릭하십시오.

3. 다음과 같이 새 프로젝트의 세부 정보를 제공하고 저장을 클릭하여 새 프로젝트를 저장하십시오:
- 이름 – 프로젝트 이름은 마음대로 지정할 수 있지만, 이 튜토리얼에서는 프로젝트 이름을 myproject로 설정합니다.
- 설명 – 인벤토리와 마찬가지로 설명을 추가하는 것은 선택 사항이지만, 프로젝트를 구분하는 데 도움이 됩니다.
- 조직 – 인벤토리와 마찬가지로 기본 설정(Default)을 선택하십시오.
- 소스 제어 자격 증명 유형 – 소스 제어 자격 증명 유형으로 Git을 선택하십시오.
- 소스 제어 URL – 소스 코드의 GitHub URL을 지정하십시오.

4. 프로젝트를 생성한 후, 왼쪽 사이드바에서 템플릿을 클릭하여 사용 가능한 모든 템플릿에 액세스할 수 있습니다.
템플릿 페이지에서 추가 드롭다운 버튼을 클릭하고, 템플릿을 생성하려면 작업 템플릿 추가 옵션을 선택하십시오.

5. 이제 아래에 나열된 세부 정보를 지정하고, 새 작업 템플릿을 저장하려면 하단의 저장을 클릭하십시오:
- 이름 – 작업 템플릿의 이름을 마음대로 설정하십시오. 이 튜토리얼에서는 작업 템플릿의 이름을 myjob로 설정합니다.
- 작업 유형 – 작업이 수행할 동작(실행)을 설정하십시오.
- 프로젝트 – 3단계에서 생성한 프로젝트를 선택하십시오. (myproject)
- 인벤토리 – “인벤토리 생성 및 관리” 섹션의 2단계에서 생성한 인벤토리를 선택하십시오. (ATA Learning)
- 플레이북 – “Ansible 작업 생성 및 실행” 섹션에서 생성한 플레이북을 선택하십시오 (ata.yml).

6. 마지막으로, 템플릿 페이지에서 다음과 같이 새로 생성된 작업을 시작하십시오:
- 작업을 클릭하여 (myjob) 작업 정보 페이지에 액세스하십시오.
- 작업의 세부 정보가 표시되는 세부정보 탭으로 이동하십시오.
- 페이지 하단의 시작을 클릭하여 작업을 시작하십시오.

아래에서 확인할 수 있듯이, 작업이 로컬호스트에서 성공적으로 실행되었고 플레이북 (ata.yml)에서 지정된 디렉토리 내의 모든 파일을 나열했습니다.

결론
이 튜토리얼에서는 Ansible AWX 오픈 소스 도구를 활용하여 Ansible 플레이북, 인벤토리 및 플레이북을 단일 UI 대시 보드로 관리하는 방법을 살펴보았습니다. 특정 디렉토리의 파일 목록을 나열하는 등의 Ansible 작업 실행에 대해 다뤘습니다.
이제 Ansible AWX 소프트웨어에 대해 견고한 지식을 갖게 되었습니다. 앞으로 모든 Ansible 플레이북을 Ansible AWX를 사용하여 실행할 의향이 있으십니까? 아니면 cron 작업을 추가하여 작업을 자동화하고 싶으십니까?