개요
이전에 설명한 바와 같이 Ansible은 Python과 밀접한 관계가 있으면 Python 버전에 따라 설치 및 호환이 된다.
CentOS 7에서 사용할 수 있는 가장 높은 버전의 파이썬은 3.6.8이며, 이에 호환이 되는 가장 높은 버전의 ansible은 4.10.0 이다.
- 컨트롤 노드의 파이썬 3.6 일 경우 Ansible-core는 2.11 까지 설치 가능
- Ansible-core가 2.11인 Ansible 커뮤니티 릴리즈 버전은 4.x 버전
- 커뮤니티 릴리즈 중 4.x의 최신 버전은 4.10.0 이다.
만약 이보다 더 높은 버전의 ansible을 사용해야 한다면 어떻게 해야할까?
예를들어 7.5.0 버전을 설치해야 할 경우 필요한 파이썬 버전은 어떻게 될까?
- 커뮤니티 릴리즈 7.x에서 사용하는 Ansible-core 는 2.14
- Ansible-core 2.14에서 필요로 하는 파이썬 버전은 3.9 이상
- 따라서 파이썬 3.9 이상의 버전을 설치해야 Ansible 7.5.0을 설치할 수 있다.
파이썬 3.9 설치하기
하지만 CentOS 7에서 yum으로 설치할 수 있는 최대 버전은 3.6.8이다.
이 경우 파이썬 3.9 버전의 소스 코드를 다운로드 받아 컴파일 설치를 진행해야 한다.
다만 여기서 주의해야 할 점이 있다.
- yum으로 설치한 파이썬 3.6.8 뿐만 아니라 기존에 사용하는 파이썬 2.x 는 서로의 환경이 서로 독립되어 있다.
- CentOS 내부적으로나 기본이 되는 패키지들 (ex : OpenSSL)이 기존에 설치한 파이썬 2.x에 의존하여 사용되고 있기 때문이다.
- 마찬가지로 현재 설치하고자 하는 파이썬 3.9도 이들과 전혀 관계없는 독립된 환경에 설치를 해줘야 한다.
- 여기서는 Ansible 설치를 위한 파이썬 3.9 버전 설치이므로, ansible 계정을 따로 생성하고 해당 계정에서만 동작하도록 할 것이다.
# root 계정에서 실행 (의존성 패키지 설치)
yum install -y gcc zlib-devel openssl openssl-devel libffi-devel
# 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
# ansible 계정에서 실행 (su - ansible)
# pip 설치
wget https://bootstrap.pypa.io/get-pip.py
/home/ansible/package/Python-3.9.16/bin/python3 ./get-pip.py
virtualenv 설치
# ansible 계정에서 실행
cd /home/ansible/package/Python-3.9.16/bin
./pip3 install virtualenv
./pip3 install virtualenvwrapper
# vi로 아래의 내용 2줄을 맨 아래에 삽입후 저장
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로 아래의 내용 3줄을 맨 아래에 삽입 후 저장
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 설치
# ansible 계정에서 실행
pip install ansible==7.5.0