[Ansible] Install Ansible - 앤서블 설치
Red Hat Linux에서 ansible-core와 Ansible Community 패키지를 설치하고 버전 및 모듈/컬렉션 상태를 비교해보는 과정을 안내합니다.
Ansible 설치 개요
Ansible은 오픈소스 프로젝트로 누구나 자유롭게 설치하고 사용할 수 있는 자동화 도구입니다. 이번 글에서는 Red Hat Enterprise Linux에서 오픈소스 Ansible과 Red Hat이 공식 지원하는 Ansible 설치 방법을 살펴보겠습니다.
환경
- Redhat Enterprise Linux 8 이상
- ansible 8.4.0
- ansible-core 2.15.4
사전 요구사항
Ansible 8 및 ansible-core 2.15를 설치하기 위해서는 Python 3.9 이상의 버전이 필요합니다. Red Hat에서 Python 설치 방법은 별도 안내된 "파이썬 설치"를 참조하세요.
Ansible 버전 구분 및 개요
커뮤니티 기반 Ansible은 2.9 버전 이후로 크게 두 가지 방식으로 분리되었습니다.
-
ansible community package: 기존의 모든 모듈이 포함된 방식으로 배터리 포함(Batteries Included) 모델입니다.
-
ansible-core: 필수 모듈만 포함되어 가볍게 운영할 수 있으며, 최신 모듈은 컬렉션 형태로 개별 설치합니다.
이는 빠르게 변화하는 오픈소스 환경에서 더 유연한 구성이 가능하게 해줍니다. 각자의 목적에 맞게 적절한 방식으로 선택하여 설치하면 됩니다.
참고: https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html
Red Hat 기반 Ansible 설치
Red Hat은 두 가지 방식으로 Ansible을 제공합니다.
-
Red Hat Enterprise Linux에 포함된
ansible-core
-
구독 기반 제품인 AAP(Ansible Automation Platform)
그러므로 RHEL 사용자가 단순 ansible-core만 사용할 경우 별도의 AAP 구매 없이 사용할 수 있습니다. 설치를 위해서는 서브스크립션 또는 local repo 설정이 필요하며 RHEL 8.6 이상에서 RPM 패키지로 제공됩니다.
Local Repo설정 방법은 "로컬 레포 구축"을 참조하시면 됩니다.
- 설치
# dnf install ansible-core Updating Subscription Management repositories. Unable to read consumer identity This system is not registered with an entitlement server. You can use subscription-manager to register. OS 137 MB/s | 2.4 MB 00:00 APP 117 MB/s | 8.1 MB 00:00 Last metadata expiration check: 0:00:01 ago on Tue 03 Oct 2023 03:11:49 AM KST. Dependencies resolved. =========================================================================================================================================================================== Package Architecture Version Repository Size =========================================================================================================================================================================== Installing: ansible-core x86_64 2.14.2-3.el8 local-APP 3.4 M Installing dependencies: git-core x86_64 2.39.1-1.el8 local-APP 10 M mpdecimal x86_64 2.5.1-3.el8 local-APP 93 k python3.11 x86_64 ... Complete!
- 버전 확인
# ansible --version ansible [core 2.14.2] config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.11/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/bin/ansible python version = 3.11.2 (main, Feb 17 2023, 09:28:16) [GCC 8.5.0 20210514 (Red Hat 8.5.0-18)] (/usr/bin/python3.11) jinja version = 3.1.2 libyaml = True
커뮤니티 버전 앤서블 설치
커뮤니티 버전 Ansible은 다음 두 가지 구성으로 배포됩니다.
-
ansible-core
: 최소 기능만 포함된 버전 -
ansible
: 모든 모듈과 컬렉션이 포함된 풀 패키지
이 문서에서는 ansible-core
와 ansible
을 각각 설치하고, 설치 후 포함된 모듈 및 컬렉션 수를 비교합니다. 실무에서는 ansible-core
만 설치한 후 필요한 기능만 선택적으로 추가하는 방식을 권장합니다.
1. ansible-core 설치
ansible-core는 2.10 → 2.11 → 2.12 → 2.13 → 2.14 → 2.15 형식으로 업데이트되고 있으며 2023년 10월 기준 최신 버전은 2.15.4 버전입니다.
우선 Python 3.9 이상이 설치되어 있어야 하며, ansible-core 설치는 pip
를 이용해 다음과 같이 진행합니다.
# python3 --version Python 3.9.2
# python3 -m pip install --user ansible-core WARNING: Running pip install with root privileges is generally not a good idea. Try `python3 -m pip install --user` instead. ... WARNING: The scripts ansible, ansible-config, ansible-connection, ansible-console, ansible-doc, ansible-galaxy, ansible-inventory, ansible-playbook, ansible-pull and ansible-vault are installed in '/root/.local/bin' which is not on PATH. Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location. Successfully installed MarkupSafe-2.1.3 PyYAML-6.0.1 ansible-core-2.15.4 cffi-1.16.0 cryptography-41.0.4 importlib-resources-5.0.7 jinja2-3.1.2 packaging-23.2 pycparser-2.21 resolvelib-1.0.1
ansible-core가 설치 후에 WARNING 경고가 발생합니다. 설치 프로그램은 ansible 명령어를 “/root/.local/bin” 디렉터리에 저장했는데 PATH 환경 변수에 해당 디렉터리가 없으므로 시스템 전역 명령어로 사용할 수 없다는 에러입니다.
이는 PATH
설정 문제로 /root/.local/bin
을 환경 변수에 추가해야 해결됩니다.
PATH 환경 변수 설정
이 문제는 /etc/profile
파일에 다음 설정을 추가하여 해결할 수 있습니다.
# vim /etc/profile ... export PATH=/root/.local/bin:$PATH # su -
변경 후 su -
명령어로 셸을 재시작하면 설정이 적용됩니다.
PATH 환경 변수에 대한 자세한 내용은 "PATH 환경 변수" 내용을 참조하시면 됩니다.
설치 확인 및 모듈 조회
앤서블 버전 확인ansible-core 2.15.4 버전이 설치되었습니다. 설치가 정상적으로 완료되었는지 ansible --version
으로 확인할 수 있습니다.
# ansible --version ansible [core 2.15.4] config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /root/.local/lib/python3.9/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /root/.local/bin/ansible python version = 3.9.2 (default, Mar 10 2021, 17:29:56) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] (/usr/bin/python3) jinja version = 3.1.2 libyaml = True
기본적으로 포함된 모듈을 확인하려면 아래 명령어를 사용합니다, 70개 정도의 모듈이 검색됩니다.
# ansible-doc -l ansible.builtin.add_host Add a host (and alternatively a grou... ansible.builtin.apt Manages apt-packages ansible.builtin.apt_key Add or remove an apt key ansible.builtin.apt_repository Add and remove APT repositories ansible.builtin.assemble Assemble configuration files from fr... ansible.builtin.assert Asserts given expressions are true ansible.builtin.async_status Obtain status of asynchronous task ansible.builtin.blockinfile Insert/update/remove a text block su... ansible.builtin.command Execute commands on targets ... # ansible-doc -l | wc -l 74
컬렉션 설치 및 확인
ansible-core에는 기본 컬렉션이 포함되지 않기 때문에, 필요한 컬렉션을 수동으로 설치해야 합니다. 예를 들어 AWS 관련 작업을 위해서는 다음과 같이 설치할 수 있습니다.
# ansible-galaxy collection install amazon.aws Starting galaxy collection install process Process install dependency map Starting collection install process Downloading <https://galaxy.ansible.com/api/v3/plugin/ansible/content/published/collections/artifacts/amazon-aws-6.4.0.tar.gz> to /root/.ansible/tmp/ansible-local-496422ahknfhn/tmpyu6nfmhi/amazon-aws-6.4.0-_6oq5k3y Installing 'amazon.aws:6.4.0' to '/root/.ansible/collections/ansible_collections/amazon/aws' amazon.aws:6.4.0 was installed successfully
설치 후 아래 명령어로 설치된 컬렉션 목록을 확인할 수 있습니다.
# ansible-galaxy collection list # /root/.ansible/collections/ansible_collections Collection Version ---------- ------- amazon.aws 6.4.0
2. Ansible Community Package 설치
Ansible 커뮤니티 패키지는 ansible-core 외에도 다양한 컬렉션과 모듈을 포함합니다. 설치는 다음 명령어로 진행할 수 있습니다.
# python3 --version Python 3.9.2
# python3 -m pip install --user ansible ... Installing collected packages: resolvelib, PyYAML, packaging, pycparser, cffi, cryptography, importlib-resources, MarkupSafe, jinja2, ansible-core, ansible Successfully installed MarkupSafe-2.1.3 PyYAML-6.0.1 ansible-8.4.0 ansible-core-2.15.4 cffi-1.16.0 cryptography-41.0.4 importlib-resources-5.0.7 jinja2-3.1.2 packaging-23.2 pycparser-2.21 resolvelib-1.0.1
ansible
과 ansible-core
가 함께 설치되었으며, ansible-community
명령어로 커뮤니티 버전 확인이 가능합니다. 또한 ansible 명령어를 통해 ansible-core 버전도 확인할 수 있습니다.
# ansible-community --version Ansible community version 8.4.0 # ansible --version ansible [core 2.15.4] config file = None configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.9/site-packages/ansible ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections executable location = /usr/local/bin/ansible python version = 3.9.2 (default, Mar 10 2021, 17:29:56) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] (/usr/bin/python3) jinja version = 3.1.2 libyaml = True
설치된 컬렉션 및 모듈 수 확인
커뮤니티 패키지로 설치한 ansible에는 100개 이상의 컬렉션과 8천 개 이상의 모듈이 포함되어 있는 것을 확인할 수 있습니다.
# ansible-galaxy collection list # /usr/local/lib/python3.9/site-packages/ansible_collections Collection Version ----------------------------- ------- amazon.aws 6.4.0 ansible.netcommon 5.2.0 ansible.posix 1.5.4 ansible.utils 2.11.0 ansible.windows 1.14.0 arista.eos 6.1.0 ... # ansible-galaxy collection list | wc -l 111
# ansible-doc -l amazon.aws.autoscaling_group Create or delete AWS Aut... amazon.aws.autoscaling_group_info Gather information about EC2 Auto Scalin... amazon.aws.aws_az_info Gather information about ava... ... # ansible-doc -l | wc -l 8266
마치며
레드햇에서 제공하는 ansible-core
, 커뮤니티에서 제공하는 ansible-core
, ansible
의 차이를 비교하며 설치 과정을 살펴보았습니다. 레드햇 서브스크립션이 있는 경우 공식 레포지토리에서 제공하는 RPM
패키지를 사용하는 것이 안정성과 지원 측면에서 유리합니다.
반면, 기술 지원이 필요 없는 테스트 환경이나 커스터마이징이 많은 운영 환경에서는 커뮤니티 패키지를 통해 최신 기능을 빠르게 반영하고 필요한 컬렉션만 선택적으로 설치하는 방식이 효율적입니다.
참조
https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html#id11
https://docs.ansible.com/ansible/latest/reference_appendices/release_and_maintenance.html
댓글
댓글 쓰기