Ansible Molecule으로 테스트 작성하기
Molecule
ansible-community 에서 관리하는 Ansible role용 테스트 프레임워크. Molecule는 여러 인스턴스, 운영 체제 및 배포, 가상화 공급자, 테스트 프레임 워크 및 테스트 시나리오를 사용한 테스트를 지원.
설치하기
Pip 설치 시, 시스템 파이썬의 의존성을 꼬이게할 수 있으므로 가급적 Virtualenv로 가상 환경을 만들거나 Pipenv, Poetry 등의 의존성 관리 도구 사용하는 것을 권장.
1# docker 및 yamllint, ansible-lint 패키지 추가로 설치. (podman, vagrant, azure, hetzer 도 지원)
2$ pip install molecule[docker,lint]
테스트 작성
/path/to/role/molecule/default
경로에 디렉토리 생성. (default 는 기본 시나리오. 다른 이름으로 시나리오 추가 가능함)/path/to/role/molecule/default/molecule.yml
파일 생성 후 아래 내용 입력.
1---
2dependency:
3 name: galaxy
4 options:
5 requirements-file: ../../requirements.yml
6driver:
7 name: docker
8platforms:
9 - name: instance
10 image: docker.io/python:3.6-slim-buster
11 pre_build_image: true
12provisioner:
13 name: ansible
14verifier:
15 name: ansible
16lint: |
17 set -e
18 yamllint -c ../../.yamllint .
19 ansible-lint -c ../../.ansible-lint
/path/to/role/molecule/default/converge.yml
생성 후 환경 구성 코드 추가
도커 컨테이너를 만들고 난 이후에 Role 수행으로 환경을 구성하기 위한 코드를 삽입. (웹 서버 배포 등)
1---
2- name: Converge
3 hosts: all
4 tasks:
5 - include_role:
6 name: "myrole"
/path/to/role/molecule/default/verify.yml
생성 후 검증 코드 추가
환경 구성 이후 환경을 검증하기 위한 코드를 삽입 (실질적인 테스트 수행 단계)
1---
2- name: Verify
3 hosts: all
4 gather_facts: false
5 tasks:
6 - assert:
7 that: "{{ condition }}"
실행하기
1$ cd /path/to/role
2$ molecule create # 의존성 설치 및 도커 컨테이너 구동
3$ molecule converge # converge.yml 구동
4$ molecule verify # verify.yml 구동
5$ molecule destroy # 의존성 및 도커 컨테이너 제거
6$ molecule test # 위 과정을 한방에 수행