--- # Copyright (c) Ansible Project # GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) # SPDX-License-Identifier: GPL-3.0-or-later - name: Registering container name ansible.builtin.set_fact: cname: "{{ cname_prefix ~ '-hi' }}" - name: Registering container name ansible.builtin.set_fact: cnames: "{{ cnames + [cname] }}" #################################################################### ## Creation ######################################################## #################################################################### - name: Create container (check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present check_mode: true register: create_1 - name: Create container community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present register: create_2 - name: Create container (idempotent) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present register: create_3 - name: Create container (idempotent check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present check_mode: true register: create_4 - ansible.builtin.assert: that: - create_1 is changed - create_2 is changed - create_3 is not changed - create_4 is not changed #################################################################### ## Starting (after creation) ####################################### #################################################################### - name: Start container (check) community.docker.docker_container: name: "{{ cname }}" state: started check_mode: true register: start_1 - name: Start container community.docker.docker_container: name: "{{ cname }}" state: started register: start_2 - name: Start container (idempotent) community.docker.docker_container: name: "{{ cname }}" state: started register: start_3 - name: Start container (idempotent check) community.docker.docker_container: name: "{{ cname }}" state: started check_mode: true register: start_4 - ansible.builtin.assert: that: - start_1 is changed - start_2 is changed - start_3 is not changed - start_4 is not changed #################################################################### ## Present check for running container ############################# #################################################################### - name: Present check for running container (check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present check_mode: true register: present_check_1 - name: Present check for running container community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present register: present_check_2 - ansible.builtin.assert: that: - present_check_1 is not changed - present_check_2 is not changed #################################################################### ## Starting (from scratch) ######################################### #################################################################### - name: Remove container (setup for starting from scratch) community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true - name: Start container from scratch (check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' stop_timeout: 1 name: "{{ cname }}" state: started check_mode: true register: start_scratch_1 - name: Start container from scratch community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' stop_timeout: 1 name: "{{ cname }}" state: started register: start_scratch_2 - name: Start container from scratch (idempotent) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' stop_timeout: 1 name: "{{ cname }}" state: started register: start_scratch_3 - name: Start container from scratch (idempotent check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' stop_timeout: 1 name: "{{ cname }}" state: started check_mode: true register: start_scratch_4 - ansible.builtin.assert: that: - start_scratch_1 is changed - start_scratch_2 is changed - start_scratch_3 is not changed - start_scratch_4 is not changed #################################################################### ## Recreating ###################################################### #################################################################### - name: Recreating container (created) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: present force_kill: true register: recreate_1 - name: Recreating container (created, recreate, check mode) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" recreate: true state: present force_kill: true register: recreate_2 check_mode: true - name: Recreating container (created, recreate) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" recreate: true state: present force_kill: true register: recreate_3 - name: Recreating container (started) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: started force_kill: true register: recreate_4 - name: Recreating container (started, recreate, check mode) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" recreate: true removal_wait_timeout: 10 state: started force_kill: true register: recreate_5 check_mode: true - name: Recreating container (started, recreate) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" recreate: true removal_wait_timeout: 10 state: started force_kill: true register: recreate_6 - name: cleanup community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true diff: false - ansible.builtin.debug: var=recreate_1 - ansible.builtin.debug: var=recreate_3 - ansible.builtin.debug: var=recreate_4 - ansible.builtin.debug: var=recreate_6 - ansible.builtin.assert: that: - recreate_2 is changed - recreate_3 is changed - recreate_4 is changed - recreate_5 is changed - recreate_6 is changed - recreate_1.container.Id == recreate_2.container.Id - recreate_1.container.Id != recreate_3.container.Id - recreate_3.container.Id == recreate_4.container.Id - recreate_4.container.Id == recreate_5.container.Id - recreate_4.container.Id != recreate_6.container.Id #################################################################### ## Restarting ###################################################### #################################################################### - name: Restarting community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: started stop_timeout: 1 volumes: - /tmp/tmp register: restart_1 - name: Restarting (restart, check mode) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" restart: true state: started stop_timeout: 1 force_kill: true register: restart_2 check_mode: true - name: Restarting (restart) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" restart: true state: started stop_timeout: 1 force_kill: true register: restart_3 - name: Restarting (verify volumes) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: started stop_timeout: 1 volumes: - /tmp/tmp register: restart_4 - name: cleanup community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true diff: false - ansible.builtin.assert: that: - restart_1 is changed - restart_2 is changed - restart_3 is changed - restart_1.container.Id == restart_3.container.Id - restart_4 is not changed #################################################################### ## Stopping ######################################################## #################################################################### - name: Stop container (check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" name: "{{ cname }}" state: stopped stop_timeout: 1 check_mode: true register: stop_1 - name: Stop container community.docker.docker_container: image: "{{ docker_test_image_alpine }}" name: "{{ cname }}" state: stopped stop_timeout: 1 register: stop_2 - name: Stop container (idempotent) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" name: "{{ cname }}" state: stopped stop_timeout: 1 register: stop_3 - name: Stop container (idempotent check) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" name: "{{ cname }}" state: stopped stop_timeout: 1 check_mode: true register: stop_4 - ansible.builtin.assert: that: - stop_1 is changed - stop_2 is changed - stop_3 is not changed - stop_4 is not changed #################################################################### ## Removing ######################################################## #################################################################### - name: Remove container (check) community.docker.docker_container: name: "{{ cname }}" state: absent check_mode: true register: remove_1 - name: Remove container community.docker.docker_container: name: "{{ cname }}" state: absent register: remove_2 - name: Remove container (idempotent) community.docker.docker_container: name: "{{ cname }}" state: absent register: remove_3 - name: Remove container (idempotent check) community.docker.docker_container: name: "{{ cname }}" state: absent check_mode: true register: remove_4 - ansible.builtin.assert: that: - remove_1 is changed - remove_2 is changed - remove_3 is not changed - remove_4 is not changed #################################################################### ## Removing (from running) ######################################### #################################################################### - name: Start container (setup for removing from running) community.docker.docker_container: image: "{{ docker_test_image_alpine }}" command: '/bin/sh -c "sleep 10m"' name: "{{ cname }}" state: started - name: Remove container from running (check) community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true check_mode: true register: remove_from_running_1 - name: Remove container from running community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true register: remove_from_running_2 - name: Remove container from running (idempotent) community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true register: remove_from_running_3 - name: Remove container from running (idempotent check) community.docker.docker_container: name: "{{ cname }}" state: absent force_kill: true check_mode: true register: remove_from_running_4 - ansible.builtin.assert: that: - remove_from_running_1 is changed - remove_from_running_2 is changed - remove_from_running_3 is not changed - remove_from_running_4 is not changed