LabHub
배우기 러닝패스 코스

Ansible 실전 · 컬렉션 - 롤보다 큰 배포 단위 · 실습

사내 컬렉션을 만들어 판을 고정해 배포하기

LabHub 에서 이어서 보기

목표

롤 여러 개를 컬렉션 하나로 묶어 판을 붙이고, 빌드한 묶음을 설치해 FQCN 으로 부르고, 고정 파일로 설치판을 잠그는 한 바퀴를 직접 돌 수 있게 됩니다.

왜 중요한가

롤은 재사용 단위이고 컬렉션은 배포 단위입니다. 팀이 늘어나면 문제는 '이 롤을 어떻게 쓰나' 에서 '지금 저 서버에서 도는 롤이 어느 판인가' 로 옮겨 갑니다. 컬렉션은 그 질문에 답하려고 세 가지를 도입했습니다. 이름에 출처를 적고(FQCN), 묶음에 판을 붙이고(SemVer), 설치할 판을 파일에 적습니다(requirements.yml). 이 세 가지가 없으면 검색 경로의 순서가 무엇이 실행될지를 정하는데, 그 순서는 사람이 아니라 환경이 정합니다. 여기에 롤 인자 명세를 더하면 잘못된 값이 태스크를 돌기 전에 막힙니다 — 남이 쓸 코드를 내보낼 때 문서보다 먼저 갖춰야 할 것입니다. 이 실습은 그 한 바퀴를 인터넷 없이 로컬 묶음만으로 돕니다.

단계

1. ansible-galaxy collection init 으로 acme.platform 컬렉션의 뼈대를 /root/ans/coll/src 아래에 만드세요. 그리고 /root/ans/inventory/hosts.ini 에 web1·web2·db1 을 적은 인벤토리를 만드세요(ansible_host=127.0.0.1, ansible_port=2222, ansible_user=root).
2. /root/ans/coll/src/acme/platform/galaxy.ymlversion1.2.0 으로, description·authors·repository 를 사내 값으로 채우고 licenseMIT, tagsinfrastructurelinux 를 넣으세요. 그리고 같은 컬렉션의 meta/runtime.ymlrequires_ansible 를 범위 표기로 적으세요.
3. 컬렉션 안 roles/motd/ 에 롤을 만드세요. defaults/main.ymlmotd_banner(기본 acme-platformmotd_owner(기본 platformmotd_path(기본 /root/ans/coll/out/motd.txt)를 두고, tasks/main.ymlmotd_pathbanner=<motd_banner>owner=<motd_owner> 두 줄을 쓰는 이름 붙은 태스크 하나로 채우세요. 모듈은 FQCN 으로 부릅니다.
4. roles/motd/meta/argument_specs.yml 을 만들어 main 진입점에 short_description 과 세 인자를 적으세요. 셋 다 type: str 이고 description 이 있어야 하며, motd_owner 에는 choicesplatformsre 두 값만 허용하세요.
5. 컬렉션을 빌드해 /root/ans/coll/dist/acme-platform-1.2.0.tar.gz 를 만들고, 묶음 안에 MANIFEST.json·FILES.json 과 롤 파일들이 들어 있는지 확인하세요.
6. 만든 묶음을 /root/ans/coll/collections 에 설치하고, 그 경로에서 acme.platform 이 1.2.0 으로 보이는지, ansible-doc 으로 acme.platform.motd 롤의 인자가 조회되는지 확인하세요.
7. /root/ans/coll/use.yml 을 만들어 acme.platform.motd 롤을 FQCN 으로 부르되 motd_banneracme-platform in production 으로, motd_ownersre 로 넘기세요. 인벤토리의 web1 을 대상으로 실행해 /root/ans/coll/out/motd.txt 를 남기세요.
8. 소스의 galaxy.yml 판을 1.3.0 으로 올려 다시 빌드하고(묶음이 둘이 됩니다), /root/ans/coll/requirements.yml1.2.0 묶음을 type: file 로 고정해 그 파일로 설치하세요. 그리고 설치된 판을 /root/ans/coll/out/pinned.txt 에 한 줄로 남기세요.

참고

단계 8개

  1. 컬렉션 뼈대 만들기
  2. galaxy.yml 채우고 최소 ansible 판 못 박기
  3. 컬렉션 안에 롤 넣기
  4. 인자 명세로 잘못된 값 막기
  5. 묶음으로 빌드하고 내용물 확인하기
  6. 로컬 경로에 설치하고 문서로 확인하기
  7. FQCN 으로 불러 실행하기
  8. 소스는 앞서 나가도 설치판은 고정하기