RH294 교재를 보다가, 첫 실습에서 실행 환경(Execution Environment)가 나옵니다. 그러나 별 다른 설명이 없습니다. 메뉴얼 내용 정리해 봅니다.
Ansible Execution Environments실행 환경은 복잡성 문제를 해결하고 컨테이너화를 통해 얻을 수 있는 모든 이점을 제공하는 것을 목표로 합니다.
복잡성 줄이기
EE가 복잡성을 줄일 수 있는 세 가지 주요 영역이 있습니다:
- 소프트웨어 종속성
- 이식성
- 콘텐츠 분리
종속성
소프트웨어 애플리케이션에는 일반적으로 종속성이 있으며 Ansible도 예외는 아닙니다. 이러한 종속성에는 소프트웨어 라이브러리, 구성 파일 또는 기타 서비스 등이 포함될 수 있습니다.
일반적으로 관리자는 RPM 또는 Python-pip과 같은 패키징 관리 도구를 사용하여 운영 체제 위에 애플리케이션 종속성을 설치합니다.
이러한 접근 방식의 가장 큰 단점은 애플리케이션에 기본적으로 제공되는 것과 다른 버전의 종속성이 필요할 수 있다는 것입니다.
Ansible의 경우, 일반적인 설치는 ansible-core와 Ansible collection 집합으로 구성됩니다. 이들 중 다수는 제공하는 플러그인, 모듈, 역할 및 플레이북에 대한 종속성을 가지고 있습니다.
Ansible collection은 다음 소프트웨어 및 해당 버전에 따라 달라질 수 있습니다:
- ansible-core
- Python
- Python 패키지
- 시스템 패키지
- 기타 Ansible collection
종속성을 설치해야 하며 때로는 서로 충돌할 수 있습니다.
종속성 문제를 부분적으로 해결하는 한 가지 방법은 Ansible 제어 노드에서 Python 가상 환경을 사용하는 것입니다. 그러나 Ansible에 적용되는 가상 환경에는 단점과 자연스러운 제한이 있습니다.
이식성
Ansible 사용자는 로컬에서 Ansible용 콘텐츠를 작성하고 컨테이너 기술을 활용하여 자동화 런타임을 이식 및 공유할 수 있고 테스트 및 프로덕션 환경에 쉽게 배포할 수 있기를 원합니다.
콘텐츠 분리
여러 사용자가 사용하는 Ansible 제어 노드 또는 Ansible AWX/Controller와 같은 도구가 있는 경우 구성 및 종속성 충돌을 피하기 위해 콘텐츠를 분리하려고 할 수 있습니다.
EE를 위한 Ansible 도구
Ansible 에코시스템의 프로젝트는 다음과 같이 EE와 함께 사용할 수 있는 여러 도구도 제공합니다:
- Ansible Builder
- Ansible Navigator
- Ansible AWX
- Ansible Runner
- VS Code Ansible 과 Dev Containers extensions