일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Google Cloud
- Cloud Spanner
- Solution Architect
- Cloud SQL
- kubernetes
- container
- 아마존웹서비스
- 리버스 프록시
- ansible
- AWS Database
- AWS
- AWS Solution Architect
- 앤서블
- Google Cloud Platform
- Amazon Web Service
- Kubernetes Engine
- GKE
- AWS 자격증
- playbook
- Google Cloud Platorm
- Compute Engine
- Cloud Storage
- Cloud Datastore
- gcp
- Reverse Proxy
- Solution Architect Certificate
- AWS Certificate
- Google Cloud Platrofm
- VPC
- Cloud Bigtable
- Today
- Total
sungwony
[Ansible] Ansible(앤서블)이란 무엇인가? 본문
이 포스팅은 Ansible (Software) Wikipedia를 기반으로 번역과 정리를 하여 포스팅 한 글입니다.
Ansible(앤서블)이란?
앤서블은 오픈소스 소프트웨어로 프로비저닝(provisioning), 설정 관리(configuration management), 어플리케이션 배포(application-deployment) 도구이다. 많은 유닉스 계열의 시스템에서 동작하며 유닉스 계열 시스템과 MS 윈도우를 모두 구성할 수 있다. 또한 앤서블은 시스템 구성을 설명하는 자체 선언적 언어(declarative language)를 갖는다.
앤서블은 Michael DeHann에 의해 작성되었고 Red Hat이 이를 2015년에 인수하였다. 에이전트 없이 SSH 또는 원격 파워쉘(Power Shell)을 통해 일시적으로 원격 접속하여 작업을 수행할 수 있다.
Ansible Architecture
대부분의 설정 관리(configuration-management) 소프트웨어와 다르게 앤서블은 오케스트레이션이 시작되는 단일 제어 시스템을 필요로 하지 않는다. 앤서블은 편집 가능한 ASCII 텍스트 파일로 저장된 앤서블 인벤토리의 일부를 선택하여 이용자 인프라의 다중 시스템에 대응한다. 이 인벤토리를 구성할 수 있을 뿐만 아니라 여러 인벤토리 파일을 동시에 사용할 수 있으며 다이나믹 또는 클라우드 소스 또는 다른 포맷(YAML, INI)으로 부터 인벤토리를 가져올 수 있다. 앤서블 유틸리티가 설치된 머신은 파일/디렉토리를 활용하여 다른 노드를 조성할 수 있으며 중앙 서버의 요구사항이 없기 때문에 재난 복구 계획이 크게 간소화된다. 노드는 일반적으로 SSH 연결을 통해 이 제어 머신에 의해 관리된다. 제어 머신은 노드들의 위치를 인벤토리를 통해 설명한다. 민감한 데이터는 앤서블 Vault(since 2014)를 통해 암호화된 파일에 저장할 수 있다. 다른 잘 알려진 설정 관리 소프트웨어(Chef, Puppet, CFEngine 등)와는 대조적으로 앤서블은 에이전트가 없는(agentless) 아키텍처를 사용하며 엔서블 소프트웨어는 실행되지 않거나 제어된 노드에서 설치되지 않는다. 대신 앤서블은 SSH 연결을 통해 하나의 노드에 일시적으로 설치되고 실행하여 노드를 조정한다. 오케스트레이션 작업을 진행하는 동안 모듈을 실행하는 프로세스는 표준 입출력을 통해 제어 시스템과 JSON 기반으로 통신한다. 앤서블이 노드를 관리하지 않을 때 설치된 데몬이 실행중이지 않기 때문에 노드의 자원을 소비하지 않는다.
Ansible의 디자인 목표(Design Goal)
엔서블의 디자인 목표는 다음과 같다.
- Minimal in nature. 관리 시스템은 환경에 추가적인 의존성을 부여해선 안된다.
- Consistent. 앤서블을 사용하여 일관된 환경을 구성할 수 있어야 한다.
- Secure. 앤서블은 노드에 에이전트를 배포하지 않는다. 관리중인 노드에는 파이썬과 OpenSSH만이 필요하다.
- Highly reliable. 신중하게 작성할 때 엔서블 playbook은 관리 시스템의 예상치 못한 부작용을 관리할 수 있다. 반대도 가능하다.
- Minimal learning required. playbook은 YAML과 Jinja template에 기반한 쉽고 선언적인 언어를 사용한다.
Ansible Module
모듈은 대부분 독립형(standalone)이며 표준 스크립팅 언어(Python, Perl, Ruby, Bash 등)로 쓸 수 있다. 모듈의 가이딩 프로퍼티 중 하나는 멱등성(idempotency)이며, 이는 작업을 여러 번 반복하더라도(정전 시 복구 시) 항상 시스템을 동일한 상태로 배치한다는 것을 의미한다.
Playbooks
playbook은 설정과 배포, 조성을 앤서블로 표현하고, 앤서블이 관리되는 노드에서 작업을 수행할 수 있도록 하는 YAML 파일이다. 각 playbook은 호스트 그룹을 역할 집합에 맵핑한다. 각 역할은 앤서블 테스크에 대한 호출로 대표된다.