42 lines
1.7 KiB
YAML
42 lines
1.7 KiB
YAML
---
|
|
- name: Setup
|
|
hosts: localhost
|
|
connection: local
|
|
gather_facts: False
|
|
no_log: "{{ not lookup('env', 'MOLECULE_DEBUG') | bool }}"
|
|
vars:
|
|
molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}"
|
|
molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}"
|
|
molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}"
|
|
molecule_yml: "{{ lookup('file', molecule_file) | from_yaml }}"
|
|
tasks:
|
|
- name: Create Dockerfiles from image names
|
|
template:
|
|
src: "{{ molecule_scenario_directory }}/Dockerfile.j2"
|
|
dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}"
|
|
with_items: "{{ molecule_yml.platforms }}"
|
|
register: platforms
|
|
|
|
- name: Build an Ansible compatible image
|
|
docker_image:
|
|
path: "{{ molecule_ephemeral_directory }}"
|
|
name: "molecule_local/{{ item.item.image }}"
|
|
dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}"
|
|
force: "{{ item.item.force | default(True) }}"
|
|
with_items: "{{ platforms.results }}"
|
|
when: platforms.changed
|
|
|
|
- name: Create molecule instance(s)
|
|
docker_container:
|
|
name: "{{ item.name }}"
|
|
hostname: "{{ item.name }}"
|
|
image: "molecule_local/{{ item.image }}"
|
|
state: started
|
|
recreate: False
|
|
log_driver: json-file
|
|
command: "{{ item.command | default('sleep infinity') }}"
|
|
privileged: "{{ item.privileged | default(omit) }}"
|
|
volumes: "{{ item.volumes | default(omit) }}"
|
|
capabilities: "{{ item.capabilities | default(omit) }}"
|
|
with_items: "{{ molecule_yml.platforms }}"
|