Ansible?

데브옵스 도구

여러 개의 서버를 효율적으로 관리할 수 있게 해주는 환경 구성 자동화 도구입니다.

앤서블은 플레이북 이라는 곳에 실행할 구성을 선언해 놓으면, 필요할 때 마다 자동으로 실행 시킬 수 있는 것이 가장 큰 특징입니다.

웹서버의 구성과, DB서버의 구성을 선언해 놓으면 관리자들은 필요할 때마다 그 구성대로 서버의 설정을 베포 할 수 있습니다.

 

DevOps란?

기존의 폭포수 모델과 데브옵스 개발방식

개발(development)과 운영(operations)의 합성어로 개발팀과 IT 운영팀의 작업에 대한 공유 방식를 뜻합니다. 

기존의 오랜시간이 소요되는 프로그램 출시/운영과정을 빠르게 순환적으로 적용하여 배포하는 것입니다.

 

<장점>

1. 개발팀과 운영팀간의 의사소통 증가로 생산성 증대

2. 한 곳에서 개발부터 검증, 배포까지 전체를 담당하게 되어 개발과 배포 속도가 빨라짐

3. 구성원에게 개발 책임감과 코드의 소유권을 높여줘 개발 프로세스 간소화

 

<단점>

1. 다양한 팀이 모여 업무 역할이 변경되기 때문에 활성화되기 위해서는 충분한 시간이 필요

2. 코드를 자주 배포할 필요가 없다면 비용만 늘어남

3. 포괄적인 자동화 도구가 필요함

 

구성관리를 도와주는 도구는 앤서블 외에도 퍼펫(Puppet), 셰프(Chef), 솔트(Salt) 등이 있지만 앤서블은 Agent 설치가 필요없고, 쉽게 배우고 쓸 수 있다는 큰 장점때문에 인기를 얻고 있습니다.

 

앤서블의 3가지 요소

앤서블은 크게 3가지인 인벤토리, 플레이북, 모듈로 이루어져있습니다.

인벤토리는 어디서 수행 할 것인지?

플레이북은 무엇을 수행 할 것인지?

모듈은 어떻게 수행할 것 인지? 를 정의합니다.

 

인벤토리(Inventory)

/etc/ansible/hosts 에 위치하고 있습니다.

앤서블을 통해서 명령이 실행되는 목적지 노드들의 정보를 담고 있습니다.

 

플레이북(Playbook)

인벤토리 파일에서 정의한 대상들이 무엇을 수행할 것인지 정의하는 역할을하며, yaml 포맷으로 설정합니다. 앤서블을 사용하려면 이 playbook을 잘 다룰줄알아야하며, 단독으로 사용되는 것이 아닌 인벤터리와 플레이북의 조합으로 같이 사용합니다. 플레이북 yaml 파일의 예시는 아래와 같습니다.

모듈(Module)

모듈은 플레이북에서 task가 어떻게 수행될지를 정의하는 요소입니다.

 

타겟 호스트로 실제 작업을 처리하는 단위로 이 Module이라는 개념을 사용합니다. 앤서블은 Python Code를 호출하여 실행하기 때문에 Python이 필수적으로 필요하며, 실제로 앤서블을 설치해보면 다양한 모듈이 같이 설치되는 것을 볼 수가 있습니다. 

yum sysctl systemd copy git docker_container ... 등. 예를 들어 yum 명령어를 통해 패키지를 설치할때 yum 모듈을 사용하면 되며 위 플레이북 예시에서 yum 부분이 yum 모듈을 정의하고 이를 사용하겠다는 의미 입니다.

 

앤서블의 다양한 모듈정보 

https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html

 

All modules — Ansible Documentation

 

docs.ansible.com

 

앤서블의 특징

No Agent : 에이전트가 없는 구조

설치하는 단계를 거치지 않고, 필요로 하는 대상에 즉각적으로 사용이 가능합니다. -> 에이전트 설치로 인한 보안 이슈 저하

파일을 전송 (SSH/WinRM)하고, 실행(Python)한 이후에 삭제하는 단계를 거치기 때문에 예상동작을 설계/구현 할수 있습니다.

 

팀간 협업의 극대화

플레이북은 개발팀뿐만 아니라, 운영/관리팀 또한 쉽게 이해할 수 있는 YAML 코드로 작성되어 접근성이 좋습니다.

 

다양한 운영체제를 통합 관리

거의 모든 OS를 구성 관리할 수 있을 뿐만 아니라, 응용프로그램의 세부구성을 모두 통합관리 할 수 있습니다.

 

높은 보안과 신뢰성

사용자의 환경에 따라 접속 정보들을 변경할 수 있고, 주요 파일들을 암호화하여 보호할 수 있습니다.

멱등성 (Idempotence)

멱등성이란 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다.

앤서블은 같은 코드를 여러번 실행하더라도 결과가 항상 동일합니다.

 

다양한 모듈 지원

매우 많고 다양한 모듈을 제공하기 때문에, 원하는 거의 모든 작업을 할 수 있습니다.

또한 플러그인을 통해서 연결방법 지정, 작업시간 표시, 에러 디버그 등의 추가적인 기능도 제공합니다.

 

 

'IT > Ansible' 카테고리의 다른 글

[Ansible] ansible-vault 사용법, ansible 암호화  (0) 2023.01.10
[Ansible] 플레이북  (0) 2023.01.10
복사했습니다!