fc558fb85f
* [WIP][docker_container] Adding support for `mounts` option Fixes #42054 * Adjusting to current standards. * Add changelog. * Adjust types. * Cleanup. * Add idempotency checks for mounts. * Improve diff for mounts. * Linting. * Python 2.6 compatibility. * Fix error message formatting. * Move mounts and volumes tests into own file. * Add set of mount tests. * Golang's omitempty for bool omits false values. * Simplify sanity checks. Correct order of volume_options sanitization and usage. * Fix key. * Fix check. * Add tests where both volumes and mounts show up. * Add collision test.
3694 lines
87 KiB
YAML
3694 lines
87 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: alpine:3.8
|
|
command: '/bin/sh -c "echo"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
auto_remove: yes
|
|
register: auto_remove_1
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
ignore_errors: yes
|
|
|
|
- assert:
|
|
that:
|
|
- auto_remove_1 is changed
|
|
- auto_remove_2 is not changed
|
|
when: docker_py_version is version('2.1.0', '>=')
|
|
- assert:
|
|
that:
|
|
- auto_remove_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in auto_remove_1.msg"
|
|
- "'Minimum version required is 2.1.0 ' in auto_remove_1.msg"
|
|
when: docker_py_version is version('2.1.0', '<')
|
|
|
|
####################################################################
|
|
## blkio_weight ####################################################
|
|
####################################################################
|
|
|
|
- name: blkio_weight
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
blkio_weight: 123
|
|
register: blkio_weight_1
|
|
|
|
- name: blkio_weight (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
blkio_weight: 123
|
|
register: blkio_weight_2
|
|
|
|
- name: blkio_weight (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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"
|
|
- blkio_weight_3 is changed
|
|
|
|
####################################################################
|
|
## cap_drop, capabilities ##########################################
|
|
####################################################################
|
|
|
|
- name: capabilities, cap_drop
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## command #########################################################
|
|
####################################################################
|
|
|
|
- name: command
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_1
|
|
|
|
- name: command (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -v -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: command_2
|
|
|
|
- name: command (less parameters)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: command_3
|
|
|
|
- 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 changed
|
|
|
|
####################################################################
|
|
## cpu_period ######################################################
|
|
####################################################################
|
|
|
|
- name: cpu_period
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_period: 90000
|
|
state: started
|
|
register: cpu_period_1
|
|
|
|
- name: cpu_period (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_period: 90000
|
|
state: started
|
|
register: cpu_period_2
|
|
|
|
- name: cpu_period (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_quota: 150000
|
|
state: started
|
|
register: cpu_quota_1
|
|
|
|
- name: cpu_quota (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_quota: 150000
|
|
state: started
|
|
register: cpu_quota_2
|
|
|
|
- name: cpu_quota (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_shares: 900
|
|
state: started
|
|
register: cpu_shares_1
|
|
|
|
- name: cpu_shares (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpu_shares: 900
|
|
state: started
|
|
register: cpu_shares_2
|
|
|
|
- name: cpu_shares (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_cpus: "0"
|
|
state: started
|
|
register: cpuset_cpus_1
|
|
|
|
- name: cpuset_cpus (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_cpus: "0"
|
|
state: started
|
|
register: cpuset_cpus_2
|
|
|
|
- name: cpuset_cpus (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_mems: "0"
|
|
state: started
|
|
register: cpuset_mems_1
|
|
|
|
- name: cpuset_mems (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
cpuset_mems: "0"
|
|
state: started
|
|
register: cpuset_mems_2
|
|
|
|
- name: cpuset_mems (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## debug ###########################################################
|
|
####################################################################
|
|
|
|
- name: debug (create)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: 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: 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: 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
|
|
|
|
- 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"
|
|
# - "'Hello from Docker!' in detach_no_cleanup.container.Output"
|
|
- detach_no_cleanup_cleanup is changed
|
|
- "'Output' in detach_cleanup.container"
|
|
# - "'Hello from Docker!' in detach_cleanup.container.Output"
|
|
- detach_cleanup_cleanup is not changed
|
|
- assert:
|
|
that:
|
|
- "'Cannot retrieve result as auto_remove is enabled' == detach_auto_remove.container.Output"
|
|
- detach_auto_remove_cleanup is not changed
|
|
when: docker_py_version is version('2.1.0', '>=')
|
|
|
|
####################################################################
|
|
## devices #########################################################
|
|
####################################################################
|
|
|
|
- name: devices
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: device_read_bps (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: device_read_bps (lesser entries)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_bps:
|
|
- path: /dev/random
|
|
rate: 20M
|
|
register: device_read_bps_3
|
|
ignore_errors: yes
|
|
|
|
- name: device_read_bps (changed)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.9.0', '>=')
|
|
- assert:
|
|
that:
|
|
- device_read_bps_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in device_read_bps_1.msg"
|
|
- "'Minimum version required is 1.9.0 ' in device_read_bps_1.msg"
|
|
when: docker_py_version is version('1.9.0', '<')
|
|
|
|
####################################################################
|
|
## device_read_iops ################################################
|
|
####################################################################
|
|
|
|
- name: device_read_iops
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: device_read_iops (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: device_read_iops (less)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
device_read_iops:
|
|
- path: /dev/random
|
|
rate: 10
|
|
register: device_read_iops_3
|
|
ignore_errors: yes
|
|
|
|
- name: device_read_iops (changed)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.9.0', '>=')
|
|
- assert:
|
|
that:
|
|
- device_read_iops_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in device_read_iops_1.msg"
|
|
- "'Minimum version required is 1.9.0 ' in device_read_iops_1.msg"
|
|
when: docker_py_version is version('1.9.0', '<')
|
|
|
|
####################################################################
|
|
## device_write_bps and device_write_iops ##########################
|
|
####################################################################
|
|
|
|
- name: device_write_bps and device_write_iops
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: device_write_bps and device_write_iops (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: device_write_bps device_write_iops (changed)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.9.0', '>=')
|
|
- assert:
|
|
that:
|
|
- device_write_limit_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in device_write_limit_1.msg"
|
|
- "'Minimum version required is 1.9.0 ' in device_write_limit_1.msg"
|
|
when: docker_py_version is version('1.9.0', '<')
|
|
|
|
####################################################################
|
|
## dns_opts ########################################################
|
|
####################################################################
|
|
|
|
- name: dns_opts
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- "timeout:10"
|
|
- rotate
|
|
register: dns_opts_1
|
|
ignore_errors: yes
|
|
|
|
- name: dns_opts (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- rotate
|
|
- "timeout:10"
|
|
register: dns_opts_2
|
|
ignore_errors: yes
|
|
|
|
- name: dns_opts (less resolv.conf options)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- "timeout:10"
|
|
register: dns_opts_3
|
|
ignore_errors: yes
|
|
|
|
- name: dns_opts (more resolv.conf options)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
dns_opts:
|
|
- "timeout:10"
|
|
- no-check-names
|
|
force_kill: yes
|
|
register: dns_opts_4
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.10.0', '>=')
|
|
- assert:
|
|
that:
|
|
- dns_opts_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in dns_opts_1.msg"
|
|
- "'Minimum version required is 1.10.0 ' in dns_opts_1.msg"
|
|
when: docker_py_version is version('1.10.0', '<')
|
|
|
|
####################################################################
|
|
## dns_search_domains ##############################################
|
|
####################################################################
|
|
|
|
- name: dns_search_domains
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
domainname: example.com
|
|
state: started
|
|
register: domainname_1
|
|
|
|
- name: domainname (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
domainname: example.com
|
|
state: started
|
|
register: domainname_2
|
|
|
|
- name: domainname (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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 ######################################################
|
|
####################################################################
|
|
|
|
- name: entrypoint
|
|
docker_container:
|
|
image: alpine:3.8
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-v"
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: entrypoint_1
|
|
|
|
- name: entrypoint (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-v"
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: entrypoint_2
|
|
|
|
- name: entrypoint (change order, should not be idempotent)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
- "-v"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_3
|
|
|
|
- name: entrypoint (less parameters)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_4
|
|
|
|
- name: entrypoint (other parameters)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
entrypoint:
|
|
- /bin/sh
|
|
- "-c"
|
|
- "'sleep 5m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: entrypoint_5
|
|
|
|
- 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
|
|
|
|
####################################################################
|
|
## env #############################################################
|
|
####################################################################
|
|
|
|
- name: env
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env:
|
|
TEST1: val1
|
|
register: env_3
|
|
|
|
- name: env (more environment variables)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: env_file
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env_file: "{{ role_path }}/files/env-file"
|
|
register: env_file_1
|
|
|
|
- name: env_file (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
env_file: "{{ role_path }}/files/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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "1234"
|
|
- "5678"
|
|
register: groups_1
|
|
|
|
- name: groups (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "5678"
|
|
- "1234"
|
|
register: groups_2
|
|
|
|
- name: groups (less groups)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
groups:
|
|
- "1234"
|
|
register: groups_3
|
|
|
|
- name: groups (more groups)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (changed)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (no change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
force_kill: yes
|
|
register: healthcheck_4
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (disabled)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- NONE
|
|
force_kill: yes
|
|
register: healthcheck_5
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (disabled, idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test:
|
|
- NONE
|
|
force_kill: yes
|
|
register: healthcheck_6
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (string in healthcheck test, changed)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test: "sleep 1"
|
|
force_kill: yes
|
|
register: healthcheck_7
|
|
ignore_errors: yes
|
|
|
|
- name: healthcheck (string in healthcheck test, idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
healthcheck:
|
|
test: "sleep 1"
|
|
force_kill: yes
|
|
register: healthcheck_8
|
|
ignore_errors: yes
|
|
|
|
- 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 changed
|
|
- healthcheck_8 is not changed
|
|
when: docker_py_version is version('2.0.0', '>=')
|
|
- assert:
|
|
that:
|
|
- healthcheck_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in healthcheck_1.msg"
|
|
- "'Minimum version required is 2.0.0 ' in healthcheck_1.msg"
|
|
when: docker_py_version is version('2.0.0', '<')
|
|
|
|
####################################################################
|
|
## hostname ########################################################
|
|
####################################################################
|
|
|
|
- name: hostname
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
hostname: me.example.com
|
|
state: started
|
|
register: hostname_1
|
|
|
|
- name: hostname (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
hostname: me.example.com
|
|
state: started
|
|
register: hostname_2
|
|
|
|
- name: hostname (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
init: yes
|
|
state: started
|
|
register: init_1
|
|
ignore_errors: yes
|
|
|
|
- name: init (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
init: yes
|
|
state: started
|
|
register: init_2
|
|
ignore_errors: yes
|
|
|
|
- name: init (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
init: no
|
|
state: started
|
|
force_kill: yes
|
|
register: init_3
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('2.2.0', '>=')
|
|
- assert:
|
|
that:
|
|
- init_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in init_1.msg"
|
|
- "'Minimum version required is 2.2.0 ' in init_1.msg"
|
|
when: docker_py_version is version('2.2.0', '<')
|
|
|
|
####################################################################
|
|
## interactive #####################################################
|
|
####################################################################
|
|
|
|
- name: interactive
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
interactive: yes
|
|
state: started
|
|
register: interactive_1
|
|
|
|
- name: interactive (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
interactive: yes
|
|
state: started
|
|
register: interactive_2
|
|
|
|
- name: interactive (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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 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: hello-world
|
|
pull: true
|
|
|
|
- name: image
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: image_1
|
|
|
|
- name: image (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: image_2
|
|
|
|
- name: ignore_image
|
|
docker_container:
|
|
image: hello-world
|
|
ignore_image: yes
|
|
name: "{{ cname }}"
|
|
state: started
|
|
register: ignore_image
|
|
|
|
- name: image change
|
|
docker_container:
|
|
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
|
|
|
|
####################################################################
|
|
## ipc_mode ########################################################
|
|
####################################################################
|
|
|
|
- name: start helpers
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
|
|
####################################################################
|
|
## kill_signal #####################################################
|
|
####################################################################
|
|
|
|
# TODO: - kill_signal
|
|
|
|
####################################################################
|
|
## labels ##########################################################
|
|
####################################################################
|
|
|
|
- name: labels
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
links:
|
|
- "{{ cname_h1 }}:test1"
|
|
register: links_3
|
|
|
|
- name: links (more links)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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"
|
|
- log_options_3 is not changed
|
|
- log_options_4 is changed
|
|
|
|
####################################################################
|
|
## mac_address #####################################################
|
|
####################################################################
|
|
|
|
- name: mac_address
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory: 64M
|
|
state: started
|
|
register: memory_1
|
|
|
|
- name: memory (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory: 64M
|
|
state: started
|
|
register: memory_2
|
|
|
|
- name: memory (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_reservation: 64M
|
|
state: started
|
|
register: memory_reservation_1
|
|
|
|
- name: memory_reservation (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_reservation: 64M
|
|
state: started
|
|
register: memory_reservation_2
|
|
|
|
- name: memory_reservation (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: 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
|
|
|
|
- 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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_swappiness: 40
|
|
state: started
|
|
register: memory_swappiness_1
|
|
|
|
- name: memory_swappiness (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
memory_swappiness: 40
|
|
state: started
|
|
register: memory_swappiness_2
|
|
|
|
- name: memory_swappiness (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## oom_killer ######################################################
|
|
####################################################################
|
|
|
|
- name: oom_killer
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_killer: yes
|
|
state: started
|
|
register: oom_killer_1
|
|
|
|
- name: oom_killer (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
oom_killer: yes
|
|
state: started
|
|
register: oom_killer_2
|
|
|
|
- name: oom_killer (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## oom_score_adj ###################################################
|
|
####################################################################
|
|
|
|
- name: oom_score_adj
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## output_logs #####################################################
|
|
####################################################################
|
|
|
|
# TODO: - output_logs
|
|
|
|
####################################################################
|
|
## paused ##########################################################
|
|
####################################################################
|
|
|
|
- name: paused
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: "/bin/sh -c 'sleep 10m'"
|
|
name: "{{ cname }}"
|
|
state: started
|
|
paused: yes
|
|
force_kill: yes
|
|
register: paused_3
|
|
|
|
- name: paused (continue)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname_h1 }}"
|
|
state: started
|
|
register: pid_mode_helper
|
|
|
|
- name: pid_mode
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pid_mode: "container:{{ pid_mode_helper.container.Id }}"
|
|
register: pid_mode_1
|
|
ignore_errors: yes
|
|
# docker-py < 2.0 does not support "arbitrary" pid_mode values
|
|
|
|
- name: pid_mode (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pid_mode: "container:{{ cname_h1 }}"
|
|
register: pid_mode_2
|
|
ignore_errors: yes
|
|
# docker-py < 2.0 does not support "arbitrary" pid_mode values
|
|
|
|
- name: pid_mode (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
when: docker_py_version is version('2.0.0', '>=')
|
|
- assert:
|
|
that:
|
|
- pid_mode_1 is failed
|
|
- pid_mode_2 is failed
|
|
- pid_mode_3 is changed
|
|
when: docker_py_version is version('2.0.0', '<')
|
|
|
|
####################################################################
|
|
## pids_limit ######################################################
|
|
####################################################################
|
|
|
|
- name: pids_limit
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pids_limit: 10
|
|
register: pids_limit_1
|
|
ignore_errors: yes
|
|
|
|
- name: pids_limit (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pids_limit: 10
|
|
register: pids_limit_2
|
|
ignore_errors: yes
|
|
|
|
- name: pids_limit (changed)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
pids_limit: 20
|
|
force_kill: yes
|
|
register: pids_limit_3
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.10.0', '>=')
|
|
- assert:
|
|
that:
|
|
- pids_limit_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in pids_limit_1.msg"
|
|
- "'Minimum version required is 1.10.0 ' in pids_limit_1.msg"
|
|
when: docker_py_version is version('1.10.0', '<')
|
|
|
|
####################################################################
|
|
## privileged ######################################################
|
|
####################################################################
|
|
|
|
- name: privileged
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
privileged: yes
|
|
state: started
|
|
register: privileged_1
|
|
|
|
- name: privileged (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
privileged: yes
|
|
state: started
|
|
register: privileged_2
|
|
|
|
- name: privileged (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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 #################################################
|
|
####################################################################
|
|
|
|
- name: published_ports
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
published_ports:
|
|
- '127.0.0.1:9002:9002/tcp'
|
|
- '[::1]:9003:9003/tcp'
|
|
force_kill: yes
|
|
register: published_ports_5
|
|
|
|
- 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
|
|
|
|
####################################################################
|
|
## pull ############################################################
|
|
####################################################################
|
|
|
|
# TODO: - pull
|
|
|
|
####################################################################
|
|
## read_only #######################################################
|
|
####################################################################
|
|
|
|
- name: read_only
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
read_only: yes
|
|
state: started
|
|
register: read_only_1
|
|
|
|
- name: read_only (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
read_only: yes
|
|
state: started
|
|
register: read_only_2
|
|
|
|
- name: read_only (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: always
|
|
state: started
|
|
register: restart_policy_1
|
|
|
|
- name: restart_policy (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
restart_policy: always
|
|
state: started
|
|
register: restart_policy_2
|
|
|
|
- name: restart_policy (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
runtime: runc
|
|
state: started
|
|
register: runtime_1
|
|
ignore_errors: yes
|
|
|
|
- name: runtime (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
runtime: runc
|
|
state: started
|
|
register: runtime_2
|
|
ignore_errors: yes
|
|
|
|
- name: cleanup
|
|
docker_container:
|
|
name: "{{ cname }}"
|
|
state: absent
|
|
force_kill: yes
|
|
diff: no
|
|
|
|
- assert:
|
|
that:
|
|
- runtime_1 is changed
|
|
- runtime_2 is not changed
|
|
when: docker_py_version is version('2.4.0', '>=')
|
|
- assert:
|
|
that:
|
|
- runtime_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in runtime_1.msg"
|
|
- "'Minimum version required is 2.4.0 ' in runtime_1.msg"
|
|
when: docker_py_version is version('2.4.0', '<')
|
|
|
|
####################################################################
|
|
## 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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
shm_size: 96M
|
|
state: started
|
|
register: shm_size_1
|
|
|
|
- name: shm_size (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
shm_size: 96M
|
|
state: started
|
|
register: shm_size_2
|
|
|
|
- name: shm_size (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_signal: "30"
|
|
state: started
|
|
register: stop_signal_1
|
|
|
|
- name: stop_signal (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_signal: "30"
|
|
state: started
|
|
register: stop_signal_2
|
|
|
|
- name: stop_signal (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
stop_timeout: 2
|
|
state: started
|
|
register: stop_timeout_1
|
|
|
|
- name: stop_timeout (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## 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: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: sysctls (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- name: sysctls (less sysctls)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
sysctls:
|
|
net.ipv4.icmp_echo_ignore_all: 1
|
|
register: sysctls_3
|
|
ignore_errors: yes
|
|
|
|
- name: sysctls (more sysctls)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.10.0', '>=')
|
|
- assert:
|
|
that:
|
|
- sysctls_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in sysctls_1.msg"
|
|
- "'Minimum version required is 1.10.0 ' in sysctls_1.msg"
|
|
when: docker_py_version is version('1.10.0', '<')
|
|
|
|
####################################################################
|
|
## tmpfs ###########################################################
|
|
####################################################################
|
|
|
|
- name: tmpfs
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
## trust_image_content #############################################
|
|
####################################################################
|
|
|
|
# TODO: - trust_image_content
|
|
|
|
####################################################################
|
|
## tty #############################################################
|
|
####################################################################
|
|
|
|
- name: tty
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
tty: yes
|
|
state: started
|
|
register: tty_1
|
|
|
|
- name: tty (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
tty: yes
|
|
state: started
|
|
register: tty_2
|
|
|
|
- name: tty (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
state: started
|
|
ulimits:
|
|
- "nofile:1234:1234"
|
|
register: ulimits_3
|
|
|
|
- name: ulimits (more ulimits)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
user: nobody
|
|
state: started
|
|
register: user_1
|
|
|
|
- name: user (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
user: nobody
|
|
state: started
|
|
register: user_2
|
|
|
|
- name: user (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
userns_mode: host
|
|
state: started
|
|
register: userns_mode_1
|
|
ignore_errors: yes
|
|
|
|
- name: userns_mode (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
userns_mode: host
|
|
state: started
|
|
register: userns_mode_2
|
|
ignore_errors: yes
|
|
|
|
- name: userns_mode (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
userns_mode: ""
|
|
state: started
|
|
force_kill: yes
|
|
register: userns_mode_3
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('1.10.0', '>=')
|
|
- assert:
|
|
that:
|
|
- userns_mode_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in userns_mode_1.msg"
|
|
- "'Minimum version required is 1.10.0 ' in userns_mode_1.msg"
|
|
when: docker_py_version is version('1.10.0', '<')
|
|
|
|
####################################################################
|
|
## uts #############################################################
|
|
####################################################################
|
|
|
|
- name: uts
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
uts: host
|
|
state: started
|
|
register: uts_1
|
|
ignore_errors: yes
|
|
|
|
- name: uts (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
uts: host
|
|
state: started
|
|
register: uts_2
|
|
ignore_errors: yes
|
|
|
|
- name: uts (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
uts: ""
|
|
state: started
|
|
force_kill: yes
|
|
register: uts_3
|
|
ignore_errors: yes
|
|
|
|
- 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
|
|
when: docker_py_version is version('3.5.0', '>=')
|
|
- assert:
|
|
that:
|
|
- uts_1 is failed
|
|
- "('version is ' ~ docker_py_version ~ ' ') in uts_1.msg"
|
|
- "'Minimum version required is 3.5.0 ' in uts_1.msg"
|
|
when: docker_py_version is version('3.5.0', '<')
|
|
|
|
####################################################################
|
|
## working_dir #####################################################
|
|
####################################################################
|
|
|
|
- name: working_dir
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
working_dir: /tmp
|
|
state: started
|
|
register: working_dir_1
|
|
|
|
- name: working_dir (idempotency)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
command: '/bin/sh -c "sleep 10m"'
|
|
name: "{{ cname }}"
|
|
working_dir: /tmp
|
|
state: started
|
|
register: working_dir_2
|
|
|
|
- name: working_dir (change)
|
|
docker_container:
|
|
image: alpine:3.8
|
|
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
|
|
|
|
####################################################################
|
|
####################################################################
|
|
####################################################################
|