type
status
date
slug
summary
tags
category
icon
password
소개
AWX
AWX는 Red Hat Ansible Tower의 오픈 소스 버전으로, Ansible 자동화를 위한 웹 기반 사용자 인터페이스와 REST API를 제공합니다. 이 도구는 Ansible 플레이북의 실행, 스케줄링, 모니터링을 중앙에서 관리할 수 있게 해주며, 복잡한 IT 워크플로우를 간소화합니다. AWX를 사용하면 팀 간 협업이 용이해지고, 자동화 작업의 가시성과 제어가 향상됩니다.
실행 구조
- 프로젝트는 플레이북을 포함합니다
- 인벤토리는 그룹을 포함하고, 그룹은 다시 호스트를 포함합니다
- 템플릿은 프로젝트, 인벤토리, 자격 증명을 결합합니다
- 템플릿이 실행될 때 작업이 생성됩니다
- 작업은 대상 호스트에서 플레이북을 실행합니다
Projects
플레이북이 저장된 디렉토리, 리소스입니다.
플레이북을 프로젝트라는 리소스로 만들 수 있습니다.
Inventories
AWX를 사용할 때는 인벤토리를 별도의 파일로 만들지 않고 인벤토리 리소스를 가지고 작업합니다. 인벤토리에는 그룹을 만들 수 있고 호스트를 그룹에 넣고 그룹을 인벤토리에 넣을 수 있습니다.
Credentials
인증이 필요한 부분을 관리합니다. 예를 들어, SSH 인증(키, 패스워드), become을 위한 sudo 인증, 파일을 암호화 시켜놨다면 vault 패스워드 등이 있습니다.
Templates
3가지 리소스(Projects, Inventories, Credentials)를 묶어서 만들며 템플릿이라고 합니다.
Ansible의 플레이북을 템플릿 형태로 만들어 플레이(실행)합니다.
Host에 접근할 때 SSH, sudo, vault 인증을 자격 증명에서 가져와서 실행합니다.
Jobs
템플릿을 클릭하면 작업(Task)이라는 형태로 실행됩니다.
예약 작업을 걸 수 있으며 실행 과정을 모니터링 할 수도 있습니다.
사용
원격 저장소 등록
Tower 노드가 사용할 저장소 repository 를 생성합니다. 저는 github 로 생성했습니다.
키 발급
tower 노드의 공개키가 github 에 등록되어 있어야 합니다.
actions 사용시 github에서 액세스토큰도 발급해두면 좋습니다


관리형 노드들을 제어하기 위해 ssh 인증을 등록합니다. 인증 정보 유형을 ‘머신’, ssh 개인키는 tower 노드 개인 키(private) 값을 입력합니다.

git 연동을 위해서는 인증 정보 유형을 ‘소스 제어’, scm 개인키는 tower 노드 개인 키(private)값을 입력합니다.

프로젝트 생성
프로젝트를 생성해 github 혹은 로컬 디렉터리를 선정합니다.

인벤토리 생성
인벤토리를 생성하되, 호스트를 할당합니다.


실행
템플릿 생성
템플릿을 생성하되, 인증정보를 할당하시고, 플레이북을 지정하여야 합니다.
권한이 필요한 경우 에스컬레이션을 수행할 수 있습니다.
웹훅도 지원합니다.

생성 결과는 다음과 같습니다.

작업을 실행하면 다음과 같이 실행되는 것을 알 수 있습니다.
변경하항이 있으면 state 가
changed
변경사항 없으면 ok
로 뜹니다.
알림 연동(웹훅 with Slack)
awx 실행 결과를 웹훅으로 slack 에 전달해봅시다
앱 등록
해당 사이트에서 앱을 생성합니다

생성됩 앱에 기본 정보를 입력해줍니다

토큰 발급
데이터를 전달해주기 위해 토큰 내 부여할 권한을 나열합니다. 저는 다음과 같이 주었습니다.
최소한
chat:write
는 있어야 합니다
이후
OAuth & Permissions
에서 토큰을 발급해줍니다.
Notifier 추가
AWX 에서 알림(Notifier)에 추가합니다.

테스트 알림이 성공적으로 전달되었습니다.

템플릿 내 알림 활성화
이제 템플릿에 알림을 활성화합니다. 기본적으로 꺼져있습니다.

알림이 전송되었습니다.
