Ansible practice #2 인벤토리를 yaml 형식으로 만들기
코딩 문법을 공부하는 기본은 '정해진 형식을 엄격히 지켜야 하는 부분'과 '가능한 범위 내에서 바꿀 수 있는 부분'을 구분하는 것이라고 생각한다. 이 글에서는 비유적 표현을 활용해 전자를 '김밥'으로, 후자를 '비빔밥'으로 바꿔 부른다. 김밥은 김이 있어야만 김밥이 되지만, 비빔밥은 무엇이든 넣기만 하면 비빔밥이 될 수 있으므로... 이 기본을 적용해 내가 작성한 yaml 형식의 앤서블 인벤토리 중 김밥을 골라내면 다음과 같다.
먼저 김밥의 요소를 하나하나 뜯어보자. 김밥은 엄격한 형식을 따르므로 표기가 바뀌면 안 되는 것들이다.
children: 하위 그룹을 만들 때 사용하는 지시어다. 위 스크립트에서는 전체 그룹 이름을 'servers'라고 지정한 뒤, 이 지시어를 사용해 host-vm, cvm이라는 이름의 하위 그룹을 포함했다.
hosts: 그룹에 포함할 서버들을 지정해주기 위해 서버 이름 상단에 써줘야 하는 지시어다.
ansible_host: 지정한 서버들의 IP 주소를 입력하는 데 쓰는 지시어다.
자, 이제 비빔밥 순서다. 다시 한번 말하면, 비빔밥은 형식(삽입 위치, 영문, 콜론 등)을 지키는 선에서 얼마든지 마음대로 정할 수 있는 요소다.
servers: 전체 그룹의 이름이다.
host-vm: VM 3대를 등록한 뒤 하나의 그룹으로 묶기 위해 쓴 지시어다.
host-1~3: 등록한 VM별 이름을 설정해줬다. ansible playbook 명령어를 실행하면 동작의 성공 여부가 여기서 설정한 이름별로 나타나게 된다. 예컨대 이런 식이다.
cvm(위): 컨트롤러 역할을 하는 vm을 따로 생성한 뒤 cvm이라는 그룹으로 별도로 지정해줬다.
cvm(아래): 그룹 이름과 동일하게 해당 vm을 cvm이라고 부르기로 했다.
여기까지는 간단한 스크립트라서 분석이 쉽고 명확했다. 앤서블로 구현해야 하는 과제가 어려워질수록 나는 또다시 혼란에 빠지겠지만, 그때마다 김밥과 비빔밥을 구분해 야금야금 뜯어먹어 봐야겠다.