Ansible 설치하기
Ansible 설치하기 (Installing Ansible)
Ansible은 단일 호스트(컨트롤 노드)에 설치하는 에이전트 없는(agentless) 자동화 도구예요. 컨트롤 노드에서 SSH, Powershell remoting, 그리고 다양한 전송 방식으로 전체 머신과 장치(관리 노드)를 원격으로 관리할 수 있어요 — 데이터베이스나 데몬 없이도 단순한 명령줄 인터페이스만으로 가능해요. 이 글에서는 컨트롤/관리 노드 요구사항과 함께 pipx·pip로 설치·업그레이드하는 방법을 자세히 살펴볼게요.
출처: 문서
본문
컨트롤 노드 요구사항
컨트롤 노드(Ansible을 실행하는 머신)로는 Python이 설치된 거의 모든 UNIX 계열 머신을 사용할 수 있어요. Red Hat, Debian, Ubuntu, macOS, BSD, 그리고 WSL(Windows Subsystem for Linux) 배포판 아래의 Windows가 포함돼요. WSL이 없는 Windows는 컨트롤 노드로 기본 지원되지 않아요; 자세한 내용은 Matt Davis의 블로그 글을 참고하세요.
관리 노드 요구사항
관리 노드(Ansible이 관리하는 머신)에는 Ansible이 설치될 필요는 없지만, Ansible이 생성한 Python 코드를 실행하려면 Python이 필요해요. 관리 노드에는 또한 대화형 POSIX 셸로 SSH를 통해 접속할 수 있는 사용자 계정이 필요해요.
Note 모듈 요구사항에는 예외가 있을 수 있어요. 예를 들어 네트워크 모듈은 관리 장치에 Python을 요구하지 않아요. 사용하는 모듈의 문서를 참고하세요.
노드 요구사항 요약
각 Ansible 버전의 컨트롤/관리 노드 요구사항(버전 포함)의 자세한 내용은 ansible-core control node Python support와 ansible-core support matrix 섹션에서 찾을 수 있어요.
설치할 Ansible 패키지와 버전 선택
Ansible의 커뮤니티 패키지는 두 가지 방식으로 배포돼요:
ansible-core: 일련의 내장 모듈과 플러그인을 포함하는 최소한의 언어·런타임 패키지예요.ansible: 훨씬 큰 "batteries included" 패키지로, 다양한 장치 자동화를 위한 커뮤니티 큐레이션 Ansible Collections를 추가해요.
필요에 맞는 패키지를 선택하세요. 다음 지침은 패키지 이름으로 ansible을 사용하지만, 최소 패키지로 시작해 필요한 Ansible Collections만 따로 설치하고 싶다면 ansible-core로 대체해도 돼요.
ansible 또는 ansible-core 패키지는 운영체제의 패키지 관리자에서 사용할 수 있을 수 있으며, 선호하는 방법으로 설치해도 자유예요. 자세한 내용은 "Installing Ansible on specific operating systems" 가이드를 참고하세요. 이 설치 지침은 pip로 파이썬 패키지를 설치하는 공식 지원 방법만 다뤄요. 패키지에 포함된 ansible-core 버전은 "Ansible package release status" 표를 보세요.
pipx로 Ansible 설치·업그레이드하기
일부 시스템에서는 운영체제 개발자의 결정 때문에 pip로 Ansible을 설치하지 못할 수 있어요. 그런 경우 pipx가 널리 쓰이는 대안이에요. 여기서는 pipx 설치 단계를 다루지 않아요; 그 지침이 필요하다면 pipx 설치 지침을 참고하세요.
Ansible 설치
환경에서 pipx를 사용해 전체 Ansible 패키지를 설치해요:
$ pipx install --include-deps ansible
최소한의 ansible-core 패키지를 설치할 수도 있어요:
$ pipx install ansible-core
또는 특정 버전의 ansible-core를 설치할 수도 있어요:
$ pipx install ansible-core==2.12.3
Ansible 업그레이드
기존 Ansible 설치를 최신 릴리스 버전으로 업그레이드하려면:
$ pipx upgrade --include-injected ansible
추가 Python 의존성 설치
필요할 수 있는 추가 파이썬 의존성을 설치하려면, 예를 들어 argcomplete 파이썬 패키지를 설치하는 경우:
$ pipx inject ansible argcomplete
추가 파이썬 의존성의 앱을 PATH에서 사용할 수 있게 하려면 --include-apps 옵션을 포함하세요. 그러면 셸에서 해당 앱의 명령을 실행할 수 있어요.
$ pipx inject --include-apps ansible argcomplete
요구사항 파일에서 의존성을 설치해야 한다면, 예를 들어 Azure 컬렉션을 설치할 때, runpip를 사용할 수 있어요.
$ pipx runpip ansible install -r ~/.ansible/collections/ansible_collections/azure/azcollection/requirements.txt
pip로 Ansible 설치·업그레이드하기
Python 찾기
Ansible을 실행하는 데 사용할 Python 인터프리터의 경로를 찾아 기억해 두세요. 다음 지침에서는 이 Python을 python3이라고 부를게요. 예를 들어 /usr/bin/python3.9에 있는 Python을 Ansible을 설치할 대상으로 정했다면, python3 대신 그 경로를 지정하세요.
pip가 있는지 확인
선호하는 Python에 pip가 이미 설치되어 있는지 확인하려면:
$ python3 -m pip -V
모두 정상이라면 다음과 같은 출력을 볼 수 있어요:
$ python3 -m pip -V
pip 21.0.1 from /usr/lib/python3.9/site-packages/pip (python 3.9)
그렇다면 pip를 사용할 수 있으니 다음 단계로 넘어가면 돼요. No module named pip 같은 오류가 보이면, 진행하기 전에 선택한 Python 인터프리터 아래에 pip를 설치해야 해요. 이는 추가 OS 패키지(예: python3-pip) 설치나, Python Packaging Authority에서 최신 pip를 직접 설치하는 방법이 있어요:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python3 get-pip.py --user
Ansible을 실행하기 전에 추가 설정이 필요할 수도 있어요. 사용자 사이트에 설치하는 방법에 대한 Python 문서를 참고하세요.
Ansible 설치
선택한 Python 환경에서 pip를 사용해 현재 사용자용으로 전체 Ansible 패키지를 설치해요:
$ python3 -m pip install --user ansible
현재 사용자용으로 최소한의 ansible-core 패키지를 설치할 수도 있어요:
$ python3 -m pip install --user ansible-core
또는 특정 버전의 ansible-core를 설치할 수도 있어요:
$ python3 -m pip install --user ansible-core==2.12.3
Ansible 업그레이드
이 Python 환경의 기존 Ansible 설치를 최신 릴리스 버전으로 업그레이드하려면, 위 명령에 --upgrade만 추가하면 돼요:
$ python3 -m pip install --upgrade --user ansible
컨테이너에 Ansible 설치
Ansible 콘텐츠를 수동으로 설치하는 대신, 실행 환경(execution environment) 컨테이너 이미지를 직접 빌드하거나 사용 가능한 커뮤니티 이미지 중 하나를 컨트롤 노드로 사용할 수 있어요. 자세한 내용은 "Getting started with Execution Environments"를 참고하세요.
개발용 설치
새 기능을 테스트하거나, 버그를 고치거나, 코어 코드 변경 작업에 참여한다면 GitHub에서 소스를 설치하고 실행할 수 있어요.
Note
devel브랜치는ansible-core를 수정하거나 개발 중인 기능을 시험해 볼 때만 설치·실행해야 해요. 이는 빠르게 변하는 코드 소스라 언제든 불안정해질 수 있어요.
Ansible 프로젝트 참여에 대한 자세한 내용은 Ansible Community Guide를, Ansible 모듈과 Collections 만드는 법은 Developer Guide를 참고하세요.
pip로 GitHub에서 devel 설치
pip로 GitHub에서 직접 ansible-core의 devel 브랜치를 설치할 수 있어요:
$ python3 -m pip install --user https://github.com/ansible/ansible/archive/devel.tar.gz
위 URL의 devel을 GitHub의 다른 브랜치나 태그로 바꾸면, 이전 버전의 Ansible이나 alpha·beta 태그, 릴리스 후보를 설치할 수 있어요.
클론에서 devel 브랜치 실행
ansible-core는 소스에서 쉽게 실행할 수 있어요. 루트 권한이 필요하지 않고 실제로 설치할 소프트웨어도 없어요. 데몬이나 데이터베이스 설정도 필요하지 않아요.
ansible-core저장소를 클론해요.
$ git clone https://github.com/ansible/ansible.git
$ cd ./ansible
- Ansible 환경을 설정해요.
Bash를 사용하는 경우:
$ source ./hacking/env-setup
Fish를 사용하는 경우:
$ source ./hacking/env-setup.fish
가짜 경고/오류를 억제하려면 -q를 사용해요:
$ source ./hacking/env-setup -q
- Python 의존성을 설치해요.
$ python3 -m pip install --user -r ./requirements.txt
- 로컬 머신의
ansible-coredevel브랜치를 최신 상태로 갱신해요. 로컬 변경 사항이 재생되도록pull-with-rebase를 사용해요.
$ git pull --rebase
설치 확인
Ansible이 올바르게 설치되었는지 버전을 확인해 볼 수 있어요:
$ ansible --version
이 명령이 표시하는 버전은 설치된 관련 ansible-core 패키지의 버전이에요. 설치된 ansible 패키지의 버전을 확인하려면:
$ ansible-community --version
Ansible 명령 셸 완성 추가
argcomplete라는 선택적 의존성을 설치하면 Ansible 명령줄 유틸리티의 셸 완성을 추가할 수 있어요. bash를 지원하고 zsh, tcsh를 제한적으로 지원해요. 설치와 구성에 대한 자세한 내용은 argcomplete 문서를 참고하세요.
argcomplete 설치
pipx 설치 지침을 선택했다면:
$ pipx inject --include-apps ansible argcomplete
pip 설치 지침을 선택했다면:
$ python3 -m pip install --user argcomplete
argcomplete 구성
Ansible 명령줄 유틸리티의 셸 완성을 위해 argcomplete를 구성하는 방법은 전역(global) 또는 명령별(per command) 두 가지가 있어요.
전역 구성
전역 완성은 bash 4.2가 필요해요.
$ activate-global-python-argcomplete --user
이 명령은 bash 완성 파일을 사용자 위치에 씁니다. 위치를 바꾸려면 --dest를, 전역으로 설정하려면 sudo를 사용하세요.
명령별 구성
bash 4.2가 없다면 각 스크립트를 개별적으로 등록해야 해요.
$ eval $(register-python-argcomplete ansible)
$ eval $(register-python-argcomplete ansible-config)
$ eval $(register-python-argcomplete ansible-console)
$ eval $(register-python-argcomplete ansible-doc)
$ eval $(register-python-argcomplete ansible-galaxy)
$ eval $(register-python-argcomplete ansible-inventory)
$ eval $(register-python-argcomplete ansible-playbook)
$ eval $(register-python-argcomplete ansible-pull)
$ eval $(register-python-argcomplete ansible-vault)
위 명령을 ~/.profile 또는 ~/.bash_profile 같은 셸 프로필 파일에 넣어 두는 것이 좋아요.
zsh 또는 tcsh에서 argcomplete 사용
argcomplete 문서를 참고하세요.
더 알아보기 (Learn more)
- Introduction to ad hoc commands — 기본 명령 예시
- Working with playbooks — Ansible의 구성 관리 언어 배우기
- Forum — Ansible 커뮤니티 포럼에서 도움 얻고 통찰 공유하기
- Real-time chat — Ansible 채팅 채널 참여 방법