새소식

⇥ DevOps Tech 🙋🏻‍♀️/✏️ Ansible

Ansible Tower (AWX) 설치 방법

  • -
반응형

Ansible Tower 는 17.1.0 까지의 Docker Version 과 k3s 를 지원하는 이후의 버전으로 나뉜다.
실제 사용해본 바로 k3s 버전은 서비스 배포 시 pod 를 생성하여 각 job 을 진행하기 때문에 고사양 서버에서 운영할 것이 아니라면 docker Version 이 좀 더 좋은 선택이라고 생각한다. (실제 쿠버네티스에서 사용할거면 이거를 굳이..?)

 

requirement

Ansible Tower 설치 시 필요로 하는 라이브러리 버전은 설치할 때 사용한 버전을 명시하였다.
내 기억으로 docker, ansible 은 패키지 관리자로 그냥 설치하면 되는데 Python은 버전이 낮으면 정상 동작되지 않았던 것으로 기억함.
3.8 이상의 버전으로 설치하는 것을 추천한다.

docker (20.10.7)
Python (3.8.12)
ansible (2.9.23)

 

OS, Docker Version

OS 버전 과 Docker Version 도 변경됨에 따라 단순히 제공 중인 상태로 설치했을 때 아래의 문제가 발생했었다.

Postgres container failed to start with initdb error. popen failure: Cannot allocate memory 
docker redis:6.0 run error: Fatal: Can't initialize Background Jobs

내부에서 사용중인 redis, postgresql 이미지가 조금씩 변경되면서 지원하지 않기 때문이었는데 만약 해당 에러가 발생한다면 설치 과정에서 이미지 수정 단계를 해주면 된다. 

 

Git Clone

mkdir work
 
cd work
 
git clone -b 17.1.0 https://github.com/Ansible/awx.git

앞에서 이야기 했듯 docker Version 의 가장 최신 버전인 17.1.0 을 지정하여 Clone 한다. 경로는 /work 에 설치해주었다.
docker 를 사용하여 설치하기 때문에 root 권한 혹은 docker 를 사용할 수 있는 유저로 설치해주어야 한다.

 

Modify Image

cd /work/awx/installer/roles/local_docker/defaults
 
vi main.yml
 
### image 수정
 
awx_image: "awx"
redis_image: "redis:6.2.11"
 
postgresql_version: "12"
postgresql_image: "postgres:{{postgresql_version}}-bullseye"
 
###

앞에서 이야기 했던 에러가 발생하지 않는다면 해당 단계는 skip 해도 된다. 
redis 버전을 6.2.11 로 고정해주고, postgresql 은 bullseye 이미지로 변경해주면 설치할 때 앞의 에러가 발생하지 않는다.

 

Modify Inventory

cd /work/awx/installer
 
vi inventory
 
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python3"
 
[all:vars]
dockerhub_base=ansible
docker_logger=journald
 
awx_task_hostname=awx
awx_web_hostname=awxweb
 
# host port 를 작성
host_port=80
host_port_ssl=443
 
# postgresql 계정 정보 설정
pg_username=postgres
pg_password=DB비밀번호
pg_database=awx
pg_port=5432
pg_admin_password=DBADMIN비밀번호
 
# awxweb 계정 정보
admin_user=root
admin_password=root
 
create_preload_data=True
secret_key=secretkey
awx_official=false
 
custom_venv_dir=/home/root/awx-dev
docker_compose_subnet="docker subnet"
docker_logger=journald

# ansible 설치 경로
postgres_data_dir="/awx/data/docker-postgres"
docker_compose_dir="/awx/data/docker-compose"
project_data_dir=/awx/project/

필요한 부분만 챙겨서 Inventory 로 작성해준다. 접속할 web port , db , web 계정과 데이터 적재 경로 등을 지정해줄 수 있다.

 

Install

설정이 완료되었다면 아래 명령어로 설치를 진행해주면 된다.

cd /work/awx/installer

ansible-playbook -i inventory install.yml

# docker ps -a
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                   NAMES
a12f1464852f   ansible/awx:17.1.0     "/usr/bin/tini -- /u…"   16 minutes ago   Up 16 minutes   8052/tcp                                awx_task
e5c7a0fc424e   ansible/awx:17.1.0     "/usr/bin/tini -- /b…"   16 minutes ago   Up 16 minutes   0.0.0.0:90->8052/tcp, :::90->8052/tcp   awx_web
00f53d0b179a   postgres:12-bullseye   "docker-entrypoint.s…"   16 minutes ago   Up 16 minutes   5432/tcp                                awx_postgres
014046fd4ee7   redis:6.2.11           "docker-entrypoint.s…"   16 minutes ago   Up 16 minutes   6379/tcp                                awx_redis

정상적으로 설치가 완료되었다면 ansible task, ansible web, postgresql, redis 4개의 컨테이너가 정상 기동되어야 한다.

 

설치한 host 장비의 ip로 접속해보면 정상적으로 접속되는 것을 확인할 수 있다.

반응형

'⇥ DevOps Tech 🙋🏻‍♀️ > ✏️ Ansible' 카테고리의 다른 글

Ansible Role 을 이용한 노드 설치 자동화  (59) 2023.10.20
Ansible Role 작성 방법  (0) 2023.10.18
Ansible Playbook  (0) 2022.10.06
Ansible 사용 방법  (4) 2022.09.26
Ansible 입문  (1) 2022.09.26
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.