코드로서의 인프라스트럭처(IaC, Infrastructure as code)에서 실행되는 Ansible 플레이 북 데모를 통해 GitLab CI의 강력한 기능을 살펴보세요.
GitLab CI는 코드로서의 인프라스트럭처와 GitOps를 포함하여 여러 가지 용도로 사 용할 수 있는 강력한 도구입니다. GitLab 은 특정 툴에 구애받지 않지만 본 데모에서는 Ansible 을 사용합니다. 왜냐하면, 개발자가 코드로서의 인프라스트럭처에 일반적으로 사용되는 언어이기 때문입니다. 여기에서는 Ansible 네트워크 강좌의 two-router 데모를 사용합니다.
GitLab CI의 특별한 점은, 어떠한 의존성도 로컬에 설치하지 않고 Ansible 플레이 북 코드를 편집하고 배포할 수 있다는 것입니다. 보안 정책에 따라 매월 모든 장치의 SNMP 문자열 업데이트를 호출하는 데모 프로젝트는, GitLab이 제공하는 호스팅 서비스인 GitLab.com에서 모두 수행이 가능합니다.
먼저 Ansible 플레이 북을 열어 봅니다. 아래와 같이 4단계로 이루어져 있습니다:
- 라우터 정보 수집
- 버전 표시하기
- 시리얼 번호 표시하기
- SNMP 문자열 설정하기
SNMP 문자열을 설정하는 것이 본 데모의 핵심이며, 몇 단계를 거쳐 간단하게 수행할 수 있습니다.
이슈 보드에서 시작하기
GitLab에서 모 든 작업의 시작은 항상 이슈를 확인하는 것으로부터 시작됩니다. 따라서 GitLab 워크플로우의 첫 번째 단계는 ansible-demo 프로젝트 내에서 이슈 보드를 확인하는 것입니다. ansible-demo 이슈 보드를 확인하면, “모든 라우터의 SNMP 문자열 변경하기 (Change SNMP Strings on all Router)” 라는 이슈가 있습니다. 이슈에는 다음과 같이 GitLab 보안 정책을 설명하는 wiki 페이지 링크가 있습니다.

GitLab 보안 정책에 따르면, 매달 SNMP 문자열을 업데이트해야 합니다.
다음은 two-router 데모에서 SNMP 문자열을 설정하는 명령어들이, 이슈에 기술된 바와 같이 GitLab 의 보안 정책을 따르고 있는지 확인합니다.

SNMP 문자열을 설정하는 명령어는 Ansible 플레이 북에서 사용할 수 있습니다.
그런 다음, 이슈로 돌아와서 자신에게 할당합니다. 그리고, 이슈 오른쪽 사이드바에서 to-do
를 doing
으로 바꾸거나, 이슈 보드 상에서 이슈를 드래그하여 라벨 상태를 바꿉니다.
머지 리퀘스트 생성하기
다음 단계는 이슈에서 머지 리퀘스트(MR)를 생성하는 것입니다. 미완성된 상태로 마스터 브랜치와 병합되지 않도록, 작업중(WIP, Work in Progress) 플래그가 MR에 붙어있는지 잘 확인해야 합니다. 변경해야 할 SNMP 문자열이 적기 때문에, 로컬로 연결하는 대신에 GitLab 웹 IDE를 사용합니다.
- CI/CD 데모를 엽니다.
- Ansible 플레이 북을 엽니다.
- 다음의 커맨드가 수행되도록 SNMP 섹션을 수정합니다.
-snmp-server community New-SNMP-DEMO1 RO
-snmp-server community Fun-SNMP-RW-STR RW