- name: Create hosts: localhost gather_facts: false vars: molecule_inventory: all: hosts: {} molecule: {} tasks: - name: Create a container community.docker.docker_container: name: "{{ item.name }}" image: "{{ item.image }}" state: started command: sleep 1d log_driver: json-file register: result loop: "{{ molecule_yml.platforms }}" - name: Print some container info ansible.builtin.debug: msg: "{{ result.results }}" - name: Fail if container is not running when: > item.container.State.ExitCode != 0 or not item.container.State.Running ansible.builtin.include_tasks: file: tasks/create-fail.yml loop: "{{ result.results }}" loop_control: label: "{{ item.container.Name }}" - name: Add container to molecule_inventory vars: inventory_partial_yaml: | all: children: molecule: hosts: "{{ item.name }}": ansible_connection: community.docker.docker ansible.builtin.set_fact: molecule_inventory: > {{ molecule_inventory | combine(inventory_partial_yaml | from_yaml, recursive=true) }} loop: "{{ molecule_yml.platforms }}" loop_control: label: "{{ item.name }}" - name: Show molecule inventory ansible.builtin.debug: msg: "{{ molecule_inventory }}" - name: Dump molecule_inventory ansible.builtin.copy: content: | {{ molecule_inventory | to_yaml }} dest: "{{ molecule_ephemeral_directory }}/inventory/molecule_inventory.yml" mode: "0600" - name: Force inventory refresh ansible.builtin.meta: refresh_inventory - name: Fail if molecule group is missing ansible.builtin.assert: that: "'molecule' in groups" fail_msg: | molecule group was not found inside inventory groups: {{ groups }} run_once: true # noqa: run-once[task] # we want to avoid errors like "Failed to create temporary directory" - name: Validate that inventory was refreshed hosts: molecule gather_facts: false tasks: - name: Check uname ansible.builtin.raw: uname -a register: result changed_when: false - name: Display uname info ansible.builtin.debug: msg: "{{ result.stdout }}" # Prepare DinD - name: Prepare DinD hosts: molecule gather_facts: true tasks: - name: Update apt ansible.builtin.apt: update_cache: yes cache_valid_time: 600 when: "ansible_facts.os_family == 'Debian'" - name: Install python dependencies ansible.builtin.pip: name: - requests - docker - docker-compose - ansible - name: Install docker vars: docker_service_manage: false ansible.builtin.include_role: name: "geerlingguy.docker"