2023-11-18 14:31:00 +01:00
|
|
|
- name: Create
|
|
|
|
hosts: localhost
|
|
|
|
gather_facts: false
|
2023-11-18 15:20:22 +01:00
|
|
|
vars:
|
|
|
|
molecule_inventory:
|
|
|
|
all:
|
|
|
|
hosts: {}
|
|
|
|
molecule: {}
|
2023-11-18 14:31:00 +01:00
|
|
|
tasks:
|
2023-11-18 15:20:22 +01:00
|
|
|
- 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 }}"
|
2023-11-18 14:31:00 +01:00
|
|
|
|
2023-11-18 15:20:22 +01:00
|
|
|
- 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 }}"
|
|
|
|
|
2023-11-18 17:52:06 +01:00
|
|
|
- name: Show molecule inventory
|
|
|
|
ansible.builtin.debug:
|
|
|
|
msg: "{{ molecule_inventory }}"
|
|
|
|
|
2023-11-18 15:20:22 +01:00
|
|
|
- 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 }}"
|
2023-11-18 17:52:06 +01:00
|
|
|
|
|
|
|
|
|
|
|
# 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"
|
|
|
|
|