--- - name: Create hosts: localhost connection: local gather_facts: False vars_files: - vars/molecule.yml tasks: - set_fact: molecule_service_instances: "{{ molecule_yml.platforms | selectattr('is_service', 'defined') | selectattr('is_service') | list }}" - set_fact: molecule_platform_instances: "{{ molecule_yml.platforms | difference(molecule_service_instances) }}" - name: Create Dockerfiles from image names template: src: "Dockerfile.{{ item.dockerfile_tpl | default('default') }}.j2" dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}" with_items: "{{ molecule_platform_instances }}" register: platforms - name: Discover local Docker images docker_image_facts: name: "molecule_pdns/{{ item.item.name }}" with_items: "{{ platforms.results }}" register: docker_images - name: Build an Ansible compatible image docker_image: path: "{{ molecule_ephemeral_directory }}" name: "molecule_pdns/{{ 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 or docker_images.results | map(attribute='images') | select('equalto', []) | list | count >= 0 - name: Create molecule instance(s) docker_container: name: "{{ item.name }}" hostname: "{{ item.name }}" image: "{{ item.image }}" state: started recreate: False env: "{{ item.env | default(omit) }}" privileged: "no" volumes: "{{ item.volumes | default(omit) }}" with_items: "{{ molecule_service_instances }}" - name: Create the required Services instance(s) docker_container: name: "{{ item.name }}" hostname: "{{ item.name }}" image: "molecule_pdns/{{ item.image }}" links: "{{ molecule_service_instances | map(attribute='name') | list }}" command: "{{ item.command | default(omit) }}" state: started recreate: False privileged: "yes" volumes: # Mount the cgroups fs to allow SystemD to run into the containers - "/sys/fs/cgroup:/sys/fs/cgroup:ro" with_items: "{{ molecule_platform_instances }}"