AWX 설치 환경 구성

설치 방법 변경

  • AWX 18.0 이후부터 AWX Operator로 설치하는 것이 권장 방법이 되었다 (쿠버네티스 환경에서 설치)
  • Docker 환경에 설치하는 것도 계속 지원은 하지만 개발/테스트 용도로만 사용하는 것을 공식적으로 권장된다.
  • AWX 18.0 이전에는 기본적으로 docker compose로 docker 환경에 AWX를 설치하는 것이 일반적이다.

설치 시 필수 조건

  • ansible 2.8 이상
  • Docker 최신 버전
  • Docker 파이썬 모듈
  • Git 1.8.4 이상
  • 파이썬 3.6 이상
  • Node 14.x LTS (고유 컨테이너 이미지를 빌드할 때만 필요)
  • NPM 6.x LTS (고유 컨테이너 이미지를 빌드할 때만 필요)

ansible 계정 생성

  • AWX 관련 작업들을 진행할 계정
useradd ansible
passwd ansible

파이썬 설치

  • CentOS 7 에서 제공하는 가장 최신 버전은 3.6.8
  • 시스템에서 사용하는 파이썬과 다른 버전을 사용하기 위해 파이썬 환경을 따로 구축한다.
  • 여기서는 ansible 구동용 파이썬을 따로 설치하여 사용한다 (버전은 3.6.8 동일하게 설치)
# root 계정
yum install gcc zlib-devel openssl openssl-devel libffi-devel -y

# ansible 계정 (su - ansible)
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tar.xz
tar xvf Python-3.6.8.tar.xz
cd Python-3.6.8
mkdir -p /home/ansible/package
./configure --prefix=/home/ansible/package/Python-3.6.8
make && make install

pip 설치

# ansible 계정 (su - ansible)
## 아래를 사용하면 Python 3.7 이상 버전을 요구함. 3.6 버전에서 사용하고자 한다면 다음 명령어를 사용할 것
# wget https://bootstrap.pypa.io/get-pip.py
wget https://bootstrap.pypa.io/pip/3.6/get-pip.py
/home/ansible/package/Python-3.6.8/bin/python3 ./get-pip.py

virtualenv 설치

  • ansible 계정에서 진행
cd /home/ansible/package/Python-3.6.8/bin
./pip3 install virtualenv
./pip3 install virtualenvwrapper
# vi ~/.bashrc

export VIRTUALENVWRAPPER_PYTHON=/home/ansible/package/Python-3.6.8/bin/python3
source /home/ansible/package/Python-3.6.8/bin/virtualenvwrapper.sh
# vi ~/.bash_profile

PATH=$HOME/package/Python-3.6.8/bin:$PATH:$HOME/bin
export WORKON_HOME=$HOME/.virtualenvs
export PATH
# ansible 계정 재접속 후 아래 명령 입력
mkvirtualenv -p /home/ansible/package/Python-3.6.8/bin/python3 ansible

가상환경 ansible 접속

  • 아래와 같이 ansible 환경으로 접속했는지 확인하고, 접속되지 않았다면 다음의 명령어를 참고

# 가상환경 ansible 접속
workon ansible

# 가상환경 ansible 종료
deactivate

ansible 설치

# ansible 계정
pip install ansible



AWX 설치 및 실행

Docker 설치

# root 계정
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io

Docker Compose 설치

# root 계정

curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

Docker 실행

# root 계정
systemctl enable docker
systemctl start docker

Docker 사용할 수 있는 계정 추가

# root 외에 계정도 docker 를 이용할 수 있도록 usermod 변경
# root 계정
sudo usermod -a -G docker ansible

# ansible 계정으로 재 접속 (꼭 재접속) 후, 테스트
workon ansible
docker ps

Docker 관련 파이썬 패키지 설치

# python docker / docker-compose
# ansible 계정

pip install docker
pip install docker-compose

git 설치

# root 계정
yum install -y curl-devel expat-devel gettext-devel perl-ExtUtils-MakeMaker

# ansible 계정
mkdir ~/downloads
cd ~/downloads
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.22.0.tar.xz --no-check-certificate
tar xvf git-2.22.0.tar.xz
cd git-2.22.0
make prefix=/home/ansible/package/git all
make prefix=/home/ansible/package/git install
# vi ~/.bash_profile
# ansible 계정

PATH=$HOME/package/git/bin:$PATH
export PATH

# ansible 계정 재접속

AWX 다운로드

# https://github.com/ansible/awx/releases
# ansible 계정

cd ~/downloads

# awx 15.0.0
wget https://github.com/ansible/awx/archive/15.0.0.tar.gz
tar xvf 15.0.0.tar.gz
ln -s awx-15.0.0 awx

AWX 설치할 docker 환경 변수 수정

# vi /home/ansible/downloads/awx/installer/inventory
# 아래 항목들을 찾아 주석을 제거 하거나, 값을 변경해 줍니다.
# use_docker_compose=true 의 경우, 추가.
# ansible 계정

localhost ansible_connection=local ansible_python_interpreter="/home/ansible/.virtualenvs/ansible/bin/python"
postgres_data_dir=/home/ansible/package/awx/pgdocker
host_port=10090
host_port_ssl=10091
use_docker_compose=true
docker_compose_dir=/home/ansible/package/awx/awxcompose
project_data_dir=/home/ansible/package/awx/projects

# 17.1.0의 경우 아래의 항목의 주석 제거
admin_password=password

AWX 설치 및 실행

# ansible 계정
# awx 최초 실행 (docker-compose.yml 파일 생성)
cd /home/ansible/downloads/awx/installer
/home/ansible/.virtualenvs/ansible/bin/ansible-playbook -i inventory install.yml
  • 이때, “Create Docker Compose Configuration” 에서 libselinux-python 에러가 날 경우, selinux 설정을 disabled 시키고 해볼 것

  • “from community.general in version 2.0.0 Please update your playbooks.” 에러가 날 경우 role 파일 중에 “docker_service” 항목을 “docker_compose” 로 변경

    • 참고 : https://docs.ansible.com/ansible/latest/collections/community/general/docker_service_module.html
grep -r "docker_service" *
roles/local_docker/tasks/upgrade_postgres.yml:  docker_service:

vi roles/local_docker/tasks/upgrade_postgres.yml
docker_service -> docker_compose
# awx 중지 / 시작
# ansible 계정

cd /home/ansible/package/awx/awxcompose
docker-compose stop
docker-compose start

# awx 로그 확인
docker logs -f awx_task

# docker process 확인
# awx_task, awx_web, awx_postgres, awx_redis 가 동작하고 있어야 함.
docker ps

# awx 접속
# 초기 비번 : admin / password

http://{서버IP}:10090

AWX 접속

  • 최신 버전의 크롬에서는 아래와 같이 TCP 10080으로의 웹접속이 차단되니까 주의
    • 따라서 해당 문서에서 TCP 10080 → 10090 으로 변경



참고자료

Ansible & AWX (설치부터 기본 활용 및 NHN Cloud Deploy 연동까지)

프로비저닝 자동화를 위한 Ansible AWX, 설치부터 엔터프라이즈 환경 적용까지 - 1

Tags: ,

Categories:

Published:

Updated: