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] 

테스트 작성

  1. /path/to/role/molecule/default 경로에 디렉토리 생성. (default 는 기본 시나리오. 다른 이름으로 시나리오 추가 가능함)
  2. /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  
  1. /path/to/role/molecule/default/converge.yml 생성 후 환경 구성 코드 추가

도커 컨테이너를 만들고 난 이후에 Role 수행으로 환경을 구성하기 위한 코드를 삽입. (웹 서버 배포 등)

1---
2- name: Converge
3  hosts: all
4  tasks:
5    - include_role:
6        name: "myrole"
  1. /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 # 위 과정을 한방에 수행
comments powered by Disqus