[인프라] Ansible

2juhyunju ㅣ 2022. 10. 19. 19:48

Ansible 이란

Ansible은 오픈소스 IT 자동화 도구입니다. Ansible을 사용하여 시스템을 구성하고, 소프트웨어를 배포하고, 지속적인 배포와 다운타임이 없는 롤링 업데이트와 같은 향상된 IT 작업들으르 조율할 수 있다.


아키텍처

Ansible의 아키텍처에서 시스템 유형으로 컨트롤 머신과 관리 노드가 있다. 컨트롤 머신에 Ansible이 설치되며, 관리 노드들은 컨트롤 머신에 의해 유지되거나 관리됨 관리 노드들은 인벤토리 파일에 나열되어야 하며, 여기에는 호스트이름 또는 IP 주소로 저장된다. 또한 인벤토리에 각 관리 노드들의 기능별로 그룹화 시켜서 저장도 가능하다. 시스템 관리자는 컨트롤 머신에 로그인하여 플레이북 또는 원격 전송 명령을 사용하여 관리 노드를 제어 할 수 있고 컨트롤 머신은 기본적으로 SSH를 사용하여 관리 노드와 통신한다. 플레이북에서 참조한 모듈은 관리 노드에 복사되며, 관리 노드에서 실행되며
이 때 사용되는 모듈의 종류로는 코어(core) 모듈과, 사용자 지정 모듈 등이 있다.


용어

  • 컨트롤 머신 (또는 제어 노드, 엔시블 호스트, 제어 호스트 등) : 시스템 관리자는 컨트롤 머신에 Ansible을 설치하고 원격으로 관리 노드들을 제어한다. 컨트롤 머신은 제어 노드, Ansible 호스트,제어 호스트 등의 단어와 함께 사용되지만 여기에서는 컨트롤 머신으로 사용
  • 관리 노드 (관리 호스트, 원격 노드) : 관리 노드는 컨트롤 머신에서 접근하여 모듈을 설치하고, 원격의 명령을 실행 하는 작업을 수행하는 시스템.
  • 연결 플로그인 : 연결 플로그인은 컨트롤 머신이 관리 노드에 원격으로 연결할 때 사용하는 방법 기본 설정으로 SSH를 사용하며, 추가로 localhost, paramiko 등이 있다.
  • 인벤토리 : 인벤토리는 호스트가 속해 있는 그룹을 정의 인벤토리에서 컨트롤 머신이 관리 노드와 통신하는 방법도 정의 할 수 있으며 호스트 및 그룹 변수까지 지정할 수 있다. 인벤토리에는 호스트 이름 또는 IP 주소를 사용하여 등록할 수 있는데 이 때 호스트이름을 사용할 때에는 그 호스트이름으로 통신할 수 있어야 한다. 만약 이 호스트이름으로 통신할 수 없으면 DNS 서버에 대한 설정, 도메인네임 등록 그리고 hosts 파일 등을 확인
  • 모듈 : 모듈은 관리 노드에서 실행되는 명령들과 같으며, 컨트롤 머신에 존재하는 모듈이 관리 노드에 복사되어 관리 노드에서 실행
  • 작업: 모듈의 집합.
  • 플레이북 : 플레이북은 관리 노드에서 실행할 모듈을 인자화 함께 정의한 파일 이 파일은 YAML로 작성되며 Ansible의 핵심이라고 볼 수 있다. 플레이북은 여러 개의 플레이(hosts)라는 단위로 나뉠 수 있다.