Ansible AWX 17.1.0: Ubuntu에 설치하는 완벽 가이드

Ansible AWX는 강력한 오픈 소스 IT 자동화 도구인 Ansible의 웹 기반 관리 인터페이스입니다. 이번 글에서는 도커 환경에서 Ansible AWX 17.1.0을 설치하는 방법을 단계별로 자세히 설명하겠습니다. AWX 17.1.0 까지는 Docker 기반으로 설치하지만, 18.0.0 버전 이상은 K8s 기반으로 변경되었습니다. K8s를 구축할 정도의 인프라가 없다면 Docker로 설치하는 것이 최선일 겁니다.
명령들을 순서대로 실행하시면 큰 문제 없이 설치가 가능할 것입니다. 초보자도 쉽게 따라할 수 있도록 모든 과정을 상세히 다루었으니, IT 자동화의 세계에 첫 발을 내딛고 싶은 분들은 지금 바로 시작해보세요! 지금부터 Ansible AWX 17.1.0을 Ubuntu에 설치하는 방법을 하나씩 살펴보겠습니다.

Ansible AWX 17.1.0: Ubuntu에 설치하는 완벽 가이드

1. Ansible AWX가 뭐에요?

AWX는 Ansible Tower의 오픈소스 버전입니다. Ansible을 사용해서 IT 자동화를 쉽게 구현하고 모니터링할 수 있는 웹 기반 UI 및 REST API를 제공하는 아주 훌륭한 솔루션이지요. Ansible은 시스템 설정, 애플리케이션 배포, 프로비저닝 등을 자동화 하는 도구이며, AWX는 이를 더욱 편리하게 활용할 수 있게 도와줍니다.

AWX의 주요 기능은 다음과 같습니다.

  • 사용자 친화적인 인터페이스: 명령어를 일일이 입력하지 않고, 웹 UI를 통해 손쉽게 플레이북을 실행하고 관리할 수 있습니다.
  • 워크플로우: 복잡한 작업을 여러 단계로 나누어 자동화할 수 있으며, 각 단계별로 조건을 설정해 유연하게 작업을 처리할 수 있습니다.
  • 스케줄링: 정해진 시간에 자동으로 작업이 실행되도록 예약할 수 있습니다.
  • 모니터링 및 로깅: 실행된 작업의 로그를 쉽게 확인하고, 실시간으로 모니터링할 수 있어 문제 발생 시 빠르게 대응할 수 있습니다.
  • 역할 기반 접근 제어: 사용자마다 접근 권한을 다르게 설정할 수 있어 보안성을 높입니다.

이런 기능들 덕분에 AWX는 IT 인프라를 효율적으로 관리하고, 반복적인 작업을 자동화 하는 데 큰 도움이 됩니다. IT 운영팀은 AWX를 통해 더 적은 시간과 노력으로 시스템을 관리하고, 더 중요한 업무에 집중할 수 있습니다.

2. 필수 프로그램 설치

2.1 필요 컴포넌트 설치

다음 명령으로 필요한 컴포넌트들을 설치합니다.

$ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common git

2.2 GPG Key 인증

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK

2.3 Docker 레포지토리 등록

$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

Repository: 'deb [arch=amd64] https://download.docker.com/linux/ubuntu jammy stable'
Description:
Archive for codename: jammy components: stable
More info: https://download.docker.com/linux/ubuntu
Adding repository.
Press [ENTER] to continue or Ctrl-c to cancel.
Adding deb entry to /etc/apt/sources.list.d/archive_uri-https_download_docker_com_linux_ubuntu-jammy.list
Adding disabled deb-src entry to /etc/apt/sources.list.d/archive_uri-https_download_docker_com_linux_ubuntu-jammy.list
Get:1 https://download.docker.com/linux/ubuntu jammy InRelease [48.9 kB]
Get:2 https://download.docker.com/linux/ubuntu jammy/stable amd64 Packages [21.4 kB]
Hit:3 http://kr.archive.ubuntu.com/ubuntu jammy InRelease
Get:4 http://kr.archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB]
Get:5 http://kr.archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB]
Get:6 http://kr.archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
Fetched 408 kB in 2s (165 kB/s)    
Reading package lists... Done
W: https://download.docker.com/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

2.4 Docker 설치

$ sudo apt-get update && sudo apt-get install -y docker-ce docker-ce-cli containerd.io
$ sudo docker -v
Docker version 24.0.5, build ced0996
$ sudo systemctl enable docker && sudo systemctl start docker
$ sudo usermod -aG docker ${USER}

2.5 Docker Compose 설치

$ sudo apt install -y docker-compose

2.6 Ansible 설치

$ sudo add-apt-repository --yes --update ppa:ansible/ansible
$ sudo apt update && sudo apt install -y ansible
$ ansible --version
ansible [core 2.15.2]
  config file = /etc/ansible/ansible.cfg
  configured module search path = ['/home/dk/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python3/dist-packages/ansible
  ansible collection location = /home/dk/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/bin/ansible
  python version = 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0] (/usr/bin/python3)
  jinja version = 3.0.3
  libyaml = True

3. AWX 설치

3.1 git clone

$ git clone -b 17.1.0 https://github.com/ansible/awx.git

3.2 awx ssl 인증서 생성

$ mkdir -p awx/installer/awx-ssl && cd awx/installer
$ openssl req -subj '/CN=ansible.awx/O=Lab/C=KR' \
-new -newkey rsa:2048 \
-sha256 -days 1365 \
-nodes -x509 \
-keyout ./awx-ssl/awx.key \
-out ./awx-ssl/awx.crt
$ cd awx-ssl
$ cat awx.key awx.crt > awx-self-signed-key.crt
$ cd ..

3.3 inventory 설정

$ vi inventory
...
admin_user=admin
admin_password=password <- 패스워드 설정
host_port=80
host_port_ssl=443
docker_compose_dir="~/.awx/awxcompose" # 적절한 위치 지정, /root/.awx/awxcompose에 파일 생김
ssl_certificate=/path/awx/installer/awx-ssl/awx-self-signed-key.crt
...
project_data_dir #주석해제

3.4 AWX 설치 플레이북 실행

$ sudo -i
# cd /path/awx/installer
# ansible-playbook -i inventory install.yml -b
# docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED          STATUS          PORTS                                                                            NAMES
2fc7bbab0e32   ansible/awx:17.1.0   "/usr/bin/tini -- /u…"   39 seconds ago   Up 34 seconds   8052/tcp                                                                         awx_task
0f32fabb4830   ansible/awx:17.1.0   "/usr/bin/tini -- /b…"   49 seconds ago   Up 33 seconds   0.0.0.0:80->8052/tcp, :::80->8052/tcp, 0.0.0.0:443->8053/tcp, :::443->8053/tcp   awx_web
d749a661ad4c   redis                "docker-entrypoint.s…"   51 seconds ago   Up 34 seconds   6379/tcp                                                                         awx_redis
a14cad6c9a69   postgres:12          "docker-entrypoint.s…"   51 seconds ago   Up 34 seconds   5432/tcp                                                                         awx_postgres

4. AWX WebUI 접속

https://ip_address/
Username: admin
Password: 설정한 password

5. AWX 컨테이너 종료 & 시작

$ sudo -i
[sudo] password: *******
# cd .awx/awxcompose
# docker-compose stop
# docker-compose start

6. 마무리

이로써 Ansible AWX 17.1.0을 Ubuntu에 성공적으로 설치하는 과정을 모두 마쳤습니다! Ansible AWX를 통해 다양한 자동화 작업을 수행하며 인프라 관리의 효율성을 극대화할 수 있습니다. 이 도구는 일상적인 관리 작업을 자동화하고, 오류를 줄이며, 일관된 환경을 유지하는 데 큰 도움이 됩니다. Ansible AWX에 플레이북을 등록하고 여러 유용한 작업들을 자동화 하는 방법에 대해서도 글을 작성할 예정입니다. 기대해 주세요.

Leave a Comment