AWX 설치 환경 구성
설치 방법 변경
- 앞선 포스트에서 설명한 바와 같이 최신 버전의 AWX 설치는 쿠버네티스 환경을 기반으로 AWX Operator를 사용하는 것이 권장 방법이다.
- 하지만 소규모 환경이나 테스트 환경에서 AWX를 사용하려는 경우에, 굳이 쿠버네티스를 구축하면서까지 복잡해지는 것을 원치 않을 것이다.
- 권장 방법이라곤 했지만 최신 버전에서도 기존과 같이 docker compose를 통한 docker 환경에서의 AWX 구축도 지원하고 있다.
- 여기에서는 docker 환경에서의 AWX 22.1.0 설치를 설명한다.
설치 시 필수 조건
- ansible 2.8 이상
- Docker 최신 버전
- Docker 파이썬 모듈
- Git 1.8.4 이상
- 파이썬 3.9 이상 (AWX 20.0.1 이상일 경우 필수 조건)
ansible 계정 생성
- AWX 관련 작업들을 진행할 계정
useradd ansible
passwd ansible
파이썬 설치
- CentOS 7 에서 제공하는 가장 최신 버전은 3.6.8 이다.
- 따라서 AWX 설치를 위해 파이썬 3.9 이상의 설치가 필요하며, 시스템에서 사용하는 버전과의 충돌을 막기 위해 파이썬 환경을 별도로 구축한다.
# root 계정
yum install gcc zlib-devel openssl openssl-devel libffi-devel -y
# ansible 계정 (su - ansible)
wget https://www.python.org/ftp/python/3.9.16/Python-3.9.16.tar.xz
tar xvf Python-3.9.16.tar.xz
cd Python-3.9.16
mkdir -p /home/ansible/package
./configure --prefix=/home/ansible/package/Python-3.9.16
make && make install
pip 설치
# ansible 계정 (su - ansible)
wget https://bootstrap.pypa.io/get-pip.py
/home/ansible/package/Python-3.9.16/bin/python3 ./get-pip.py
virtualenv 설치
- ansible 계정에서 진행
- 파이썬 3.9.16 기반으로 진행
cd /home/ansible/package/Python-3.9.16/bin
./pip3 install virtualenv
./pip3 install virtualenvwrapper
# vi ~/.bashrc
export VIRTUALENVWRAPPER_PYTHON=/home/ansible/package/Python-3.9.16/bin/python3
source /home/ansible/package/Python-3.9.16/bin/virtualenvwrapper.sh
# vi ~/.bash_profile
PATH=$HOME/package/Python-3.9.16/bin:$PATH:$HOME/bin
export WORKON_HOME=$HOME/.virtualenvs
export PATH
# ansible 계정 재접속 후 아래 명령 입력
mkvirtualenv -p /home/ansible/package/Python-3.9.16/bin/python3 ansible
가상환경 ansible 접속
- 아래와 같이 ansible 환경으로 접속했는지 확인하고, 접속되지 않았다면 다음의 명령어를 참고
# 가상환경 ansible 접속
workon ansible
# 가상환경 ansible 종료
deactivate
ansible 설치
- 아래의 명령어는 파이썬 3.9.16에서 설치할 수 있는 최신 버전의 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 22.1.0
git clone -b 22.1.0 https://github.com/ansible/awx.git
cd awx
AWX 설치 및 실행
- 마지막에 컨테이너 로그를 확인할 때 “Admin password” 항목이 나오는데, 해당 값을 기억했다가 AWX 실행 이후 로그인 시 사용하고 패스워드를 변경한다.
# ansible 계정
## ERROR: Ansible could not initialize the preferred locale: unsupported locale setting 오류가 나타나면 아래의 명령어 실행 후 도커 이미지 생성 진행
export LC_ALL="en_US.UTF-8"
# 도커 이미지 생성
make docker-compose-build
# 도커 이미지 확인
(ansible) [ansible@localhost awx]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/awx/awx_devel HEAD ccc9a77a5548 About a minute ago 1.63GB
## 22.1.0
(ansible) [ansible@jslim236 awx]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ghcr.io/ansible/awx_devel HEAD 6bb723e2ce5f 13 seconds ago 1.76GB
# 컨테이너 생성
make docker-compose COMPOSE_UP_OPTS=-d
# 컨테이너 로그 확인
docker logs -f tools_awx_1
Operations to perform:
Apply all migrations: auth, conf, contenttypes, main, oauth2_provider, sessions, sites, social_django, sso, taggit
Running migrations:
Applying contenttypes.0001_initial... OK
Applying contenttypes.0002_remove_content_type_name... OK
~~ (생략) ~~
Applying sso.0002_expand_provider_options... OK
Superuser created successfully.
Admin password: 0Exz8Y9qKL2zCRac
# UI 초기화
docker exec tools_awx_1 make clean-ui ui-devel
AWX 접속
- http 포트 : TCP 8013
- https 포트 : TCP 8043
프로젝트 동기화 시 에러 발생하는 경우 해결 방법
- CentOS 7에서 docker 환경으로 AWX 22.1.0 을 설치했으며, 프로젝트를 생성하여 github와 동기화 중 아래의 에러 메시지와 함께 실패함
- 사용자 네임스페이스 활성화 (여기서는 podman 공식 문서에 맞게 설정함)
# root 계정으로 진행
cat /proc/sys/user/max_user_namespaces
0
vi /etc/sysctl.conf
user.max_user_namespaces = 15000
sysctl -p
cat /proc/sys/user/max_user_namespaces
15000
- 아래와 같이 동기화가 성공하는 것을 볼 수 있다.
참고자료
Docker Compose for Development