-
- 앤서블이란?
- 우리가 어떤 서버환경을 배포한다고 했을 때 어떻게 하는 지 생각해봅시다. 가상의 우분투 서버가 있다면, 접속을 해서~, 여러 배포 환경을 구축하고~, 소스를 다운받고~, config파일을 만들고~, 실행시킵니다. 짧게 표현을 해도 이정도 입니다. 만약 배포할 서버가 한대가 아니라면? 이런 과정을 순서화시켜서 계속 반복합니다. 앤서블을 이 과정을 자동으로 할 수 있도록 하는 “배포 자동화 도구”가 되겠습니다.
이런 개발과 운영의 과정을 유연하게 하는 것을 DevOps라고 합니다.
-
- 쉘 스크립트 쓰면 되자냐.
- 네. 맞습니다. 위의 과정만한다고 생각하면 쉘 스크립트 쓰시면 됩니다. 실제로 쉘 스크립트만으로 배포 자동화를 이룰 수 있습니다. 하지만 스크립트의 경우는 실행에 대한 결과를 알 수 없어서 에러 대응에 미흡한 부분이 있습니다. 그리고 스크립트를 짜리 위한 복잡도가 앤서블이 낮고, 가독성이 좋다는 장점이 있습니다.
-
- 비슷한 게 많이 있지 않나요?
-
기존에 배포 자동화를 위해 많이 쓰고 있는 퍼펫과 쉐프가 있습니다.
-
퍼펫(puppet) :
- 다수의 사용자 보유 -> 온라인에 정보가 많음. but, 이미 구축되어 있어서 변경이 쉽지 않음
- agent 필요 -> 수행시킬 서버에 요청받을 퍼펫이 설치되어있어야 함 -> 하나의 신경쓸 요소가 늘어남
- 쉐프(chef) :
- 퍼펫과 비슷하게 기술적 복잡도가 높음
- agent 필요 -> 똑같이 하나의 신경쓸 요소가 늘어남
-
앤서블은 뭐가 다른가요?
- 기술적 복잡도가 낮은 편 : yaml(야믈) 형태의 playbook으로 배포 자동화 관리 > 가독성 굿
- 사용자가 늘어나고 있다 : 오픈소스 프로젝트로 개발가능성이 높아서 사용자가 늘어나고 있는 추세입니다.
- agent가 없어도 됨!(중요) : 앤서블을 실행할 서버 외에 관리당할 노드에 앤서블을 설치하지 않아도 된다. ssh를 통해 노드에 직접적인 메시지를 쏠 수 있다. > 노드에 관리 당하기 위한 agent가 설치되어 있어야한다면, 설치관련 이슈 or 신경써야할 것이 늘어나는 법
-
- 어떤 구성으로 동작하나요?
- 좋은 사진이 있어서 가져다 쓰자면, 앤서블을 실행할 Management Node가 있습니다. 서버의 역할로 보면 되겠네요. 앤서블이 설치되어 있어야 합니다. 그리고 10.0.15.21는 실행할 호스트 ip네요. Host Inventory는 이런 호스트를 정의해논 파일입니다. 파일에는 10.0.15.21이란 정보를 가지고 있겠죠. 그리고 Playbook은 호스트에 실행할 작업을 정의한 노트라고 보시면 됩니다. 위의 4에 쓰인대로 playbook은 가독성이 좋은 yaml확장자로 쓰입니다.
-
관리할 호스트가 늘어났습니다. 위에는 한 호스트만 있었는데 이번에는 6대가 되네요. 문제없습니다. 이 호스트의 명단인 Host Inventory에 6대의 호스트를 기술해주기만 하면 됩니다.
-
- 그럼 한번 써보자.
- 다음 포스트에는 앤서블을 설치하고 동작을 살펴보는 시간을 갖도록 하겠습니다.