mirror of
https://github.com/ansible-collections/community.docker.git
synced 2026-03-15 19:58:28 +00:00
* Begin experiments for docker_container rewrite. * Continued. * We support API >= 1.25 only anyway. * Continued. * Fix bugs. * Complete first basic implementation. * Continuing. * Improvements and fixes. * Continuing. * More 'easy' options. * More options. * Work on volumes and mounts. * Add more options. * The last option. * Copy over. * Fix exposed ports. * Fix bugs. * Fix command and entrypoint. * More fixes. * Fix more bugs. * ci_complete * Lint, fix Python 2.7 bugs, work around ansible-test bug. ci_complete * Remove no longer applicable test. ci_complete * Remove unnecessary ignore. ci_complete * Start with engine driver. * Refactoring. * Avoid using anything Docker specific from self.client. * Refactor. * Add Python 2.6 ignore.txt entries for ansible-core < 2.12. * Improve healthcheck handling. * Fix container removal logic. * ci_complete * Remove handling of older Docker SDK for Pyhon versions from integration tests. * Avoid recreation if a pure update is possible without losing the diff data. * Cover the case that blkio_weight does not work. * Update plugins/module_utils/module_container/docker_api.py Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com> * Improve memory_swap tests. * Fix URLs in changelog fragment. Co-authored-by: Brian Scholer <1260690+briantist@users.noreply.github.com>
4255 lines
106 KiB
YAML
4255 lines
106 KiB
YAML
---
|
|
- name: Registering container name
|
|
set_fact:
|
|
cname: "{{ cname_prefix ~ '-options' }}"
|
|
cname_h1: "{{ cname_prefix ~ '-options-h1' }}"
|
|
cname_h2: "{{ cname_prefix ~ '-options-h2' }}"
|
|
cname_h3: "{{ cname_prefix ~ '-options-h3' }}"
|
|
- name: Registering container name
|
|
set_fact:
|
|
cnames: "{{ cnames + [cname, cname_h1, cname_h2, cname_h3] }}"
|
|
|
|
####################################################################
|
|
## auto_remove #####################################################
|
|
####################################################################
|
|
|
|
- name: auto_remove
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "echo"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
auto_remove: yes
|
|
register: auto_remove_1
|
|
|
|
- name: Give container 1 second to be sure it terminated
|
|
pause:
|
|
seconds: 1
|
|
|
|
- name: auto_remove (verify)
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
register: auto_remove_2
|
|
|
|
- assert:
|
|
that:
|
|
- auto_remove_1 is changed
|
|
- auto_remove_2 is not changed
|
|
|
|
####################################################################
|
|
## blkio_weight ####################################################
|
|
####################################################################
|
|
|
|
- name: blkio_weight
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
blkio_weight: 123
|
|
register: blkio_weight_1
|
|
|
|
- name: blkio_weight (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
blkio_weight: 123
|
|
register: blkio_weight_2
|
|
|
|
- name: blkio_weight (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
blkio_weight: 234
|
|
force_kill: yes
|
|
register: blkio_weight_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- blkio_weight_1 is changed
|
|
- "blkio_weight_2 is not changed or 'Docker warning: Your kernel does not support Block I/O weight or the cgroup is not mounted. Weight discarded.' in (blkio_weight_2.warnings | default([]))"
|
|
- blkio_weight_3 is changed
|
|
|
|
####################################################################
|
|
## cap_drop, capabilities ##########################################
|
|
####################################################################
|
|
|
|
- name: capabilities, cap_drop
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
capabilities:
|
|
- sys_time
|
|
cap_drop:
|
|
- all
|
|
register: capabilities_1
|
|
|
|
- name: capabilities, cap_drop (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
capabilities:
|
|
- sys_time
|
|
cap_drop:
|
|
- all
|
|
register: capabilities_2
|
|
|
|
- name: capabilities, cap_drop (less)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
capabilities: []
|
|
cap_drop:
|
|
- all
|
|
register: capabilities_3
|
|
|
|
- name: capabilities, cap_drop (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
capabilities:
|
|
- setgid
|
|
cap_drop:
|
|
- all
|
|
force_kill: yes
|
|
register: capabilities_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- capabilities_1 is changed
|
|
- capabilities_2 is not changed
|
|
- capabilities_3 is not changed
|
|
- capabilities_4 is changed
|
|
|
|
####################################################################
|
|
## cgroup_parent ###################################################
|
|
####################################################################
|
|
|
|
- name: cgroup_parent
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
cgroup_parent: ''
|
|
register: cgroup_parent_1
|
|
|
|
- name: cgroup_parent (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
cgroup_parent: ''
|
|
register: cgroup_parent_2
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cgroup_parent_1 is changed
|
|
- cgroup_parent_2 is not changed
|
|
|
|
####################################################################
|
|
## command #########################################################
|
|
####################################################################
|
|
|
|
# old
|
|
|
|
- name: command (compatibility)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_1
|
|
|
|
- name: command (compatibility, idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_2
|
|
|
|
- name: command (compatibility, idempotency, list)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
command:
|
|
- /bin/sh
|
|
- '-v'
|
|
- '-c'
|
|
- '"sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_3
|
|
|
|
- name: command (compatibility, fewer parameters)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: command_4
|
|
|
|
- name: command (compatibility, empty list)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
command: []
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: command_5
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- command_1 is changed
|
|
- command_2 is not changed
|
|
- command_3 is not changed
|
|
- command_4 is changed
|
|
- command_5 is not changed
|
|
|
|
# new
|
|
|
|
- name: command (correct)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_1
|
|
|
|
- name: command (correct, idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_2
|
|
|
|
- name: command (correct, idempotency, list)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
command:
|
|
- /bin/sh
|
|
- '-v'
|
|
- '-c'
|
|
- sleep 10m
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_3
|
|
|
|
- name: command (correct, fewer parameters)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: command_4
|
|
|
|
- name: command (correct, empty list)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
command: []
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: command_5
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- command_1 is changed
|
|
- command_2 is not changed
|
|
- command_3 is not changed
|
|
- command_4 is changed
|
|
- command_5 is changed
|
|
|
|
####################################################################
|
|
## cpu_period ######################################################
|
|
####################################################################
|
|
|
|
- name: cpu_period
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_period: 90000
|
|
state: started
|
|
register: cpu_period_1
|
|
|
|
- name: cpu_period (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_period: 90000
|
|
state: started
|
|
register: cpu_period_2
|
|
|
|
- name: cpu_period (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_period: 50000
|
|
state: started
|
|
force_kill: yes
|
|
register: cpu_period_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cpu_period_1 is changed
|
|
- cpu_period_2 is not changed
|
|
- cpu_period_3 is changed
|
|
|
|
####################################################################
|
|
## cpu_quota #######################################################
|
|
####################################################################
|
|
|
|
- name: cpu_quota
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_quota: 150000
|
|
state: started
|
|
register: cpu_quota_1
|
|
|
|
- name: cpu_quota (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_quota: 150000
|
|
state: started
|
|
register: cpu_quota_2
|
|
|
|
- name: cpu_quota (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_quota: 50000
|
|
state: started
|
|
force_kill: yes
|
|
register: cpu_quota_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cpu_quota_1 is changed
|
|
- cpu_quota_2 is not changed
|
|
- cpu_quota_3 is changed
|
|
|
|
####################################################################
|
|
## cpu_shares ######################################################
|
|
####################################################################
|
|
|
|
- name: cpu_shares
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_shares: 900
|
|
state: started
|
|
register: cpu_shares_1
|
|
|
|
- name: cpu_shares (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_shares: 900
|
|
state: started
|
|
register: cpu_shares_2
|
|
|
|
- name: cpu_shares (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_shares: 1100
|
|
state: started
|
|
force_kill: yes
|
|
register: cpu_shares_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cpu_shares_1 is changed
|
|
- cpu_shares_2 is not changed
|
|
- cpu_shares_3 is changed
|
|
|
|
####################################################################
|
|
## cpuset_cpus #####################################################
|
|
####################################################################
|
|
|
|
- name: cpuset_cpus
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_cpus: "0"
|
|
state: started
|
|
register: cpuset_cpus_1
|
|
|
|
- name: cpuset_cpus (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_cpus: "0"
|
|
state: started
|
|
register: cpuset_cpus_2
|
|
|
|
- name: cpuset_cpus (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_cpus: "1"
|
|
state: started
|
|
force_kill: yes
|
|
# This will fail if the system the test is run on doesn't have
|
|
# multiple CPUs/cores available.
|
|
ignore_errors: yes
|
|
register: cpuset_cpus_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cpuset_cpus_1 is changed
|
|
- cpuset_cpus_2 is not changed
|
|
- cpuset_cpus_3 is failed or cpuset_cpus_3 is changed
|
|
|
|
####################################################################
|
|
## cpuset_mems #####################################################
|
|
####################################################################
|
|
|
|
- name: cpuset_mems
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_mems: "0"
|
|
state: started
|
|
register: cpuset_mems_1
|
|
|
|
- name: cpuset_mems (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_mems: "0"
|
|
state: started
|
|
register: cpuset_mems_2
|
|
|
|
- name: cpuset_mems (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_mems: "1"
|
|
state: started
|
|
force_kill: yes
|
|
# This will fail if the system the test is run on doesn't have
|
|
# multiple MEMs available.
|
|
ignore_errors: yes
|
|
register: cpuset_mems_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cpuset_mems_1 is changed
|
|
- cpuset_mems_2 is not changed
|
|
- cpuset_mems_3 is failed or cpuset_mems_3 is changed
|
|
|
|
####################################################################
|
|
## cpus ############################################################
|
|
####################################################################
|
|
|
|
- name: cpus
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpus: 1
|
|
state: started
|
|
register: cpus_1
|
|
|
|
- name: cpus (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpus: 1
|
|
state: started
|
|
register: cpus_2
|
|
|
|
- name: cpus (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpus: 1.5
|
|
state: started
|
|
force_kill: yes
|
|
# This will fail if the system the test is run on doesn't have
|
|
# multiple MEMs available.
|
|
register: cpus_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- cpus_1 is changed
|
|
- cpus_2 is not changed and cpus_2 is not failed
|
|
- cpus_3 is failed or cpus_3 is changed
|
|
|
|
####################################################################
|
|
## debug ###########################################################
|
|
####################################################################
|
|
|
|
- name: debug (create)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: present
|
|
debug: yes
|
|
register: debug_1
|
|
|
|
- name: debug (start)
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: started
|
|
debug: yes
|
|
register: debug_2
|
|
|
|
- name: debug (stop)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
name: "{{ cname }}"
|
|
state: stopped
|
|
force_kill: yes
|
|
debug: yes
|
|
register: debug_3
|
|
|
|
- name: debug (absent)
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
debug: yes
|
|
force_kill: yes
|
|
register: debug_4
|
|
|
|
- assert:
|
|
that:
|
|
- debug_1 is changed
|
|
- debug_2 is changed
|
|
- debug_3 is changed
|
|
- debug_4 is changed
|
|
|
|
####################################################################
|
|
## detach, cleanup #################################################
|
|
####################################################################
|
|
|
|
- name: detach without cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
image: "{{ docker_test_image_hello_world }}"
|
|
detach: no
|
|
register: detach_no_cleanup
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
register: detach_no_cleanup_cleanup
|
|
diff: no
|
|
|
|
- name: detach with cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
image: "{{ docker_test_image_hello_world }}"
|
|
detach: no
|
|
cleanup: yes
|
|
register: detach_cleanup
|
|
|
|
- name: cleanup (unnecessary)
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
register: detach_cleanup_cleanup
|
|
diff: no
|
|
|
|
- name: detach with auto_remove and cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
image: "{{ docker_test_image_hello_world }}"
|
|
detach: no
|
|
auto_remove: yes
|
|
cleanup: yes
|
|
register: detach_auto_remove
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup (unnecessary)
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
register: detach_auto_remove_cleanup
|
|
diff: no
|
|
|
|
- name: detach with cleanup and non-zero status
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "exit 42"'
|
|
detach: no
|
|
cleanup: yes
|
|
register: detach_cleanup_nonzero
|
|
ignore_errors: true
|
|
|
|
- assert:
|
|
that:
|
|
# NOTE that 'Output' sometimes fails to contain the correct output
|
|
# of hello-world. We don't know why this happens, but it happens
|
|
# often enough to be annoying. That's why we disable this for now,
|
|
# and simply test that 'Output' is contained in the result.
|
|
- "'Output' in detach_no_cleanup.container"
|
|
- detach_no_cleanup.status == 0
|
|
# - "'Hello from Docker!' in detach_no_cleanup.container.Output"
|
|
- detach_no_cleanup_cleanup is changed
|
|
- "'Output' in detach_cleanup.container"
|
|
- detach_cleanup.status == 0
|
|
# - "'Hello from Docker!' in detach_cleanup.container.Output"
|
|
- detach_cleanup_cleanup is not changed
|
|
- detach_cleanup_nonzero is failed
|
|
- detach_cleanup_nonzero.status == 42
|
|
- "'Output' in detach_cleanup_nonzero.container"
|
|
- "detach_cleanup_nonzero.container.Output == ''"
|
|
- "'Cannot retrieve result as auto_remove is enabled' == detach_auto_remove.container.Output"
|
|
- detach_auto_remove_cleanup is not changed
|
|
|
|
####################################################################
|
|
## devices #########################################################
|
|
####################################################################
|
|
|
|
- name: devices
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
devices:
|
|
- "/dev/random:/dev/virt-random:rwm"
|
|
- "/dev/urandom:/dev/virt-urandom:rwm"
|
|
register: devices_1
|
|
|
|
- name: devices (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
devices:
|
|
- "/dev/urandom:/dev/virt-urandom:rwm"
|
|
- "/dev/random:/dev/virt-random:rwm"
|
|
register: devices_2
|
|
|
|
- name: devices (less)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
devices:
|
|
- "/dev/random:/dev/virt-random:rwm"
|
|
register: devices_3
|
|
|
|
- name: devices (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
devices:
|
|
- "/dev/random:/dev/virt-random:rwm"
|
|
- "/dev/null:/dev/virt-null:rwm"
|
|
force_kill: yes
|
|
register: devices_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- devices_1 is changed
|
|
- devices_2 is not changed
|
|
- devices_3 is not changed
|
|
- devices_4 is changed
|
|
|
|
####################################################################
|
|
## device_read_bps #################################################
|
|
####################################################################
|
|
|
|
- name: device_read_bps
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_bps:
|
|
- path: /dev/random
|
|
rate: 20M
|
|
- path: /dev/urandom
|
|
rate: 10K
|
|
register: device_read_bps_1
|
|
|
|
- name: device_read_bps (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_bps:
|
|
- path: /dev/urandom
|
|
rate: 10K
|
|
- path: /dev/random
|
|
rate: 20M
|
|
register: device_read_bps_2
|
|
|
|
- name: device_read_bps (lesser entries)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_bps:
|
|
- path: /dev/random
|
|
rate: 20M
|
|
register: device_read_bps_3
|
|
|
|
- name: device_read_bps (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_bps:
|
|
- path: /dev/random
|
|
rate: 10M
|
|
- path: /dev/urandom
|
|
rate: 5K
|
|
force_kill: yes
|
|
register: device_read_bps_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- device_read_bps_1 is changed
|
|
- device_read_bps_2 is not changed
|
|
- device_read_bps_3 is not changed
|
|
- device_read_bps_4 is changed
|
|
|
|
####################################################################
|
|
## device_read_iops ################################################
|
|
####################################################################
|
|
|
|
- name: device_read_iops
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_iops:
|
|
- path: /dev/random
|
|
rate: 10
|
|
- path: /dev/urandom
|
|
rate: 20
|
|
register: device_read_iops_1
|
|
|
|
- name: device_read_iops (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_iops:
|
|
- path: /dev/urandom
|
|
rate: "20"
|
|
- path: /dev/random
|
|
rate: 10
|
|
register: device_read_iops_2
|
|
|
|
- name: device_read_iops (less)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_iops:
|
|
- path: /dev/random
|
|
rate: 10
|
|
register: device_read_iops_3
|
|
|
|
- name: device_read_iops (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_iops:
|
|
- path: /dev/random
|
|
rate: 30
|
|
- path: /dev/urandom
|
|
rate: 50
|
|
force_kill: yes
|
|
register: device_read_iops_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- device_read_iops_1 is changed
|
|
- device_read_iops_2 is not changed
|
|
- device_read_iops_3 is not changed
|
|
- device_read_iops_4 is changed
|
|
|
|
####################################################################
|
|
## device_write_bps and device_write_iops ##########################
|
|
####################################################################
|
|
|
|
- name: device_write_bps and device_write_iops
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_write_bps:
|
|
- path: /dev/random
|
|
rate: 10M
|
|
device_write_iops:
|
|
- path: /dev/urandom
|
|
rate: 30
|
|
register: device_write_limit_1
|
|
|
|
- name: device_write_bps and device_write_iops (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_write_bps:
|
|
- path: /dev/random
|
|
rate: 10M
|
|
device_write_iops:
|
|
- path: /dev/urandom
|
|
rate: 30
|
|
register: device_write_limit_2
|
|
|
|
- name: device_write_bps device_write_iops (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_write_bps:
|
|
- path: /dev/random
|
|
rate: 20K
|
|
device_write_iops:
|
|
- path: /dev/urandom
|
|
rate: 100
|
|
force_kill: yes
|
|
register: device_write_limit_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- device_write_limit_1 is changed
|
|
- device_write_limit_2 is not changed
|
|
- device_write_limit_3 is changed
|
|
|
|
####################################################################
|
|
## device_requests #################################################
|
|
####################################################################
|
|
|
|
- name: device_requests
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_requests: []
|
|
register: device_requests_1
|
|
ignore_errors: yes
|
|
|
|
- name: device_requests (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_requests: []
|
|
register: device_requests_2
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- device_requests_1 is changed
|
|
- device_requests_2 is not changed
|
|
when: docker_api_version is version('1.40', '>=')
|
|
- assert:
|
|
that:
|
|
- device_requests_1 is failed
|
|
- |
|
|
('API version is ' ~ docker_api_version ~ '.') in device_requests_1.msg and 'Minimum version required is 1.40 ' in device_requests_1.msg
|
|
when: docker_api_version is version('1.40', '<')
|
|
|
|
####################################################################
|
|
## dns_opts ########################################################
|
|
####################################################################
|
|
|
|
- name: dns_opts
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- "timeout:10"
|
|
- rotate
|
|
register: dns_opts_1
|
|
|
|
- name: dns_opts (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- rotate
|
|
- "timeout:10"
|
|
register: dns_opts_2
|
|
|
|
- name: dns_opts (less resolv.conf options)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- "timeout:10"
|
|
register: dns_opts_3
|
|
|
|
- name: dns_opts (more resolv.conf options)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- "timeout:10"
|
|
- no-check-names
|
|
force_kill: yes
|
|
register: dns_opts_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- dns_opts_1 is changed
|
|
- dns_opts_2 is not changed
|
|
- dns_opts_3 is not changed
|
|
- dns_opts_4 is changed
|
|
|
|
####################################################################
|
|
## dns_search_domains ##############################################
|
|
####################################################################
|
|
|
|
- name: dns_search_domains
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_search_domains:
|
|
- example.com
|
|
- example.org
|
|
register: dns_search_domains_1
|
|
|
|
- name: dns_search_domains (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_search_domains:
|
|
- example.com
|
|
- example.org
|
|
register: dns_search_domains_2
|
|
|
|
- name: dns_search_domains (different order)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_search_domains:
|
|
- example.org
|
|
- example.com
|
|
force_kill: yes
|
|
register: dns_search_domains_3
|
|
|
|
- name: dns_search_domains (changed elements)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_search_domains:
|
|
- ansible.com
|
|
- example.com
|
|
force_kill: yes
|
|
register: dns_search_domains_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- dns_search_domains_1 is changed
|
|
- dns_search_domains_2 is not changed
|
|
- dns_search_domains_3 is changed
|
|
- dns_search_domains_4 is changed
|
|
|
|
####################################################################
|
|
## dns_servers #####################################################
|
|
####################################################################
|
|
|
|
- name: dns_servers
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_servers:
|
|
- 1.1.1.1
|
|
- 8.8.8.8
|
|
register: dns_servers_1
|
|
|
|
- name: dns_servers (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_servers:
|
|
- 1.1.1.1
|
|
- 8.8.8.8
|
|
register: dns_servers_2
|
|
|
|
- name: dns_servers (changed order)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_servers:
|
|
- 8.8.8.8
|
|
- 1.1.1.1
|
|
force_kill: yes
|
|
register: dns_servers_3
|
|
|
|
- name: dns_servers (changed elements)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_servers:
|
|
- 8.8.8.8
|
|
- 9.9.9.9
|
|
force_kill: yes
|
|
register: dns_servers_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- dns_servers_1 is changed
|
|
- dns_servers_2 is not changed
|
|
- dns_servers_3 is changed
|
|
- dns_servers_4 is changed
|
|
|
|
####################################################################
|
|
## domainname ######################################################
|
|
####################################################################
|
|
|
|
- name: domainname
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
domainname: example.com
|
|
state: started
|
|
register: domainname_1
|
|
|
|
- name: domainname (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
domainname: example.com
|
|
state: started
|
|
register: domainname_2
|
|
|
|
- name: domainname (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
domainname: example.org
|
|
state: started
|
|
force_kill: yes
|
|
register: domainname_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- domainname_1 is changed
|
|
- domainname_2 is not changed
|
|
- domainname_3 is changed
|
|
|
|
####################################################################
|
|
## entrypoint ######################################################
|
|
####################################################################
|
|
|
|
# Old
|
|
|
|
- name: entrypoint (compatibility)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-v"
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: entrypoint_1
|
|
|
|
- name: entrypoint (compatibility, idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-v"
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: entrypoint_2
|
|
|
|
- name: entrypoint (compatibility, change order, should not be idempotent)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
- "-v"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_3
|
|
|
|
- name: entrypoint (compatibility, fewer parameters)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_4
|
|
|
|
- name: entrypoint (compatibility, other parameters)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "'sleep 5m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_5
|
|
|
|
- name: entrypoint (compatibility, force empty)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: compatibility
|
|
entrypoint: []
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_6
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- entrypoint_1 is changed
|
|
- entrypoint_2 is not changed
|
|
- entrypoint_3 is changed
|
|
- entrypoint_4 is changed
|
|
- entrypoint_5 is changed
|
|
- entrypoint_6 is not changed
|
|
|
|
# New
|
|
|
|
- name: entrypoint (correct)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-v"
|
|
- "-c"
|
|
- "sleep 10m"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: entrypoint_1
|
|
|
|
- name: entrypoint (correct, idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-v"
|
|
- "-c"
|
|
- "sleep 10m"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: entrypoint_2
|
|
|
|
- name: entrypoint (correct, change order, should not be idempotent)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "sleep 10m"
|
|
- "-v"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_3
|
|
|
|
- name: entrypoint (correct, fewer parameters)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "sleep 10m"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_4
|
|
|
|
- name: entrypoint (correct, other parameters)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "sleep 5m"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_5
|
|
|
|
- name: entrypoint (correct, force empty)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command_handling: correct
|
|
entrypoint: []
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_6
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- entrypoint_1 is changed
|
|
- entrypoint_2 is not changed
|
|
- entrypoint_3 is changed
|
|
- entrypoint_4 is changed
|
|
- entrypoint_5 is changed
|
|
- entrypoint_6 is changed
|
|
|
|
####################################################################
|
|
## env #############################################################
|
|
####################################################################
|
|
|
|
- name: env
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env:
|
|
TEST1: val1
|
|
TEST2: val2
|
|
TEST3: "False"
|
|
TEST4: "true"
|
|
TEST5: "yes"
|
|
register: env_1
|
|
|
|
- name: env (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env:
|
|
TEST2: val2
|
|
TEST1: val1
|
|
TEST5: "yes"
|
|
TEST3: "False"
|
|
TEST4: "true"
|
|
register: env_2
|
|
|
|
- name: env (less environment variables)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env:
|
|
TEST1: val1
|
|
register: env_3
|
|
|
|
- name: env (more environment variables)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env:
|
|
TEST1: val1
|
|
TEST3: val3
|
|
force_kill: yes
|
|
register: env_4
|
|
|
|
- name: env (fail unwrapped values)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env:
|
|
TEST1: true
|
|
force_kill: yes
|
|
register: env_5
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- env_1 is changed
|
|
- env_2 is not changed
|
|
- env_3 is not changed
|
|
- env_4 is changed
|
|
- env_5 is failed
|
|
- "('Non-string value found for env option.') in env_5.msg"
|
|
|
|
####################################################################
|
|
## env_file #########################################################
|
|
####################################################################
|
|
|
|
- name: Copy env-file
|
|
copy:
|
|
src: env-file
|
|
dest: "{{ remote_tmp_dir }}/env-file"
|
|
|
|
- name: env_file
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env_file: "{{ remote_tmp_dir }}/env-file"
|
|
register: env_file_1
|
|
|
|
- name: env_file (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env_file: "{{ remote_tmp_dir }}/env-file"
|
|
register: env_file_2
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- env_file_1 is changed
|
|
- env_file_2 is not changed
|
|
|
|
####################################################################
|
|
## etc_hosts #######################################################
|
|
####################################################################
|
|
|
|
- name: etc_hosts
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
etc_hosts:
|
|
example.com: 1.2.3.4
|
|
example.org: 4.3.2.1
|
|
register: etc_hosts_1
|
|
|
|
- name: etc_hosts (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
etc_hosts:
|
|
example.org: 4.3.2.1
|
|
example.com: 1.2.3.4
|
|
register: etc_hosts_2
|
|
|
|
- name: etc_hosts (less hosts)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
etc_hosts:
|
|
example.com: 1.2.3.4
|
|
register: etc_hosts_3
|
|
|
|
- name: etc_hosts (more hosts)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
etc_hosts:
|
|
example.com: 1.2.3.4
|
|
example.us: 1.2.3.5
|
|
force_kill: yes
|
|
register: etc_hosts_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- etc_hosts_1 is changed
|
|
- etc_hosts_2 is not changed
|
|
- etc_hosts_3 is not changed
|
|
- etc_hosts_4 is changed
|
|
|
|
####################################################################
|
|
## exposed_ports ###################################################
|
|
####################################################################
|
|
|
|
- name: exposed_ports
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
exposed_ports:
|
|
- "9001"
|
|
- "9002"
|
|
register: exposed_ports_1
|
|
|
|
- name: exposed_ports (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
exposed_ports:
|
|
- "9002"
|
|
- "9001"
|
|
register: exposed_ports_2
|
|
|
|
- name: exposed_ports (less ports)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
exposed_ports:
|
|
- "9002"
|
|
register: exposed_ports_3
|
|
|
|
- name: exposed_ports (more ports)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
exposed_ports:
|
|
- "9002"
|
|
- "9003"
|
|
force_kill: yes
|
|
register: exposed_ports_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- exposed_ports_1 is changed
|
|
- exposed_ports_2 is not changed
|
|
- exposed_ports_3 is not changed
|
|
- exposed_ports_4 is changed
|
|
|
|
####################################################################
|
|
## force_kill ######################################################
|
|
####################################################################
|
|
|
|
# TODO: - force_kill
|
|
|
|
####################################################################
|
|
## groups ##########################################################
|
|
####################################################################
|
|
|
|
- name: groups
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "1234"
|
|
- "5678"
|
|
register: groups_1
|
|
|
|
- name: groups (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "5678"
|
|
- "1234"
|
|
register: groups_2
|
|
|
|
- name: groups (less groups)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "1234"
|
|
register: groups_3
|
|
|
|
- name: groups (more groups)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "1234"
|
|
- "2345"
|
|
force_kill: yes
|
|
register: groups_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- groups_1 is changed
|
|
- groups_2 is not changed
|
|
- groups_3 is not changed
|
|
- groups_4 is changed
|
|
|
|
####################################################################
|
|
## healthcheck #####################################################
|
|
####################################################################
|
|
|
|
- name: healthcheck
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- sleep
|
|
- 1
|
|
timeout: 2s
|
|
interval: 0h0m2s3ms4us
|
|
retries: 2
|
|
force_kill: yes
|
|
register: healthcheck_1
|
|
|
|
- name: healthcheck (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- sleep
|
|
- 1
|
|
timeout: 2s
|
|
interval: 0h0m2s3ms4us
|
|
retries: 2
|
|
force_kill: yes
|
|
register: healthcheck_2
|
|
|
|
- name: healthcheck (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- CMD
|
|
- sleep
|
|
- 1
|
|
timeout: 3s
|
|
interval: 0h1m2s3ms4us
|
|
retries: 3
|
|
force_kill: yes
|
|
register: healthcheck_3
|
|
|
|
- name: healthcheck (no change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: healthcheck_4
|
|
|
|
- name: healthcheck (disabled)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- NONE
|
|
force_kill: yes
|
|
register: healthcheck_5
|
|
|
|
- name: healthcheck (disabled, idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- NONE
|
|
force_kill: yes
|
|
register: healthcheck_6
|
|
|
|
- name: healthcheck (disabled, idempotency, strict)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- NONE
|
|
force_kill: yes
|
|
comparisons:
|
|
'*': strict
|
|
register: healthcheck_7
|
|
|
|
- name: healthcheck (string in healthcheck test, changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test: "sleep 1"
|
|
force_kill: yes
|
|
register: healthcheck_8
|
|
|
|
- name: healthcheck (string in healthcheck test, idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test: "sleep 1"
|
|
force_kill: yes
|
|
register: healthcheck_9
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- healthcheck_1 is changed
|
|
- healthcheck_2 is not changed
|
|
- healthcheck_3 is changed
|
|
- healthcheck_4 is not changed
|
|
- healthcheck_5 is changed
|
|
- healthcheck_6 is not changed
|
|
- healthcheck_7 is not changed
|
|
- healthcheck_8 is changed
|
|
- healthcheck_9 is not changed
|
|
|
|
####################################################################
|
|
## hostname ########################################################
|
|
####################################################################
|
|
|
|
- name: hostname
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
hostname: me.example.com
|
|
state: started
|
|
register: hostname_1
|
|
|
|
- name: hostname (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
hostname: me.example.com
|
|
state: started
|
|
register: hostname_2
|
|
|
|
- name: hostname (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
hostname: me.example.org
|
|
state: started
|
|
force_kill: yes
|
|
register: hostname_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- hostname_1 is changed
|
|
- hostname_2 is not changed
|
|
- hostname_3 is changed
|
|
|
|
####################################################################
|
|
## init ############################################################
|
|
####################################################################
|
|
|
|
- name: init
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
init: yes
|
|
state: started
|
|
register: init_1
|
|
|
|
- name: init (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
init: yes
|
|
state: started
|
|
register: init_2
|
|
|
|
- name: init (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
init: no
|
|
state: started
|
|
force_kill: yes
|
|
register: init_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- init_1 is changed
|
|
- init_2 is not changed
|
|
- init_3 is changed
|
|
|
|
####################################################################
|
|
## interactive #####################################################
|
|
####################################################################
|
|
|
|
- name: interactive
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
interactive: yes
|
|
state: started
|
|
register: interactive_1
|
|
|
|
- name: interactive (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
interactive: yes
|
|
state: started
|
|
register: interactive_2
|
|
|
|
- name: interactive (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
interactive: no
|
|
state: started
|
|
force_kill: yes
|
|
register: interactive_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- interactive_1 is changed
|
|
- interactive_2 is not changed
|
|
- interactive_3 is changed
|
|
|
|
####################################################################
|
|
## image / ignore_image ############################################
|
|
####################################################################
|
|
|
|
- name: Pull {{ docker_test_image_hello_world }} image to make sure ignore_image test succeeds
|
|
# If the image isn't there, it will pull it and return 'changed'.
|
|
docker_image:
|
|
name: "{{ docker_test_image_hello_world }}"
|
|
source: pull
|
|
|
|
- name: image
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: image_1
|
|
|
|
- name: image (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: image_2
|
|
|
|
- name: ignore_image
|
|
docker_container:
|
|
image: "{{ docker_test_image_hello_world }}"
|
|
ignore_image: yes
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: ignore_image
|
|
|
|
- name: image change
|
|
docker_container:
|
|
image: "{{ docker_test_image_hello_world }}"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: image_change
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- image_1 is changed
|
|
- image_2 is not changed
|
|
- ignore_image is not changed
|
|
- image_change is changed
|
|
|
|
####################################################################
|
|
## image_label_mismatch ############################################
|
|
####################################################################
|
|
|
|
- name: Registering image name
|
|
set_fact:
|
|
iname_labels: "{{ cname_prefix ~ '-labels' }}"
|
|
- name: Registering image name
|
|
set_fact:
|
|
inames: "{{ inames + [iname_labels] }}"
|
|
- name: build image with labels
|
|
command:
|
|
cmd: "docker build --label img_label=base --tag {{ iname_labels }} -"
|
|
stdin: "FROM {{ docker_test_image_alpine }}"
|
|
|
|
- name: image_label_mismatch
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: image_label_mismatch_1
|
|
|
|
- name: image_label_mismatch (ignore,unmanaged labels)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: ignore
|
|
state: started
|
|
register: image_label_mismatch_2
|
|
|
|
- name: image_label_mismatch (ignore,missing img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: ignore
|
|
labels: {}
|
|
state: started
|
|
register: image_label_mismatch_3
|
|
|
|
- name: image_label_mismatch (ignore,match img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: ignore
|
|
labels:
|
|
img_label: base
|
|
state: started
|
|
register: image_label_mismatch_4
|
|
|
|
- name: image_label_mismatch (ignore,mismatched img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: ignore
|
|
labels:
|
|
img_label: override
|
|
state: started
|
|
force_kill: yes
|
|
register: image_label_mismatch_5
|
|
|
|
- name: image_label_mismatch (ignore,remove img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: ignore
|
|
labels: {}
|
|
state: started
|
|
force_kill: yes
|
|
register: image_label_mismatch_6
|
|
|
|
- name: image_label_mismatch (fail,unmanaged labels)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: fail
|
|
state: started
|
|
register: image_label_mismatch_7
|
|
|
|
- name: image_label_mismatch (fail,non-strict,missing img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: fail
|
|
labels: {}
|
|
state: started
|
|
register: image_label_mismatch_8
|
|
|
|
- name: image_label_mismatch (fail,strict,missing img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: fail
|
|
comparisons:
|
|
labels: strict
|
|
labels: {}
|
|
state: started
|
|
ignore_errors: yes
|
|
register: image_label_mismatch_9
|
|
|
|
- name: image_label_mismatch (fail,match img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: fail
|
|
labels:
|
|
img_label: base
|
|
state: started
|
|
register: image_label_mismatch_10
|
|
|
|
- name: image_label_mismatch (fail,mismatched img label)
|
|
docker_container:
|
|
image: "{{ iname_labels }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
image_label_mismatch: fail
|
|
labels:
|
|
img_label: override
|
|
state: started
|
|
force_kill: yes
|
|
register: image_label_mismatch_11
|
|
|
|
- name: cleanup container
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- name: cleanup image
|
|
docker_image:
|
|
name: "{{ iname_labels }}"
|
|
state: absent
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- image_label_mismatch_1 is changed
|
|
- image_label_mismatch_1.container.Config.Labels.img_label == "base"
|
|
- image_label_mismatch_2 is not changed
|
|
- image_label_mismatch_3 is not changed
|
|
- image_label_mismatch_4 is not changed
|
|
- image_label_mismatch_5 is changed
|
|
- image_label_mismatch_5.container.Config.Labels.img_label == "override"
|
|
- image_label_mismatch_6 is changed
|
|
- image_label_mismatch_6.container.Config.Labels.img_label == "base"
|
|
- image_label_mismatch_7 is not changed
|
|
- image_label_mismatch_8 is not changed
|
|
- image_label_mismatch_9 is failed
|
|
- >-
|
|
image_label_mismatch_9.msg == ("Some labels should be removed but are present in the base image. You can set image_label_mismatch to 'ignore' to ignore this error. " ~ 'Labels: "img_label"')
|
|
- image_label_mismatch_10 is not changed
|
|
- image_label_mismatch_11 is changed
|
|
|
|
####################################################################
|
|
## ipc_mode ########################################################
|
|
####################################################################
|
|
|
|
- name: start helpers
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ container_name }}"
|
|
state: started
|
|
ipc_mode: shareable
|
|
loop:
|
|
- "{{ cname_h1 }}"
|
|
loop_control:
|
|
loop_var: container_name
|
|
|
|
- name: ipc_mode
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ipc_mode: "container:{{ cname_h1 }}"
|
|
# ipc_mode: shareable
|
|
register: ipc_mode_1
|
|
|
|
- name: ipc_mode (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ipc_mode: "container:{{ cname_h1 }}"
|
|
# ipc_mode: shareable
|
|
register: ipc_mode_2
|
|
|
|
- name: ipc_mode (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ipc_mode: private
|
|
force_kill: yes
|
|
register: ipc_mode_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ container_name }}"
|
|
state: absent
|
|
force_kill: yes
|
|
loop:
|
|
- "{{ cname }}"
|
|
- "{{ cname_h1 }}"
|
|
loop_control:
|
|
loop_var: container_name
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- ipc_mode_1 is changed
|
|
- ipc_mode_2 is not changed
|
|
- ipc_mode_3 is changed
|
|
|
|
####################################################################
|
|
## kernel_memory ###################################################
|
|
####################################################################
|
|
|
|
- name: kernel_memory
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
kernel_memory: 8M
|
|
state: started
|
|
register: kernel_memory_1
|
|
ignore_errors: yes
|
|
|
|
- name: kernel_memory (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
kernel_memory: 8M
|
|
state: started
|
|
register: kernel_memory_2
|
|
ignore_errors: yes
|
|
|
|
- name: kernel_memory (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
kernel_memory: 6M
|
|
state: started
|
|
force_kill: yes
|
|
register: kernel_memory_3
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- kernel_memory_1 is changed
|
|
- kernel_memory_2 is not changed
|
|
- kernel_memory_3 is changed
|
|
when:
|
|
- kernel_memory_1 is not failed or 'kernel memory accounting disabled in this runc build' not in kernel_memory_1.msg
|
|
- "'Docker warning: Specifying a kernel memory limit is deprecated and will be removed in a future release.' not in (kernel_memory_1.warnings | default([]))"
|
|
|
|
####################################################################
|
|
## kill_signal #####################################################
|
|
####################################################################
|
|
|
|
# TODO: - kill_signal
|
|
|
|
####################################################################
|
|
## labels ##########################################################
|
|
####################################################################
|
|
|
|
- name: labels
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
labels:
|
|
ansible.test.1: hello
|
|
ansible.test.2: world
|
|
register: labels_1
|
|
|
|
- name: labels (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
labels:
|
|
ansible.test.2: world
|
|
ansible.test.1: hello
|
|
register: labels_2
|
|
|
|
- name: labels (less labels)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
labels:
|
|
ansible.test.1: hello
|
|
register: labels_3
|
|
|
|
- name: labels (more labels)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
labels:
|
|
ansible.test.1: hello
|
|
ansible.test.3: ansible
|
|
force_kill: yes
|
|
register: labels_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- labels_1 is changed
|
|
- labels_2 is not changed
|
|
- labels_3 is not changed
|
|
- labels_4 is changed
|
|
|
|
####################################################################
|
|
## links ###########################################################
|
|
####################################################################
|
|
|
|
- name: start helpers
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ container_name }}"
|
|
state: started
|
|
loop:
|
|
- "{{ cname_h1 }}"
|
|
- "{{ cname_h2 }}"
|
|
- "{{ cname_h3 }}"
|
|
loop_control:
|
|
loop_var: container_name
|
|
|
|
- name: links
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
links:
|
|
- "{{ cname_h1 }}:test1"
|
|
- "{{ cname_h2 }}:test2"
|
|
register: links_1
|
|
|
|
- name: links (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
links:
|
|
- "{{ cname_h2 }}:test2"
|
|
- "{{ cname_h1 }}:test1"
|
|
register: links_2
|
|
|
|
- name: links (less links)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
links:
|
|
- "{{ cname_h1 }}:test1"
|
|
register: links_3
|
|
|
|
- name: links (more links)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
links:
|
|
- "{{ cname_h1 }}:test1"
|
|
- "{{ cname_h3 }}:test3"
|
|
force_kill: yes
|
|
register: links_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ container_name }}"
|
|
state: absent
|
|
force_kill: yes
|
|
loop:
|
|
- "{{ cname }}"
|
|
- "{{ cname_h1 }}"
|
|
- "{{ cname_h2 }}"
|
|
- "{{ cname_h3 }}"
|
|
loop_control:
|
|
loop_var: container_name
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- links_1 is changed
|
|
- links_2 is not changed
|
|
- links_3 is not changed
|
|
- links_4 is changed
|
|
|
|
####################################################################
|
|
## log_driver ######################################################
|
|
####################################################################
|
|
|
|
- name: log_driver
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: json-file
|
|
register: log_driver_1
|
|
|
|
- name: log_driver (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: json-file
|
|
register: log_driver_2
|
|
|
|
- name: log_driver (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: syslog
|
|
force_kill: yes
|
|
register: log_driver_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- log_driver_1 is changed
|
|
- log_driver_2 is not changed
|
|
- log_driver_3 is changed
|
|
|
|
####################################################################
|
|
## log_options #####################################################
|
|
####################################################################
|
|
|
|
- name: log_options
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: json-file
|
|
log_options:
|
|
labels: production_status
|
|
env: os,customer
|
|
max-file: 5
|
|
register: log_options_1
|
|
|
|
- name: log_options (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: json-file
|
|
log_options:
|
|
env: os,customer
|
|
labels: production_status
|
|
max-file: 5
|
|
register: log_options_2
|
|
|
|
- name: log_options (less log options)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: json-file
|
|
log_options:
|
|
labels: production_status
|
|
register: log_options_3
|
|
|
|
- name: log_options (more log options)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
log_driver: json-file
|
|
log_options:
|
|
labels: production_status
|
|
max-size: 10m
|
|
force_kill: yes
|
|
register: log_options_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- log_options_1 is changed
|
|
- log_options_2 is not changed
|
|
- "'Non-string value found for log_options option \\'max-file\\'. The value is automatically converted to \\'5\\'. If this is not correct, or you want to
|
|
avoid such warnings, please quote the value.' in (log_options_2.warnings | default([]))"
|
|
- log_options_3 is not changed
|
|
- log_options_4 is changed
|
|
|
|
####################################################################
|
|
## mac_address #####################################################
|
|
####################################################################
|
|
|
|
- name: mac_address
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
mac_address: 92:d0:c6:0a:29:33
|
|
state: started
|
|
register: mac_address_1
|
|
|
|
- name: mac_address (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
mac_address: 92:d0:c6:0a:29:33
|
|
state: started
|
|
register: mac_address_2
|
|
|
|
- name: mac_address (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
mac_address: 92:d0:c6:0a:29:44
|
|
state: started
|
|
force_kill: yes
|
|
register: mac_address_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- mac_address_1 is changed
|
|
- mac_address_2 is not changed
|
|
- mac_address_3 is changed
|
|
|
|
####################################################################
|
|
## memory ##########################################################
|
|
####################################################################
|
|
|
|
- name: memory
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory: 64M
|
|
state: started
|
|
register: memory_1
|
|
|
|
- name: memory (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory: 64M
|
|
state: started
|
|
register: memory_2
|
|
|
|
- name: memory (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory: 48M
|
|
state: started
|
|
force_kill: yes
|
|
register: memory_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- memory_1 is changed
|
|
- memory_2 is not changed
|
|
- memory_3 is changed
|
|
|
|
####################################################################
|
|
## memory_reservation ##############################################
|
|
####################################################################
|
|
|
|
- name: memory_reservation
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_reservation: 64M
|
|
state: started
|
|
register: memory_reservation_1
|
|
|
|
- name: memory_reservation (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_reservation: 64M
|
|
state: started
|
|
register: memory_reservation_2
|
|
|
|
- name: memory_reservation (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_reservation: 48M
|
|
state: started
|
|
force_kill: yes
|
|
register: memory_reservation_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- memory_reservation_1 is changed
|
|
- memory_reservation_2 is not changed
|
|
- memory_reservation_3 is changed
|
|
|
|
####################################################################
|
|
## memory_swap #####################################################
|
|
####################################################################
|
|
|
|
- name: memory_swap
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
# Docker daemon does not accept memory_swap if memory is not specified
|
|
memory: 32M
|
|
memory_swap: 64M
|
|
state: started
|
|
debug: yes
|
|
register: memory_swap_1
|
|
|
|
- name: memory_swap (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
# Docker daemon does not accept memory_swap if memory is not specified
|
|
memory: 32M
|
|
memory_swap: 64M
|
|
state: started
|
|
debug: yes
|
|
register: memory_swap_2
|
|
|
|
- name: memory_swap (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
# Docker daemon does not accept memory_swap if memory is not specified
|
|
memory: 32M
|
|
memory_swap: 48M
|
|
state: started
|
|
force_kill: yes
|
|
debug: yes
|
|
register: memory_swap_3
|
|
|
|
- name: memory_swap (unlimited)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
# Docker daemon does not accept memory_swap if memory is not specified
|
|
memory: 32M
|
|
memory_swap: unlimited
|
|
state: started
|
|
force_kill: yes
|
|
debug: yes
|
|
register: memory_swap_4
|
|
|
|
- name: memory_swap (unlimited via -1)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
# Docker daemon does not accept memory_swap if memory is not specified
|
|
memory: 32M
|
|
memory_swap: -1
|
|
state: started
|
|
force_kill: yes
|
|
debug: yes
|
|
register: memory_swap_5
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- memory_swap_1 is changed
|
|
# Sometimes (in particular during integration tests, maybe when not running
|
|
# on a proper VM), memory_swap cannot be set and will be -1 afterwards.
|
|
- memory_swap_2 is not changed or memory_swap_2.container.HostConfig.MemorySwap == -1
|
|
- memory_swap_3 is changed
|
|
# Unlimited memory_swap (using 'unlimited') should be allowed
|
|
# (If the value was already -1 because of the above reasons, it won't change)
|
|
- (memory_swap_4 is changed or memory_swap_3.container.HostConfig.MemorySwap == -1) and memory_swap_4.container.HostConfig.MemorySwap == -1
|
|
# Unlimited memory_swap (using '-1') should be allowed
|
|
- memory_swap_5 is not changed and memory_swap_5.container.HostConfig.MemorySwap == -1
|
|
|
|
- debug: var=memory_swap_1
|
|
when: memory_swap_2 is changed
|
|
- debug: var=memory_swap_2
|
|
when: memory_swap_2 is changed
|
|
- debug: var=memory_swap_3
|
|
when: memory_swap_2 is changed
|
|
|
|
####################################################################
|
|
## memory_swappiness ###############################################
|
|
####################################################################
|
|
|
|
- name: memory_swappiness
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_swappiness: 40
|
|
state: started
|
|
register: memory_swappiness_1
|
|
|
|
- name: memory_swappiness (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_swappiness: 40
|
|
state: started
|
|
register: memory_swappiness_2
|
|
|
|
- name: memory_swappiness (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_swappiness: 60
|
|
state: started
|
|
force_kill: yes
|
|
register: memory_swappiness_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- memory_swappiness_1 is changed
|
|
- memory_swappiness_2 is not changed
|
|
- memory_swappiness_3 is changed
|
|
when: "'Docker warning: Your kernel does not support memory swappiness capabilities or the cgroup is not mounted. Memory swappiness discarded.' not in (memory_swappiness_1.warnings | default([]))"
|
|
|
|
####################################################################
|
|
## oom_killer ######################################################
|
|
####################################################################
|
|
|
|
- name: oom_killer
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_killer: yes
|
|
state: started
|
|
register: oom_killer_1
|
|
|
|
- name: oom_killer (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_killer: yes
|
|
state: started
|
|
register: oom_killer_2
|
|
|
|
- name: oom_killer (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_killer: no
|
|
state: started
|
|
force_kill: yes
|
|
register: oom_killer_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- oom_killer_1 is changed
|
|
- oom_killer_2 is not changed
|
|
- oom_killer_3 is changed
|
|
when: "'Docker warning: Your kernel does not support OomKillDisable. OomKillDisable discarded.' not in (oom_killer_1.warnings | default([]))"
|
|
|
|
####################################################################
|
|
## oom_score_adj ###################################################
|
|
####################################################################
|
|
|
|
- name: oom_score_adj
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_score_adj: 5
|
|
state: started
|
|
register: oom_score_adj_1
|
|
|
|
- name: oom_score_adj (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_score_adj: 5
|
|
state: started
|
|
register: oom_score_adj_2
|
|
|
|
- name: oom_score_adj (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_score_adj: 7
|
|
state: started
|
|
force_kill: yes
|
|
register: oom_score_adj_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- oom_score_adj_1 is changed
|
|
- oom_score_adj_2 is not changed
|
|
- oom_score_adj_3 is changed
|
|
when: "'Docker warning: Your kernel does not support OomScoreAdj. OomScoreAdj discarded.' not in (oom_score_adj_1.warnings | default([]))"
|
|
|
|
####################################################################
|
|
## output_logs #####################################################
|
|
####################################################################
|
|
|
|
# TODO: - output_logs
|
|
|
|
####################################################################
|
|
## paused ##########################################################
|
|
####################################################################
|
|
|
|
- name: paused
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: "/bin/sh -c 'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
paused: yes
|
|
force_kill: yes
|
|
register: paused_1
|
|
|
|
- name: inspect paused
|
|
command: "docker inspect -f {% raw %}'{{.State.Status}} {{.State.Paused}}'{% endraw %} {{ cname }}"
|
|
register: paused_2
|
|
|
|
- name: paused (idempotent)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: "/bin/sh -c 'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
paused: yes
|
|
force_kill: yes
|
|
register: paused_3
|
|
|
|
- name: paused (continue)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: "/bin/sh -c 'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
paused: no
|
|
force_kill: yes
|
|
register: paused_4
|
|
|
|
- name: inspect paused
|
|
command: "docker inspect -f {% raw %}'{{.State.Status}} {{.State.Paused}}'{% endraw %} {{ cname }}"
|
|
register: paused_5
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- paused_1 is changed
|
|
- 'paused_2.stdout == "paused true"'
|
|
- paused_3 is not changed
|
|
- paused_4 is changed
|
|
- 'paused_5.stdout == "running false"'
|
|
|
|
####################################################################
|
|
## pid_mode ########################################################
|
|
####################################################################
|
|
|
|
- name: start helpers
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname_h1 }}"
|
|
state: started
|
|
register: pid_mode_helper
|
|
|
|
- name: pid_mode
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pid_mode: "container:{{ pid_mode_helper.container.Id }}"
|
|
register: pid_mode_1
|
|
|
|
- name: pid_mode (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pid_mode: "container:{{ cname_h1 }}"
|
|
register: pid_mode_2
|
|
|
|
- name: pid_mode (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pid_mode: host
|
|
force_kill: yes
|
|
register: pid_mode_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ container_name }}"
|
|
state: absent
|
|
force_kill: yes
|
|
loop:
|
|
- "{{ cname }}"
|
|
- "{{ cname_h1 }}"
|
|
loop_control:
|
|
loop_var: container_name
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- pid_mode_1 is changed
|
|
- pid_mode_2 is not changed
|
|
- pid_mode_3 is changed
|
|
|
|
####################################################################
|
|
## pids_limit ######################################################
|
|
####################################################################
|
|
|
|
- name: pids_limit
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pids_limit: 10
|
|
register: pids_limit_1
|
|
|
|
- name: pids_limit (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pids_limit: 10
|
|
register: pids_limit_2
|
|
|
|
- name: pids_limit (changed)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pids_limit: 20
|
|
force_kill: yes
|
|
register: pids_limit_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- pids_limit_1 is changed
|
|
- pids_limit_2 is not changed
|
|
- pids_limit_3 is changed
|
|
|
|
####################################################################
|
|
## privileged ######################################################
|
|
####################################################################
|
|
|
|
- name: privileged
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
privileged: yes
|
|
state: started
|
|
register: privileged_1
|
|
|
|
- name: privileged (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
privileged: yes
|
|
state: started
|
|
register: privileged_2
|
|
|
|
- name: privileged (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
privileged: no
|
|
state: started
|
|
force_kill: yes
|
|
register: privileged_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- privileged_1 is changed
|
|
- privileged_2 is not changed
|
|
- privileged_3 is changed
|
|
|
|
####################################################################
|
|
## published_ports and default_host_ip #############################
|
|
####################################################################
|
|
|
|
- name: published_ports
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9001'
|
|
- '9002'
|
|
register: published_ports_1
|
|
|
|
- name: published_ports (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9002'
|
|
- '9001'
|
|
register: published_ports_2
|
|
|
|
- name: published_ports (less published_ports)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9002'
|
|
register: published_ports_3
|
|
|
|
- name: published_ports (more published_ports)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9002'
|
|
- '9003'
|
|
force_kill: yes
|
|
register: published_ports_4
|
|
|
|
- name: published_ports (ports with IP addresses)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '127.0.0.1:9002:9002/tcp'
|
|
- '[::1]:9003:9003/tcp'
|
|
- '[fe80::1%test]:90:90/tcp'
|
|
force_kill: yes
|
|
register: published_ports_5
|
|
|
|
- name: published_ports (ports with IP addresses, idempotent)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '127.0.0.1:9002:9002/tcp'
|
|
- '[::1]:9003:9003/tcp'
|
|
- '[fe80::1%test]:90:90/tcp'
|
|
register: published_ports_6
|
|
|
|
- name: published_ports (no published ports)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports: []
|
|
comparisons:
|
|
published_ports: strict
|
|
force_kill: yes
|
|
register: published_ports_7
|
|
|
|
- name: published_ports (default_host_ip not set)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9001'
|
|
- '9002'
|
|
force_kill: yes
|
|
register: published_ports_8
|
|
|
|
- name: published_ports (default_host_ip set to empty string)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9002'
|
|
- '9001'
|
|
default_host_ip: ''
|
|
force_kill: yes
|
|
register: published_ports_9
|
|
|
|
- name: published_ports (default_host_ip set to empty string, idempotent)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9002'
|
|
- '9001'
|
|
default_host_ip: ''
|
|
register: published_ports_10
|
|
|
|
- name: published_ports (default_host_ip unset)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '9002'
|
|
- '9001'
|
|
force_kill: yes
|
|
register: published_ports_11
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- published_ports_1 is changed
|
|
- published_ports_2 is not changed
|
|
- published_ports_3 is not changed
|
|
- published_ports_4 is changed
|
|
- published_ports_5 is changed
|
|
- published_ports_6 is not changed
|
|
- published_ports_7 is changed
|
|
- published_ports_8 is changed
|
|
- published_ports_9 is changed
|
|
- published_ports_10 is not changed
|
|
- published_ports_11 is changed
|
|
|
|
####################################################################
|
|
## pull ############################################################
|
|
####################################################################
|
|
|
|
# TODO: - pull
|
|
|
|
####################################################################
|
|
## read_only #######################################################
|
|
####################################################################
|
|
|
|
- name: read_only
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
read_only: yes
|
|
state: started
|
|
register: read_only_1
|
|
|
|
- name: read_only (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
read_only: yes
|
|
state: started
|
|
register: read_only_2
|
|
|
|
- name: read_only (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
read_only: no
|
|
state: started
|
|
force_kill: yes
|
|
register: read_only_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- read_only_1 is changed
|
|
- read_only_2 is not changed
|
|
- read_only_3 is changed
|
|
|
|
####################################################################
|
|
## restart_policy ##################################################
|
|
####################################################################
|
|
|
|
- name: restart_policy
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: always
|
|
state: started
|
|
register: restart_policy_1
|
|
|
|
- name: restart_policy (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: always
|
|
state: started
|
|
register: restart_policy_2
|
|
|
|
- name: restart_policy (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: unless-stopped
|
|
state: started
|
|
force_kill: yes
|
|
register: restart_policy_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- restart_policy_1 is changed
|
|
- restart_policy_2 is not changed
|
|
- restart_policy_3 is changed
|
|
|
|
####################################################################
|
|
## restart_retries #################################################
|
|
####################################################################
|
|
|
|
- name: restart_retries
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: on-failure
|
|
restart_retries: 5
|
|
state: started
|
|
register: restart_retries_1
|
|
|
|
- name: restart_retries (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: on-failure
|
|
restart_retries: 5
|
|
state: started
|
|
register: restart_retries_2
|
|
|
|
- name: restart_retries (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: on-failure
|
|
restart_retries: 2
|
|
state: started
|
|
force_kill: yes
|
|
register: restart_retries_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- restart_retries_1 is changed
|
|
- restart_retries_2 is not changed
|
|
- restart_retries_3 is changed
|
|
|
|
####################################################################
|
|
## runtime #########################################################
|
|
####################################################################
|
|
|
|
- name: runtime
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
runtime: runc
|
|
state: started
|
|
register: runtime_1
|
|
|
|
- name: runtime (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
runtime: runc
|
|
state: started
|
|
register: runtime_2
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- runtime_1 is changed
|
|
- runtime_2 is not changed
|
|
|
|
####################################################################
|
|
## security_opts ###################################################
|
|
####################################################################
|
|
|
|
# In case some of the options stop working, here are some more
|
|
# options which *currently* work with all integration test targets:
|
|
# no-new-privileges
|
|
# label:disable
|
|
# label=disable
|
|
# label:level:s0:c100,c200
|
|
# label=level:s0:c100,c200
|
|
# label:type:svirt_apache_t
|
|
# label=type:svirt_apache_t
|
|
# label:user:root
|
|
# label=user:root
|
|
# seccomp:unconfined
|
|
# seccomp=unconfined
|
|
# apparmor:docker-default
|
|
# apparmor=docker-default
|
|
|
|
- name: security_opts
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
security_opts:
|
|
- "label:level:s0:c100,c200"
|
|
- "no-new-privileges"
|
|
register: security_opts_1
|
|
|
|
- name: security_opts (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
security_opts:
|
|
- "no-new-privileges"
|
|
- "label:level:s0:c100,c200"
|
|
register: security_opts_2
|
|
|
|
- name: security_opts (less security options)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
security_opts:
|
|
- "no-new-privileges"
|
|
register: security_opts_3
|
|
|
|
- name: security_opts (more security options)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
security_opts:
|
|
- "label:disable"
|
|
- "no-new-privileges"
|
|
force_kill: yes
|
|
register: security_opts_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- security_opts_1 is changed
|
|
- security_opts_2 is not changed
|
|
- security_opts_3 is not changed
|
|
- security_opts_4 is changed
|
|
|
|
####################################################################
|
|
## shm_size ########################################################
|
|
####################################################################
|
|
|
|
- name: shm_size
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
shm_size: 96M
|
|
state: started
|
|
register: shm_size_1
|
|
|
|
- name: shm_size (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
shm_size: 96M
|
|
state: started
|
|
register: shm_size_2
|
|
|
|
- name: shm_size (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
shm_size: 75M
|
|
state: started
|
|
force_kill: yes
|
|
register: shm_size_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- shm_size_1 is changed
|
|
- shm_size_2 is not changed
|
|
- shm_size_3 is changed
|
|
|
|
####################################################################
|
|
## stop_signal #####################################################
|
|
####################################################################
|
|
|
|
- name: stop_signal
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_signal: "30"
|
|
state: started
|
|
register: stop_signal_1
|
|
|
|
- name: stop_signal (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_signal: "30"
|
|
state: started
|
|
register: stop_signal_2
|
|
|
|
- name: stop_signal (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_signal: "9"
|
|
state: started
|
|
force_kill: yes
|
|
register: stop_signal_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- stop_signal_1 is changed
|
|
- stop_signal_2 is not changed
|
|
- stop_signal_3 is changed
|
|
|
|
####################################################################
|
|
## stop_timeout ####################################################
|
|
####################################################################
|
|
|
|
- name: stop_timeout
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_timeout: 2
|
|
state: started
|
|
register: stop_timeout_1
|
|
|
|
- name: stop_timeout (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_timeout: 2
|
|
state: started
|
|
register: stop_timeout_2
|
|
|
|
- name: stop_timeout (no change)
|
|
# stop_timeout changes are ignored by default
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_timeout: 1
|
|
state: started
|
|
register: stop_timeout_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- stop_timeout_1 is changed
|
|
- stop_timeout_2 is not changed
|
|
- stop_timeout_3 is not changed
|
|
|
|
####################################################################
|
|
## storage_opts ####################################################
|
|
####################################################################
|
|
|
|
- name: storage_opts
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
storage_opts:
|
|
size: 12m
|
|
state: started
|
|
register: storage_opts_1
|
|
ignore_errors: yes
|
|
|
|
- name: storage_opts (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
storage_opts:
|
|
size: 12m
|
|
state: started
|
|
register: storage_opts_2
|
|
ignore_errors: yes
|
|
|
|
- name: storage_opts (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
storage_opts:
|
|
size: 24m
|
|
state: started
|
|
force_kill: yes
|
|
register: storage_opts_3
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- storage_opts_1 is changed
|
|
- storage_opts_2 is not failed and storage_opts_2 is not changed
|
|
- storage_opts_3 is not failed and storage_opts_3 is changed
|
|
when: storage_opts_1 is not failed
|
|
|
|
- assert:
|
|
that:
|
|
- "'is supported only for' in storage_opts_1.msg"
|
|
- storage_opts_2 is failed
|
|
- storage_opts_3 is failed
|
|
when: storage_opts_1 is failed
|
|
|
|
####################################################################
|
|
## sysctls #########################################################
|
|
####################################################################
|
|
|
|
# In case some of the options stop working, here are some more
|
|
# options which *currently* work with all integration test targets:
|
|
# net.ipv4.conf.default.log_martians: 1
|
|
# net.ipv4.conf.default.secure_redirects: 0
|
|
# net.ipv4.conf.default.send_redirects: 0
|
|
# net.ipv4.conf.all.log_martians: 1
|
|
# net.ipv4.conf.all.accept_redirects: 0
|
|
# net.ipv4.conf.all.secure_redirects: 0
|
|
# net.ipv4.conf.all.send_redirects: 0
|
|
|
|
- name: sysctls
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
sysctls:
|
|
net.ipv4.icmp_echo_ignore_all: 1
|
|
net.ipv4.ip_forward: 1
|
|
register: sysctls_1
|
|
|
|
- name: sysctls (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
sysctls:
|
|
net.ipv4.ip_forward: 1
|
|
net.ipv4.icmp_echo_ignore_all: 1
|
|
register: sysctls_2
|
|
|
|
- name: sysctls (less sysctls)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
sysctls:
|
|
net.ipv4.icmp_echo_ignore_all: 1
|
|
register: sysctls_3
|
|
|
|
- name: sysctls (more sysctls)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
sysctls:
|
|
net.ipv4.icmp_echo_ignore_all: 1
|
|
net.ipv6.conf.default.accept_redirects: 0
|
|
force_kill: yes
|
|
register: sysctls_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- sysctls_1 is changed
|
|
- sysctls_2 is not changed
|
|
- sysctls_3 is not changed
|
|
- sysctls_4 is changed
|
|
|
|
####################################################################
|
|
## tmpfs ###########################################################
|
|
####################################################################
|
|
|
|
- name: tmpfs
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
tmpfs:
|
|
- "/test1:rw,noexec,nosuid,size=65536k"
|
|
- "/test2:rw,noexec,nosuid,size=65536k"
|
|
register: tmpfs_1
|
|
|
|
- name: tmpfs (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
tmpfs:
|
|
- "/test2:rw,noexec,nosuid,size=65536k"
|
|
- "/test1:rw,noexec,nosuid,size=65536k"
|
|
register: tmpfs_2
|
|
|
|
- name: tmpfs (less tmpfs)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
tmpfs:
|
|
- "/test1:rw,noexec,nosuid,size=65536k"
|
|
register: tmpfs_3
|
|
|
|
- name: tmpfs (more tmpfs)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
tmpfs:
|
|
- "/test1:rw,noexec,nosuid,size=65536k"
|
|
- "/test3:rw,noexec,nosuid,size=65536k"
|
|
force_kill: yes
|
|
register: tmpfs_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- tmpfs_1 is changed
|
|
- tmpfs_2 is not changed
|
|
- tmpfs_3 is not changed
|
|
- tmpfs_4 is changed
|
|
|
|
####################################################################
|
|
## tty #############################################################
|
|
####################################################################
|
|
|
|
- name: tty
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
tty: yes
|
|
state: started
|
|
register: tty_1
|
|
|
|
- name: tty (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
tty: yes
|
|
state: started
|
|
register: tty_2
|
|
|
|
- name: tty (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
tty: no
|
|
state: started
|
|
force_kill: yes
|
|
register: tty_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- tty_1 is changed
|
|
- tty_2 is not changed
|
|
- tty_3 is changed
|
|
|
|
####################################################################
|
|
## ulimits #########################################################
|
|
####################################################################
|
|
|
|
- name: ulimits
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ulimits:
|
|
- "nofile:1234:1234"
|
|
- "nproc:3:6"
|
|
register: ulimits_1
|
|
|
|
- name: ulimits (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ulimits:
|
|
- "nproc:3:6"
|
|
- "nofile:1234:1234"
|
|
register: ulimits_2
|
|
|
|
- name: ulimits (less ulimits)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ulimits:
|
|
- "nofile:1234:1234"
|
|
register: ulimits_3
|
|
|
|
- name: ulimits (more ulimits)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ulimits:
|
|
- "nofile:1234:1234"
|
|
- "sigpending:100:200"
|
|
force_kill: yes
|
|
register: ulimits_4
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- ulimits_1 is changed
|
|
- ulimits_2 is not changed
|
|
- ulimits_3 is not changed
|
|
- ulimits_4 is changed
|
|
|
|
####################################################################
|
|
## user ############################################################
|
|
####################################################################
|
|
|
|
- name: user
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
user: nobody
|
|
state: started
|
|
register: user_1
|
|
|
|
- name: user (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
user: nobody
|
|
state: started
|
|
register: user_2
|
|
|
|
- name: user (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
user: root
|
|
state: started
|
|
force_kill: yes
|
|
register: user_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- user_1 is changed
|
|
- user_2 is not changed
|
|
- user_3 is changed
|
|
|
|
####################################################################
|
|
## userns_mode #####################################################
|
|
####################################################################
|
|
|
|
- name: userns_mode
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
userns_mode: host
|
|
state: started
|
|
register: userns_mode_1
|
|
|
|
- name: userns_mode (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
userns_mode: host
|
|
state: started
|
|
register: userns_mode_2
|
|
|
|
- name: userns_mode (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
userns_mode: ""
|
|
state: started
|
|
force_kill: yes
|
|
register: userns_mode_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- userns_mode_1 is changed
|
|
- userns_mode_2 is not changed
|
|
- userns_mode_3 is changed
|
|
|
|
####################################################################
|
|
## uts #############################################################
|
|
####################################################################
|
|
|
|
- name: uts
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
uts: host
|
|
state: started
|
|
register: uts_1
|
|
|
|
- name: uts (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
uts: host
|
|
state: started
|
|
register: uts_2
|
|
|
|
- name: uts (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
uts: ""
|
|
state: started
|
|
force_kill: yes
|
|
register: uts_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- uts_1 is changed
|
|
- uts_2 is not changed
|
|
- uts_3 is changed
|
|
|
|
####################################################################
|
|
## working_dir #####################################################
|
|
####################################################################
|
|
|
|
- name: working_dir
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
working_dir: /tmp
|
|
state: started
|
|
register: working_dir_1
|
|
|
|
- name: working_dir (idempotency)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
working_dir: /tmp
|
|
state: started
|
|
register: working_dir_2
|
|
|
|
- name: working_dir (change)
|
|
docker_container:
|
|
image: "{{ docker_test_image_alpine }}"
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
working_dir: /
|
|
state: started
|
|
force_kill: yes
|
|
register: working_dir_3
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- working_dir_1 is changed
|
|
- working_dir_2 is not changed
|
|
- working_dir_3 is changed
|
|
|
|
####################################################################
|
|
####################################################################
|
|
####################################################################
|