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