AWX 로 실행하고 알림 받기

Laigasus

Troubleshooting|2024년 10월 13일|마지막 수정 시간: 2024년 10월 13일|
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에서 액세스토큰도 발급해두면 좋습니다
notion image
 
 
notion image
 
관리형 노드들을 제어하기 위해 ssh 인증을 등록합니다. 인증 정보 유형을 ‘머신’, ssh 개인키는 tower 노드 개인 키(private) 값을 입력합니다.
notion image
 
git 연동을 위해서는 인증 정보 유형을 ‘소스 제어’, scm 개인키는 tower 노드 개인 키(private)값을 입력합니다.
notion image
 

프로젝트 생성

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

인벤토리 생성

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

실행

템플릿 생성

템플릿을 생성하되, 인증정보를 할당하시고, 플레이북을 지정하여야 합니다.
권한이 필요한 경우 에스컬레이션을 수행할 수 있습니다.
웹훅도 지원합니다.
notion image
 
생성 결과는 다음과 같습니다.
notion image
 
작업을 실행하면 다음과 같이 실행되는 것을 알 수 있습니다.
변경하항이 있으면 state 가 changed 변경사항 없으면 ok 로 뜹니다.
notion image

 

알림 연동(웹훅 with Slack)

awx 실행 결과를 웹훅으로 slack 에 전달해봅시다
 

앱 등록

해당 사이트에서 앱을 생성합니다
notion image
 
생성됩 앱에 기본 정보를 입력해줍니다
notion image
 

토큰 발급

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

Notifier 추가

AWX 에서 알림(Notifier)에 추가합니다.
notion image
테스트 알림이 성공적으로 전달되었습니다.
notion image
 

템플릿 내 알림 활성화

이제 템플릿에 알림을 활성화합니다. 기본적으로 꺼져있습니다.
notion image
 
알림이 전송되었습니다.
notion image
Loading...