brunch

You can make anything
by writing

C.S.Lewis

by jd Jun 30. 2022

yaml 파일 야금야금 뜯어먹기

Ansible practice #2 인벤토리를 yaml 형식으로 만들기

코딩 문법을 공부하는 기본은 '정해진 형식을 엄격히 지켜야 하는 부분'과 '가능한 범위 내에서 바꿀 수 있는 부분'을 구분하는 것이라고 생각한다. 이 글에서는 비유적 표현을 활용해 전자를 '김밥'으로, 후자를 '비빔밥'으로 바꿔 부른다. 김밥은 김이 있어야만 김밥이 되지만, 비빔밥은 무엇이든 넣기만 하면 비빔밥이 될 수 있으므로... 이 기본을 적용해 내가 작성한 yaml 형식의 앤서블 인벤토리 중 김밥을 골라내면 다음과 같다.


inventory.yaml의 김밥

먼저 김밥의 요소를 하나하나 뜯어보자. 김밥은 엄격한 형식을 따르므로 표기가 바뀌면 안 되는 것들이다.


children: 하위 그룹을 만들 때 사용하는 지시어다. 위 스크립트에서는 전체 그룹 이름을 'servers'라고 지정한 뒤, 이 지시어를 사용해 host-vm, cvm이라는 이름의 하위 그룹을 포함했다.

hosts: 그룹에 포함할 서버들을 지정해주기 위해 서버 이름 상단에 써줘야 하는 지시어다.

ansible_host: 지정한 서버들의 IP 주소를 입력하는 데 쓰는 지시어다.


inventory.yaml의 비빔밥

자, 이제 비빔밥 순서다. 다시 한번 말하면, 비빔밥은 형식(삽입 위치, 영문, 콜론 등)을 지키는 선에서 얼마든지 마음대로 정할 수 있는 요소다.


servers: 전체 그룹의 이름이다.

host-vm: VM 3대를 등록한 뒤 하나의 그룹으로 묶기 위해 쓴 지시어다.

host-1~3: 등록한 VM별 이름을 설정해줬다. ansible playbook 명령어를 실행하면 동작의 성공 여부가 여기서 설정한 이름별로 나타나게 된다. 예컨대 이런 식이다.

cvm(위): 컨트롤러 역할을 하는 vm을 따로 생성한 뒤 cvm이라는 그룹으로 별도로 지정해줬다.

cvm(아래): 그룹 이름과 동일하게 해당 vm을 cvm이라고 부르기로 했다.


여기까지는 간단한 스크립트라서 분석이 쉽고 명확했다. 앤서블로 구현해야 하는 과제가 어려워질수록 나는 또다시 혼란에 빠지겠지만, 그때마다 김밥과 비빔밥을 구분해 야금야금 뜯어먹어 봐야겠다.

작가의 이전글 네? 앤서블이요?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari