mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-24 05:40:23 -07:00
Initial commit
This commit is contained in:
commit
aebc1b03fd
4861 changed files with 812621 additions and 0 deletions
|
@ -0,0 +1,75 @@
|
|||
---
|
||||
|
||||
# Create random name prefix (for containers, networks, ...)
|
||||
- name: Create random name prefix
|
||||
set_fact:
|
||||
name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
service_names: []
|
||||
network_names: []
|
||||
config_names: []
|
||||
secret_names: []
|
||||
volume_names: []
|
||||
|
||||
- debug:
|
||||
msg: "Using container name prefix {{ name_prefix }}"
|
||||
|
||||
# Run the tests
|
||||
- block:
|
||||
- name: Create a Swarm cluster
|
||||
docker_swarm:
|
||||
state: present
|
||||
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
|
||||
|
||||
- include_tasks: run-test.yml
|
||||
with_fileglob:
|
||||
- "tests/*.yml"
|
||||
|
||||
always:
|
||||
- name: Make sure all services are removed
|
||||
docker_swarm_service:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ service_names }}"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Make sure all networks are removed
|
||||
docker_network:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
force: yes
|
||||
loop: "{{ network_names }}"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Make sure all configs are removed
|
||||
docker_config:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
force: yes
|
||||
loop: "{{ config_names }}"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Make sure all volumes are removed
|
||||
docker_volume:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
loop: "{{ volume_names }}"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Make sure all secrets are removed
|
||||
docker_secret:
|
||||
name: "{{ item }}"
|
||||
state: absent
|
||||
force: yes
|
||||
loop: "{{ secret_names }}"
|
||||
ignore_errors: yes
|
||||
|
||||
- name: Make sure swarm is removed
|
||||
docker_swarm:
|
||||
state: absent
|
||||
force: yes
|
||||
ignore_errors: yes
|
||||
# Maximum of 1.24 (docker API version for docker_swarm_service) and 1.25 (docker API version for docker_swarm) is 1.25
|
||||
when: docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')
|
||||
|
||||
- fail: msg="Too old docker / docker-py version to run docker_swarm_service tests!"
|
||||
when: not(docker_py_version is version('2.0.2', '>=') and docker_api_version is version('1.25', '>=')) and (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)
|
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
- name: "Loading tasks from {{ item }}"
|
||||
include_tasks: "{{ item }}"
|
|
@ -0,0 +1,413 @@
|
|||
---
|
||||
|
||||
- name: Registering container name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-configs' }}"
|
||||
config_name_1: "{{ name_prefix ~ '-configs-1' }}"
|
||||
config_name_2: "{{ name_prefix ~ '-configs-2' }}"
|
||||
|
||||
- name: Registering container name
|
||||
set_fact:
|
||||
config_names: "{{ config_names + [config_name_1, config_name_2] }}"
|
||||
|
||||
- docker_config:
|
||||
name: "{{ config_name_1 }}"
|
||||
data: "hello"
|
||||
state: present
|
||||
register: "config_result_1"
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
||||
|
||||
- docker_config:
|
||||
name: "{{ config_name_2 }}"
|
||||
data: "test"
|
||||
state: present
|
||||
register: "config_result_2"
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
||||
|
||||
####################################################################
|
||||
## configs #########################################################
|
||||
####################################################################
|
||||
|
||||
- name: configs
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
filename: "/tmp/{{ config_name_1 }}.txt"
|
||||
register: configs_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_name: "{{ config_name_1 }}"
|
||||
filename: "/tmp/{{ config_name_1 }}.txt"
|
||||
register: configs_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (add)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
filename: "/tmp/{{ config_name_1 }}.txt"
|
||||
- config_name: "{{ config_name_2 }}"
|
||||
filename: "/tmp/{{ config_name_2 }}.txt"
|
||||
register: configs_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (add idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_name: "{{ config_name_1 }}"
|
||||
filename: "/tmp/{{ config_name_1 }}.txt"
|
||||
- config_id: "{{ config_result_2.config_id|default('') }}"
|
||||
config_name: "{{ config_name_2 }}"
|
||||
filename: "/tmp/{{ config_name_2 }}.txt"
|
||||
register: configs_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (add idempotency no id)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_name: "{{ config_name_1 }}"
|
||||
filename: "/tmp/{{ config_name_1 }}.txt"
|
||||
- config_name: "{{ config_name_2 }}"
|
||||
filename: "/tmp/{{ config_name_2 }}.txt"
|
||||
register: configs_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (add idempotency no id and re-ordered)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_name: "{{ config_name_2 }}"
|
||||
filename: "/tmp/{{ config_name_2 }}.txt"
|
||||
- config_name: "{{ config_name_1 }}"
|
||||
filename: "/tmp/{{ config_name_1 }}.txt"
|
||||
register: configs_6
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs: []
|
||||
register: configs_7
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs: []
|
||||
register: configs_8
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is changed
|
||||
- configs_2 is not changed
|
||||
- configs_3 is changed
|
||||
- configs_4 is not changed
|
||||
- configs_5 is not changed
|
||||
- configs_6 is not changed
|
||||
- configs_7 is changed
|
||||
- configs_8 is not changed
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is failed
|
||||
- "'Minimum version required' in configs_1.msg"
|
||||
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
||||
|
||||
####################################################################
|
||||
## configs (uid) ###################################################
|
||||
####################################################################
|
||||
|
||||
- name: configs (uid int)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
uid: 1000
|
||||
register: configs_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (uid int idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
uid: 1000
|
||||
register: configs_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (uid int change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
uid: 1002
|
||||
register: configs_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (uid str)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
uid: "1001"
|
||||
register: configs_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (uid str idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
uid: "1001"
|
||||
register: configs_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is changed
|
||||
- configs_2 is not changed
|
||||
- configs_3 is changed
|
||||
- configs_4 is changed
|
||||
- configs_5 is not changed
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is failed
|
||||
- "'Minimum version required' in configs_1.msg"
|
||||
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
||||
|
||||
|
||||
####################################################################
|
||||
## configs (gid) ###################################################
|
||||
####################################################################
|
||||
|
||||
- name: configs (gid int)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
gid: 1000
|
||||
register: configs_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (gid int idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
gid: 1000
|
||||
register: configs_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (gid int change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
gid: 1002
|
||||
register: configs_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (gid str)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
gid: "1001"
|
||||
register: configs_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (gid str idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
gid: "1001"
|
||||
register: configs_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is changed
|
||||
- configs_2 is not changed
|
||||
- configs_3 is changed
|
||||
- configs_4 is changed
|
||||
- configs_5 is not changed
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is failed
|
||||
- "'Minimum version required' in configs_1.msg"
|
||||
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
||||
|
||||
####################################################################
|
||||
## configs (mode) ##################################################
|
||||
####################################################################
|
||||
|
||||
- name: configs (mode)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
mode: 0600
|
||||
register: configs_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (mode idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
mode: 0600
|
||||
register: configs_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: configs (mode change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
configs:
|
||||
- config_id: "{{ config_result_1.config_id|default('') }}"
|
||||
config_name: "{{ config_name_1 }}"
|
||||
mode: 0777
|
||||
register: configs_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is changed
|
||||
- configs_2 is not changed
|
||||
- configs_3 is changed
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- configs_1 is failed
|
||||
- "'Minimum version required' in configs_1.msg"
|
||||
when: docker_api_version is version('1.30', '<') or docker_py_version is version('2.6.0', '<')
|
||||
|
||||
####################################################################
|
||||
####################################################################
|
||||
####################################################################
|
||||
|
||||
- name: Delete configs
|
||||
docker_config:
|
||||
name: "{{ config_name }}"
|
||||
state: absent
|
||||
force: yes
|
||||
loop:
|
||||
- "{{ config_name_1 }}"
|
||||
- "{{ config_name_2 }}"
|
||||
loop_control:
|
||||
loop_var: config_name
|
||||
ignore_errors: yes
|
||||
when: docker_api_version is version('1.30', '>=') and docker_py_version is version('2.6.0', '>=')
|
|
@ -0,0 +1,158 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-logging' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
|
||||
####################################################################
|
||||
## logging.driver ##################################################
|
||||
####################################################################
|
||||
|
||||
- name: logging.driver
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
register: logging_driver_1
|
||||
|
||||
- name: logging.driver (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
register: logging_driver_2
|
||||
|
||||
- name: log_driver (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
log_driver: json-file
|
||||
register: logging_driver_2b
|
||||
|
||||
- name: logging.driver (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: syslog
|
||||
register: logging_driver_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- logging_driver_1 is changed
|
||||
- logging_driver_2 is not changed
|
||||
- logging_driver_2b is not changed
|
||||
- logging_driver_3 is changed
|
||||
|
||||
####################################################################
|
||||
## logging.options #################################################
|
||||
####################################################################
|
||||
|
||||
- name: logging_options
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
labels: production_status
|
||||
env: os,customer
|
||||
register: logging_options_1
|
||||
|
||||
- name: logging_options (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
env: os,customer
|
||||
labels: production_status
|
||||
register: logging_options_2
|
||||
|
||||
- name: log_driver_options (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
log_driver: json-file
|
||||
log_driver_options:
|
||||
env: os,customer
|
||||
labels: production_status
|
||||
register: logging_options_2b
|
||||
|
||||
- name: logging_options (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
options:
|
||||
env: os,customer
|
||||
labels: production_status
|
||||
max-file: "1"
|
||||
register: logging_options_3
|
||||
|
||||
- name: logging_options (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
options: {}
|
||||
register: logging_options_4
|
||||
|
||||
- name: logging_options (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
logging:
|
||||
driver: json-file
|
||||
options: {}
|
||||
register: logging_options_5
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- logging_options_1 is changed
|
||||
- logging_options_2 is not changed
|
||||
- logging_options_2b is not changed
|
||||
- logging_options_3 is changed
|
||||
- logging_options_4 is changed
|
||||
- logging_options_5 is not changed
|
|
@ -0,0 +1,113 @@
|
|||
---
|
||||
- block:
|
||||
- name: Create a swarm service without name
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
state: present
|
||||
ignore_errors: yes
|
||||
|
||||
- name: assert failure when name not set
|
||||
assert:
|
||||
that:
|
||||
- output is failed
|
||||
- 'output.msg == "missing required arguments: name"'
|
||||
|
||||
- name: Remove an non-existing service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
state: absent
|
||||
name: non_existing_service
|
||||
|
||||
- name: assert output not changed when deleting non-existing service
|
||||
assert:
|
||||
that:
|
||||
- output is not changed
|
||||
|
||||
- name: create sample service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
endpoint_mode: dnsrr
|
||||
image: busybox
|
||||
resolve_image: no
|
||||
args:
|
||||
- sleep
|
||||
- "3600"
|
||||
|
||||
- name: assert sample service is created
|
||||
assert:
|
||||
that:
|
||||
- output is changed
|
||||
|
||||
- name: change service args
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
image: busybox
|
||||
resolve_image: no
|
||||
args:
|
||||
- sleep
|
||||
- "1800"
|
||||
|
||||
- name: assert service args are correct
|
||||
assert:
|
||||
that:
|
||||
- output.swarm_service.args == ['sleep', '1800']
|
||||
|
||||
- name: set service mode to global
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
image: busybox
|
||||
resolve_image: no
|
||||
endpoint_mode: vip
|
||||
mode: global
|
||||
args:
|
||||
- sleep
|
||||
- "1800"
|
||||
|
||||
- name: assert service mode changed caused service rebuild
|
||||
assert:
|
||||
that:
|
||||
- output.rebuilt
|
||||
|
||||
- name: add published ports to service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
image: busybox
|
||||
resolve_image: no
|
||||
mode: global
|
||||
args:
|
||||
- sleep
|
||||
- "1800"
|
||||
endpoint_mode: vip
|
||||
publish:
|
||||
- protocol: tcp
|
||||
published_port: 60001
|
||||
target_port: 60001
|
||||
- protocol: udp
|
||||
published_port: 60001
|
||||
target_port: 60001
|
||||
|
||||
- name: fake image key as it is not predictable
|
||||
set_fact:
|
||||
ansible_docker_service_output: "{{ output.swarm_service|combine({'image': 'busybox'}) }}"
|
||||
|
||||
- name: assert service matches expectations
|
||||
assert:
|
||||
that:
|
||||
- ansible_docker_service_output == service_expected_output
|
||||
|
||||
- name: delete sample service
|
||||
register: output
|
||||
docker_swarm_service:
|
||||
name: test_service
|
||||
state: absent
|
||||
|
||||
- name: assert service deletion returns changed
|
||||
assert:
|
||||
that:
|
||||
- output is success
|
||||
- output is changed
|
||||
when: docker_api_version is version('1.24', '>=') and docker_py_version is version('3.0.0', '>=')
|
|
@ -0,0 +1,601 @@
|
|||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-mounts' }}"
|
||||
volume_name_1: "{{ name_prefix ~ '-volume-1' }}"
|
||||
volume_name_2: "{{ name_prefix ~ '-volume-2' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
volume_names: "{{ volume_names + [volume_name_1, volume_name_2] }}"
|
||||
|
||||
- docker_volume:
|
||||
name: "{{ volume_name }}"
|
||||
state: present
|
||||
loop:
|
||||
- "{{ volume_name_1 }}"
|
||||
- "{{ volume_name_2 }}"
|
||||
loop_control:
|
||||
loop_var: volume_name
|
||||
|
||||
####################################################################
|
||||
## mounts ##########################################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
register: mounts_1
|
||||
|
||||
- name: mounts (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
register: mounts_2
|
||||
|
||||
- name: mounts (add)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
- source: "/tmp/"
|
||||
target: "/tmp/{{ volume_name_2 }}"
|
||||
type: "bind"
|
||||
register: mounts_3
|
||||
|
||||
- name: mounts (order idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "/tmp/"
|
||||
target: "/tmp/{{ volume_name_2 }}"
|
||||
type: "bind"
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
register: mounts_4
|
||||
|
||||
- name: mounts (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts: []
|
||||
register: mounts_5
|
||||
|
||||
- name: mounts (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts: []
|
||||
register: mounts_6
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_1 is changed
|
||||
- mounts_2 is not changed
|
||||
- mounts_3 is changed
|
||||
- mounts_4 is not changed
|
||||
- mounts_5 is changed
|
||||
- mounts_6 is not changed
|
||||
|
||||
####################################################################
|
||||
## mounts.readonly #################################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.readonly
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
readonly: true
|
||||
register: mounts_readonly_1
|
||||
|
||||
|
||||
- name: mounts.readonly (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
readonly: true
|
||||
register: mounts_readonly_2
|
||||
|
||||
- name: mounts.readonly (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
readonly: false
|
||||
register: mounts_readonly_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_readonly_1 is changed
|
||||
- mounts_readonly_2 is not changed
|
||||
- mounts_readonly_3 is changed
|
||||
|
||||
####################################################################
|
||||
## mounts.propagation ##############################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.propagation
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "/tmp"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "bind"
|
||||
propagation: "slave"
|
||||
register: mounts_propagation_1
|
||||
|
||||
|
||||
- name: mounts.propagation (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "/tmp"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "bind"
|
||||
propagation: "slave"
|
||||
register: mounts_propagation_2
|
||||
|
||||
- name: mounts.propagation (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "/tmp"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "bind"
|
||||
propagation: "rprivate"
|
||||
register: mounts_propagation_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_propagation_1 is changed
|
||||
- mounts_propagation_2 is not changed
|
||||
- mounts_propagation_3 is changed
|
||||
|
||||
####################################################################
|
||||
## mounts.labels ##################################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.labels
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
labels:
|
||||
mylabel: hello-world
|
||||
my-other-label: hello-mars
|
||||
register: mounts_labels_1
|
||||
|
||||
|
||||
- name: mounts.labels (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
labels:
|
||||
mylabel: hello-world
|
||||
my-other-label: hello-mars
|
||||
register: mounts_labels_2
|
||||
|
||||
- name: mounts.labels (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
labels:
|
||||
mylabel: hello-world
|
||||
register: mounts_labels_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_labels_1 is changed
|
||||
- mounts_labels_2 is not changed
|
||||
- mounts_labels_3 is changed
|
||||
|
||||
####################################################################
|
||||
## mounts.no_copy ##################################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.no_copy
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
no_copy: true
|
||||
register: mounts_no_copy_1
|
||||
|
||||
|
||||
- name: mounts.no_copy (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
no_copy: true
|
||||
register: mounts_no_copy_2
|
||||
|
||||
- name: mounts.no_copy (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
no_copy: false
|
||||
register: mounts_no_copy_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_no_copy_1 is changed
|
||||
- mounts_no_copy_2 is not changed
|
||||
- mounts_no_copy_3 is changed
|
||||
|
||||
####################################################################
|
||||
## mounts.driver_config ############################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.driver_config
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
driver_config:
|
||||
name: "nfs"
|
||||
options:
|
||||
addr: "127.0.0.1"
|
||||
register: mounts_driver_config_1
|
||||
|
||||
- name: mounts.driver_config
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
driver_config:
|
||||
name: "nfs"
|
||||
options:
|
||||
addr: "127.0.0.1"
|
||||
register: mounts_driver_config_2
|
||||
|
||||
- name: mounts.driver_config
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "volume"
|
||||
driver_config:
|
||||
name: "local"
|
||||
register: mounts_driver_config_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_driver_config_1 is changed
|
||||
- mounts_driver_config_2 is not changed
|
||||
- mounts_driver_config_3 is changed
|
||||
|
||||
####################################################################
|
||||
## mounts.tmpfs_size ###############################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.tmpfs_size
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
tmpfs_size: "50M"
|
||||
register: mounts_tmpfs_size_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: mounts.tmpfs_size (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
tmpfs_size: "50M"
|
||||
register: mounts_tmpfs_size_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: mounts.tmpfs_size (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
tmpfs_size: "25M"
|
||||
register: mounts_tmpfs_size_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_tmpfs_size_1 is changed
|
||||
- mounts_tmpfs_size_2 is not changed
|
||||
- mounts_tmpfs_size_3 is changed
|
||||
when: docker_py_version is version('2.6.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- mounts_tmpfs_size_1 is failed
|
||||
- "'Minimum version required' in mounts_tmpfs_size_1.msg"
|
||||
when: docker_py_version is version('2.6.0', '<')
|
||||
|
||||
####################################################################
|
||||
## mounts.tmpfs_mode ###############################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.tmpfs_mode
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
tmpfs_mode: 0444
|
||||
register: mounts_tmpfs_mode_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: mounts.tmpfs_mode (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
tmpfs_mode: 0444
|
||||
register: mounts_tmpfs_mode_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: mounts.tmpfs_mode (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: "{{ volume_name_1 }}"
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
tmpfs_mode: 0777
|
||||
register: mounts_tmpfs_mode_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_tmpfs_mode_1 is changed
|
||||
- mounts_tmpfs_mode_2 is not changed
|
||||
- mounts_tmpfs_mode_3 is changed
|
||||
when: docker_py_version is version('2.6.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- mounts_tmpfs_size_1 is failed
|
||||
- "'Minimum version required' in mounts_tmpfs_size_1.msg"
|
||||
when: docker_py_version is version('2.6.0', '<')
|
||||
|
||||
####################################################################
|
||||
## mounts.source ###################################################
|
||||
####################################################################
|
||||
|
||||
- name: mounts.source (empty for tmpfs)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: ""
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
register: mounts_tmpfs_source_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: mounts.source (empty for tmpfs idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- source: ""
|
||||
target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
register: mounts_tmpfs_source_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: mounts.source (not specified for tmpfs idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
mounts:
|
||||
- target: "/tmp/{{ volume_name_1 }}"
|
||||
type: "tmpfs"
|
||||
register: mounts_tmpfs_source_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- mounts_tmpfs_source_1 is changed
|
||||
- mounts_tmpfs_source_2 is not changed
|
||||
- mounts_tmpfs_source_3 is not changed
|
||||
when: docker_py_version is version('2.6.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- mounts_tmpfs_source_1 is failed
|
||||
- "'Minimum version required' in mounts_tmpfs_source_1.msg"
|
||||
when: docker_py_version is version('2.6.0', '<')
|
||||
|
||||
####################################################################
|
||||
####################################################################
|
||||
####################################################################
|
||||
|
||||
- name: Delete volumes
|
||||
docker_volume:
|
||||
name: "{{ volume_name }}"
|
||||
state: absent
|
||||
loop:
|
||||
- "{{ volume_name_1 }}"
|
||||
- "{{ volume_name_2 }}"
|
||||
loop_control:
|
||||
loop_var: volume_name
|
||||
ignore_errors: yes
|
|
@ -0,0 +1,450 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-networks' }}"
|
||||
network_name_1: "{{ name_prefix ~ '-network-1' }}"
|
||||
network_name_2: "{{ name_prefix ~ '-network-2' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
network_names: "{{ network_names + [network_name_1, network_name_2] }}"
|
||||
|
||||
- docker_network:
|
||||
name: "{{ network_name }}"
|
||||
driver: "overlay"
|
||||
state: present
|
||||
loop:
|
||||
- "{{ network_name_1 }}"
|
||||
- "{{ network_name_2 }}"
|
||||
loop_control:
|
||||
loop_var: network_name
|
||||
|
||||
#####################################################################
|
||||
## networks #########################################################
|
||||
#####################################################################
|
||||
|
||||
- name: networks
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_1 }}"
|
||||
register: networks_1
|
||||
|
||||
- name: networks (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_1 }}"
|
||||
register: networks_2
|
||||
|
||||
- name: networks (dict idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
register: networks_3
|
||||
|
||||
- name: networks (change more)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_1 }}"
|
||||
- "{{ network_name_2 }}"
|
||||
register: networks_4
|
||||
|
||||
- name: networks (change more idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_1 }}"
|
||||
- "{{ network_name_2 }}"
|
||||
register: networks_5
|
||||
|
||||
- name: networks (change more dict idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
- name: "{{ network_name_2 }}"
|
||||
register: networks_6
|
||||
|
||||
- name: networks (change more mixed idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
- "{{ network_name_2 }}"
|
||||
register: networks_7
|
||||
|
||||
- name: networks (order idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_2 }}"
|
||||
- name: "{{ network_name_1 }}"
|
||||
register: networks_8
|
||||
|
||||
- name: networks (change less)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_2 }}"
|
||||
register: networks_9
|
||||
|
||||
- name: networks (change less idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "{{ network_name_2 }}"
|
||||
register: networks_10
|
||||
|
||||
- name: networks (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks: []
|
||||
register: networks_11
|
||||
|
||||
- name: networks (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks: []
|
||||
register: networks_12
|
||||
|
||||
- name: networks (unknown network)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- "idonotexist"
|
||||
register: networks_13
|
||||
ignore_errors: yes
|
||||
|
||||
- name: networks (missing dict key name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- foo: "bar"
|
||||
register: networks_14
|
||||
ignore_errors: yes
|
||||
|
||||
- name: networks (invalid list type)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- [1, 2, 3]
|
||||
register: networks_15
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- networks_1 is changed
|
||||
- networks_2 is not changed
|
||||
- networks_3 is not changed
|
||||
- networks_4 is changed
|
||||
- networks_5 is not changed
|
||||
- networks_6 is not changed
|
||||
- networks_7 is not changed
|
||||
- networks_8 is not changed
|
||||
- networks_9 is changed
|
||||
- networks_10 is not changed
|
||||
- networks_11 is changed
|
||||
- networks_12 is not changed
|
||||
- networks_13 is failed
|
||||
- '"Could not find a network named: ''idonotexist''" in networks_13.msg'
|
||||
- networks_14 is failed
|
||||
- "'\"name\" is required when networks are passed as dictionaries.' in networks_14.msg"
|
||||
- networks_15 is failed
|
||||
- "'Only a list of strings or dictionaries are allowed to be passed as networks' in networks_15.msg"
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- networks_4.rebuilt == false
|
||||
- networks_7.rebuilt == false
|
||||
when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.7.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- networks_4.rebuilt == true
|
||||
- networks_7.rebuilt == true
|
||||
when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.7.0', '<')
|
||||
|
||||
####################################################################
|
||||
## networks.aliases ################################################
|
||||
####################################################################
|
||||
|
||||
- name: networks.aliases
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases:
|
||||
- "alias1"
|
||||
- "alias2"
|
||||
register: networks_aliases_1
|
||||
|
||||
- name: networks.aliases (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases:
|
||||
- "alias1"
|
||||
- "alias2"
|
||||
register: networks_aliases_2
|
||||
|
||||
- name: networks.aliases (order idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases:
|
||||
- "alias2"
|
||||
- "alias1"
|
||||
register: networks_aliases_3
|
||||
|
||||
- name: networks.aliases (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases:
|
||||
- "alias1"
|
||||
register: networks_aliases_4
|
||||
|
||||
- name: networks.aliases (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases: []
|
||||
register: networks_aliases_5
|
||||
|
||||
- name: networks.aliases (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases: []
|
||||
register: networks_aliases_6
|
||||
|
||||
- name: networks.aliases (invalid type)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
aliases:
|
||||
- [1, 2, 3]
|
||||
register: networks_aliases_7
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- networks_aliases_1 is changed
|
||||
- networks_aliases_2 is not changed
|
||||
- networks_aliases_3 is not changed
|
||||
- networks_aliases_4 is changed
|
||||
- networks_aliases_5 is changed
|
||||
- networks_aliases_6 is not changed
|
||||
- networks_aliases_7 is failed
|
||||
- "'Only strings are allowed as network aliases' in networks_aliases_7.msg"
|
||||
|
||||
####################################################################
|
||||
## networks.options ################################################
|
||||
####################################################################
|
||||
|
||||
- name: networks.options
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options:
|
||||
foo: bar
|
||||
test: hello
|
||||
register: networks_options_1
|
||||
|
||||
- name: networks.options (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options:
|
||||
foo: bar
|
||||
test: hello
|
||||
register: networks_options_2
|
||||
|
||||
- name: networks.options (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options:
|
||||
foo: bar
|
||||
test: hej
|
||||
register: networks_options_3
|
||||
|
||||
- name: networks.options (change less)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options:
|
||||
foo: bar
|
||||
register: networks_options_4
|
||||
|
||||
- name: networks.options (invalid type)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options: [1, 2, 3]
|
||||
register: networks_options_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: networks.options (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options: {}
|
||||
register: networks_options_6
|
||||
|
||||
- name: networks.options (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
networks:
|
||||
- name: "{{ network_name_1 }}"
|
||||
options: {}
|
||||
register: networks_options_7
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- networks_options_1 is changed
|
||||
- networks_options_2 is not changed
|
||||
- networks_options_3 is changed
|
||||
- networks_options_4 is changed
|
||||
- networks_options_5 is failed
|
||||
- "'Only dict is allowed as network options' in networks_options_5.msg"
|
||||
- networks_options_6 is changed
|
||||
- networks_options_7 is not changed
|
||||
|
||||
####################################################################
|
||||
####################################################################
|
||||
####################################################################
|
||||
|
||||
- name: Delete networks
|
||||
docker_network:
|
||||
name: "{{ network_name }}"
|
||||
state: absent
|
||||
force: yes
|
||||
loop:
|
||||
- "{{ network_name_1 }}"
|
||||
- "{{ network_name_2 }}"
|
||||
loop_control:
|
||||
loop_var: network_name
|
||||
ignore_errors: yes
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,214 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-placement' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
|
||||
|
||||
####################################################################
|
||||
## placement.preferences ###########################################
|
||||
####################################################################
|
||||
|
||||
- name: placement.preferences
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
preferences:
|
||||
- spread: "node.labels.test"
|
||||
register: placement_preferences_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.preferences (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
preferences:
|
||||
- spread: "node.labels.test"
|
||||
register: placement_preferences_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.preferences (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
preferences:
|
||||
- spread: "node.labels.test2"
|
||||
register: placement_preferences_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.preferences (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
preferences: []
|
||||
register: placement_preferences_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.preferences (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
preferences: []
|
||||
register: placement_preferences_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- placement_preferences_1 is changed
|
||||
- placement_preferences_2 is not changed
|
||||
- placement_preferences_3 is changed
|
||||
- placement_preferences_4 is changed
|
||||
- placement_preferences_5 is not changed
|
||||
when: docker_api_version is version('1.27', '>=') and docker_py_version is version('2.4.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- placement_preferences_1 is failed
|
||||
- "'Minimum version required' in placement_preferences_1.msg"
|
||||
when: docker_api_version is version('1.27', '<') or docker_py_version is version('2.4.0', '<')
|
||||
|
||||
####################################################################
|
||||
## placement.constraints #####################################################
|
||||
####################################################################
|
||||
|
||||
- name: placement.constraints
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints:
|
||||
- "node.role == manager"
|
||||
register: constraints_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.constraints (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints:
|
||||
- "node.role == manager"
|
||||
register: constraints_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: constraints (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
constraints:
|
||||
- "node.role == manager"
|
||||
register: constraints_2b
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.constraints (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints:
|
||||
- "node.role == worker"
|
||||
register: constraints_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.constraints (add)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints:
|
||||
- "node.role == worker"
|
||||
- "node.label != non_existent_label"
|
||||
register: constraints_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.constraints (order idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints:
|
||||
- "node.label != non_existent_label"
|
||||
- "node.role == worker"
|
||||
register: constraints_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.constraints (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints: []
|
||||
register: constraints_6
|
||||
ignore_errors: yes
|
||||
|
||||
- name: placement.constraints (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
placement:
|
||||
constraints: []
|
||||
register: constraints_7
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- constraints_1 is changed
|
||||
- constraints_2 is not changed
|
||||
- constraints_2b is not changed
|
||||
- constraints_3 is changed
|
||||
- constraints_4 is changed
|
||||
- constraints_5 is not changed
|
||||
- constraints_6 is changed
|
||||
- constraints_7 is not changed
|
||||
when: docker_api_version is version('1.27', '>=') and docker_py_version is version('2.4.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- constraints_1 is failed
|
||||
- "'Minimum version required' in constraints_1.msg"
|
||||
when: docker_api_version is version('1.27', '<') or docker_py_version is version('2.4.0', '<')
|
|
@ -0,0 +1,230 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-resources' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
|
||||
####################################################################
|
||||
## limits.cpus #####################################################
|
||||
####################################################################
|
||||
|
||||
- name: limits.cpus
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limits:
|
||||
cpus: 1
|
||||
register: limit_cpu_1
|
||||
|
||||
- name: limits.cpus (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limits:
|
||||
cpus: 1
|
||||
register: limit_cpu_2
|
||||
|
||||
- name: limit_cpu (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limit_cpu: 1
|
||||
register: limit_cpu_2b
|
||||
|
||||
- name: limits.cpus (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limits:
|
||||
cpus: 0.5
|
||||
register: limit_cpu_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- limit_cpu_1 is changed
|
||||
- limit_cpu_2 is not changed
|
||||
- limit_cpu_2b is not changed
|
||||
- limit_cpu_3 is changed
|
||||
|
||||
###################################################################
|
||||
## limits.memory ##################################################
|
||||
###################################################################
|
||||
|
||||
- name: limits.memory
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limits:
|
||||
memory: 64M
|
||||
register: limit_memory_1
|
||||
|
||||
- name: limits.memory (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limits:
|
||||
memory: 64M
|
||||
register: limit_memory_2
|
||||
|
||||
- name: limit_memory (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limit_memory: "67108864"
|
||||
register: limit_memory_2b
|
||||
|
||||
- name: limits.memory (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
limit_memory: 32M
|
||||
register: limit_memory_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- limit_memory_1 is changed
|
||||
- limit_memory_2 is not changed
|
||||
- limit_memory_2b is not changed
|
||||
- limit_memory_3 is changed
|
||||
|
||||
###################################################################
|
||||
## reservations.cpus ##############################################
|
||||
###################################################################
|
||||
|
||||
- name: reserve_cpu
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reservations:
|
||||
cpus: 1
|
||||
register: reserve_cpu_1
|
||||
|
||||
- name: reserve_cpu (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reservations:
|
||||
cpus: 1
|
||||
register: reserve_cpu_2
|
||||
|
||||
- name: reserve_cpu (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reserve_cpu: 1
|
||||
register: reserve_cpu_2b
|
||||
|
||||
- name: reserve_cpu (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reservations:
|
||||
cpus: 0.5
|
||||
register: reserve_cpu_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- reserve_cpu_1 is changed
|
||||
- reserve_cpu_2 is not changed
|
||||
- reserve_cpu_2b is not changed
|
||||
- reserve_cpu_3 is changed
|
||||
|
||||
###################################################################
|
||||
## reservations.memory ############################################
|
||||
###################################################################
|
||||
|
||||
- name: reservations.memory
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reservations:
|
||||
memory: 64M
|
||||
register: reserve_memory_1
|
||||
|
||||
- name: reservations.memory (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reserve_memory: 64M
|
||||
register: reserve_memory_2
|
||||
|
||||
- name: reserve_memory (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reserve_memory: "67108864"
|
||||
register: reserve_memory_2b
|
||||
|
||||
- name: reservations.memory (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
reserve_memory: 32M
|
||||
register: reserve_memory_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- reserve_memory_1 is changed
|
||||
- reserve_memory_2 is not changed
|
||||
- reserve_memory_2b is not changed
|
||||
- reserve_memory_3 is changed
|
|
@ -0,0 +1,233 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-restart_config' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
|
||||
###################################################################
|
||||
## restart_config.condition #######################################
|
||||
###################################################################
|
||||
|
||||
- name: restart_config.condition
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
condition: "on-failure"
|
||||
register: restart_policy_1
|
||||
|
||||
- name: restart_config.condition (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
condition: "on-failure"
|
||||
register: restart_policy_2
|
||||
|
||||
- name: restart_policy (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_policy: "on-failure"
|
||||
register: restart_policy_2b
|
||||
|
||||
- name: restart_config.condition (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
condition: "any"
|
||||
register: restart_policy_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- restart_policy_1 is changed
|
||||
- restart_policy_2 is not changed
|
||||
- restart_policy_2b is not changed
|
||||
- restart_policy_3 is changed
|
||||
|
||||
###################################################################
|
||||
## restart_config.max_attempts ####################################
|
||||
###################################################################
|
||||
|
||||
- name: restart_config.max_attempts
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
max_attempts: 1
|
||||
register: restart_policy_attempts_1
|
||||
|
||||
- name: restart_config.max_attempts (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
max_attempts: 1
|
||||
register: restart_policy_attempts_2
|
||||
|
||||
- name: restart_policy_attempts (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_policy_attempts: 1
|
||||
register: restart_policy_attempts_2b
|
||||
|
||||
- name: restart_config.max_attempts (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
max_attempts: 2
|
||||
register: restart_policy_attempts_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- restart_policy_attempts_1 is changed
|
||||
- restart_policy_attempts_2 is not changed
|
||||
- restart_policy_attempts_2b is not changed
|
||||
- restart_policy_attempts_3 is changed
|
||||
|
||||
###################################################################
|
||||
## restart_config.delay ###########################################
|
||||
###################################################################
|
||||
|
||||
- name: restart_config.delay
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
delay: 5s
|
||||
register: restart_policy_delay_1
|
||||
|
||||
- name: restart_config.delay (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
delay: 5s
|
||||
register: restart_policy_delay_2
|
||||
|
||||
- name: restart_policy_delay (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_policy_delay: 5000000000
|
||||
register: restart_policy_delay_2b
|
||||
|
||||
- name: restart_config.delay (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
delay: 10s
|
||||
register: restart_policy_delay_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- restart_policy_delay_1 is changed
|
||||
- restart_policy_delay_2 is not changed
|
||||
- restart_policy_delay_2b is not changed
|
||||
- restart_policy_delay_3 is changed
|
||||
|
||||
###################################################################
|
||||
## restart_config.window ##########################################
|
||||
###################################################################
|
||||
|
||||
- name: restart_config.window
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
window: 10s
|
||||
register: restart_policy_window_1
|
||||
|
||||
- name: restart_config.window (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
window: 10s
|
||||
register: restart_policy_window_2
|
||||
|
||||
- name: restart_policy_window (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_policy_window: 10000000000
|
||||
register: restart_policy_window_2b
|
||||
|
||||
- name: restart_config.window (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
restart_config:
|
||||
window: 20s
|
||||
register: restart_policy_window_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- restart_policy_window_1 is changed
|
||||
- restart_policy_window_2 is not changed
|
||||
- restart_policy_window_2b is not changed
|
||||
- restart_policy_window_3 is changed
|
|
@ -0,0 +1,339 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-rollback_config' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
|
||||
###################################################################
|
||||
## rollback_config.delay ############################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.delay
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
delay: 5s
|
||||
register: rollback_config_delay_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.delay (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
delay: 5s
|
||||
register: rollback_config_delay_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.delay (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
delay: 12s
|
||||
register: rollback_config_delay_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_delay_1 is changed
|
||||
- rollback_config_delay_2 is not changed
|
||||
- rollback_config_delay_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_delay_1 is failed
|
||||
- "'Minimum version required' in rollback_config_delay_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## rollback_config.failure_action ###################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.failure_action
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
failure_action: "pause"
|
||||
register: rollback_config_failure_action_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.failure_action (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
failure_action: "pause"
|
||||
register: rollback_config_failure_action_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.failure_action (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
failure_action: "continue"
|
||||
register: rollback_config_failure_action_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_failure_action_1 is changed
|
||||
- rollback_config_failure_action_2 is not changed
|
||||
- rollback_config_failure_action_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_failure_action_1 is failed
|
||||
- "'Minimum version required' in rollback_config_failure_action_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## rollback_config.max_failure_ratio ################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.max_failure_ratio
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
max_failure_ratio: 0.25
|
||||
register: rollback_config_max_failure_ratio_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.max_failure_ratio (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
max_failure_ratio: 0.25
|
||||
register: rollback_config_max_failure_ratio_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.max_failure_ratio (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
max_failure_ratio: 0.50
|
||||
register: rollback_config_max_failure_ratio_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_max_failure_ratio_1 is changed
|
||||
- rollback_config_max_failure_ratio_2 is not changed
|
||||
- rollback_config_max_failure_ratio_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_max_failure_ratio_1 is failed
|
||||
- "'Minimum version required' in rollback_config_max_failure_ratio_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
# rollback_config.monitor ###########################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.monitor
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
monitor: 10s
|
||||
register: rollback_config_monitor_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.monitor (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
monitor: 10s
|
||||
register: rollback_config_monitor_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.monitor (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
monitor: 60s
|
||||
register: rollback_config_monitor_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_monitor_1 is changed
|
||||
- rollback_config_monitor_2 is not changed
|
||||
- rollback_config_monitor_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_monitor_1 is failed
|
||||
- "'Minimum version required' in rollback_config_monitor_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
# rollback_config.order #############################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.order
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
order: "start-first"
|
||||
register: rollback_config_order_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.order (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
order: "start-first"
|
||||
register: rollback_config_order_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.order (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
order: "stop-first"
|
||||
register: rollback_config_order_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_order_1 is changed
|
||||
- rollback_config_order_2 is not changed
|
||||
- rollback_config_order_3 is changed
|
||||
when: docker_api_version is version('1.29', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_order_1 is failed
|
||||
- "'Minimum version required' in rollback_config_order_1.msg"
|
||||
when: docker_api_version is version('1.29', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## rollback_config.parallelism ######################################
|
||||
###################################################################
|
||||
|
||||
- name: rollback_config.parallelism
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
parallelism: 2
|
||||
register: rollback_config_parallelism_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.parallelism (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
parallelism: 2
|
||||
register: rollback_config_parallelism_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: rollback_config.parallelism (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
rollback_config:
|
||||
parallelism: 1
|
||||
register: rollback_config_parallelism_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_parallelism_1 is changed
|
||||
- rollback_config_parallelism_2 is not changed
|
||||
- rollback_config_parallelism_3 is changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- rollback_config_parallelism_1 is failed
|
||||
- "'Minimum version required' in rollback_config_parallelism_1.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
|
@ -0,0 +1,411 @@
|
|||
---
|
||||
|
||||
- name: Registering container name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-secrets' }}"
|
||||
secret_name_1: "{{ name_prefix ~ '-secret-1' }}"
|
||||
secret_name_2: "{{ name_prefix ~ '-secret-2' }}"
|
||||
|
||||
- name: Registering container name
|
||||
set_fact:
|
||||
secret_names: "{{ secret_names + [secret_name_1, secret_name_2] }}"
|
||||
|
||||
- docker_secret:
|
||||
name: "{{ secret_name_1 }}"
|
||||
data: "secret1"
|
||||
state: "present"
|
||||
register: "secret_result_1"
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
|
||||
|
||||
- docker_secret:
|
||||
name: "{{ secret_name_2 }}"
|
||||
data: "secret2"
|
||||
state: "present"
|
||||
register: "secret_result_2"
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
|
||||
|
||||
####################################################################
|
||||
## secrets #########################################################
|
||||
####################################################################
|
||||
|
||||
- name: secrets
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
filename: "/run/secrets/{{ secret_name_1 }}.txt"
|
||||
register: secrets_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_name: "{{ secret_name_1 }}"
|
||||
filename: "/run/secrets/{{ secret_name_1 }}.txt"
|
||||
register: secrets_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (add)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
filename: "/run/secrets/{{ secret_name_1 }}.txt"
|
||||
- secret_name: "{{ secret_name_2 }}"
|
||||
filename: "/run/secrets/{{ secret_name_2 }}.txt"
|
||||
register: secrets_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (add idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_name: "{{ secret_name_1 }}"
|
||||
filename: "/run/secrets/{{ secret_name_1 }}.txt"
|
||||
- secret_id: "{{ secret_result_2.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_2 }}"
|
||||
filename: "/run/secrets/{{ secret_name_2 }}.txt"
|
||||
register: secrets_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (add idempotency no id)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_name: "{{ secret_name_1 }}"
|
||||
filename: "/run/secrets/{{ secret_name_1 }}.txt"
|
||||
- secret_name: "{{ secret_name_2 }}"
|
||||
filename: "/run/secrets/{{ secret_name_2 }}.txt"
|
||||
register: secrets_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (order idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_name: "{{ secret_name_2 }}"
|
||||
filename: "/run/secrets/{{ secret_name_2 }}.txt"
|
||||
- secret_name: "{{ secret_name_1 }}"
|
||||
filename: "/run/secrets/{{ secret_name_1 }}.txt"
|
||||
register: secrets_6
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (empty)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets: []
|
||||
register: secrets_7
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (empty idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets: []
|
||||
register: secrets_8
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is changed
|
||||
- secrets_2 is not changed
|
||||
- secrets_3 is changed
|
||||
- secrets_4 is not changed
|
||||
- secrets_5 is not changed
|
||||
- secrets_6 is not changed
|
||||
- secrets_7 is changed
|
||||
- secrets_8 is not changed
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is failed
|
||||
- "'Minimum version required' in secrets_1.msg"
|
||||
when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
|
||||
|
||||
####################################################################
|
||||
## secrets (uid) ###################################################
|
||||
####################################################################
|
||||
|
||||
- name: secrets (uid int)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
uid: 1000
|
||||
register: secrets_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (uid int idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
uid: 1000
|
||||
register: secrets_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (uid int change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
uid: 1002
|
||||
register: secrets_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (uid str)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
uid: "1001"
|
||||
register: secrets_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (uid str idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
uid: "1001"
|
||||
register: secrets_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is changed
|
||||
- secrets_2 is not changed
|
||||
- secrets_3 is changed
|
||||
- secrets_4 is changed
|
||||
- secrets_5 is not changed
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is failed
|
||||
- "'Minimum version required' in secrets_1.msg"
|
||||
when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
|
||||
|
||||
####################################################################
|
||||
## secrets (gid) ###################################################
|
||||
####################################################################
|
||||
|
||||
- name: secrets (gid int)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
gid: 1001
|
||||
register: secrets_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (gid int idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
gid: 1001
|
||||
register: secrets_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (gid int change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
gid: 1002
|
||||
register: secrets_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (gid str)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
gid: "1003"
|
||||
register: secrets_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (gid str idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
gid: "1003"
|
||||
register: secrets_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is changed
|
||||
- secrets_2 is not changed
|
||||
- secrets_3 is changed
|
||||
- secrets_4 is changed
|
||||
- secrets_5 is not changed
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is failed
|
||||
- "'Minimum version required' in secrets_1.msg"
|
||||
when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
|
||||
|
||||
####################################################################
|
||||
## secrets (mode) ##################################################
|
||||
####################################################################
|
||||
|
||||
- name: secrets (mode)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
mode: 0600
|
||||
register: secrets_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (mode idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
mode: 0600
|
||||
register: secrets_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: secrets (mode change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
secrets:
|
||||
- secret_id: "{{ secret_result_1.secret_id|default('') }}"
|
||||
secret_name: "{{ secret_name_1 }}"
|
||||
mode: 0777
|
||||
register: secrets_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is changed
|
||||
- secrets_2 is not changed
|
||||
- secrets_3 is changed
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.4.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- secrets_1 is failed
|
||||
- "'Minimum version required' in secrets_1.msg"
|
||||
when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.4.0', '<')
|
||||
|
||||
####################################################################
|
||||
####################################################################
|
||||
####################################################################
|
||||
|
||||
- name: Delete secrets
|
||||
docker_secret:
|
||||
name: "{{ secret_name }}"
|
||||
state: absent
|
||||
force: yes
|
||||
loop:
|
||||
- "{{ secret_name_1 }}"
|
||||
- "{{ secret_name_2 }}"
|
||||
loop_control:
|
||||
loop_var: secret_name
|
||||
ignore_errors: yes
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
|
|
@ -0,0 +1,408 @@
|
|||
---
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_name: "{{ name_prefix ~ '-update_config' }}"
|
||||
|
||||
- name: Registering service name
|
||||
set_fact:
|
||||
service_names: "{{ service_names + [service_name] }}"
|
||||
|
||||
###################################################################
|
||||
## update_config.delay ############################################
|
||||
###################################################################
|
||||
|
||||
- name: update_config.delay
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
delay: 5s
|
||||
register: update_delay_1
|
||||
|
||||
- name: update_config.delay (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
delay: 5s
|
||||
register: update_delay_2
|
||||
|
||||
- name: update_delay (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_delay: 5000000000
|
||||
register: update_delay_2b
|
||||
|
||||
- name: update_config.delay (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
delay: 12s
|
||||
register: update_delay_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_delay_1 is changed
|
||||
- update_delay_2 is not changed
|
||||
- update_delay_2b is not changed
|
||||
- update_delay_3 is changed
|
||||
|
||||
###################################################################
|
||||
## update_config.failure_action ###################################
|
||||
###################################################################
|
||||
|
||||
- name: update_config.failure_action
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
failure_action: "pause"
|
||||
register: update_failure_action_1
|
||||
|
||||
- name: update_config.failure_action (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
failure_action: "pause"
|
||||
register: update_failure_action_2
|
||||
|
||||
- name: update_failure_action (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_failure_action: "pause"
|
||||
register: update_failure_action_2b
|
||||
|
||||
- name: update_config.failure_action (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
failure_action: "continue"
|
||||
register: update_failure_action_3
|
||||
|
||||
- name: update_config.failure_action (rollback)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
failure_action: "rollback"
|
||||
register: update_failure_action_4
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.failure_action (rollback idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_failure_action: "rollback"
|
||||
register: update_failure_action_5
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_failure_action_1 is changed
|
||||
- update_failure_action_2 is not changed
|
||||
- update_failure_action_2b is not changed
|
||||
- update_failure_action_3 is changed
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_failure_action_4 is changed
|
||||
- update_failure_action_5 is not changed
|
||||
when: docker_api_version is version('1.28', '>=') and docker_py_version is version('3.5.0', '>=')
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_failure_action_4 is failed
|
||||
- "'Minimum version required' in update_failure_action_4.msg"
|
||||
when: docker_api_version is version('1.28', '<') or docker_py_version is version('3.5.0', '<')
|
||||
|
||||
###################################################################
|
||||
## update_config.max_failure_ratio ################################
|
||||
###################################################################
|
||||
|
||||
- name: update_config.max_failure_ratio
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
max_failure_ratio: 0.25
|
||||
register: update_max_failure_ratio_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.max_failure_ratio (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
max_failure_ratio: 0.25
|
||||
register: update_max_failure_ratio_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_max_failure_ratio (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_max_failure_ratio: 0.25
|
||||
register: update_max_failure_ratio_2b
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.max_failure_ratio (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
max_failure_ratio: 0.50
|
||||
register: update_max_failure_ratio_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_max_failure_ratio_1 is changed
|
||||
- update_max_failure_ratio_2 is not changed
|
||||
- update_max_failure_ratio_2b is not changed
|
||||
- update_max_failure_ratio_3 is changed
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- update_max_failure_ratio_1 is failed
|
||||
- "'Minimum version required' in update_max_failure_ratio_1.msg"
|
||||
when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.1.0', '<')
|
||||
|
||||
###################################################################
|
||||
# update_config.monitor ###########################################
|
||||
###################################################################
|
||||
|
||||
- name: update_config.monitor
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
monitor: 10s
|
||||
register: update_monitor_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.monitor (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
monitor: 10s
|
||||
register: update_monitor_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_monitor (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_monitor: 10s
|
||||
register: update_monitor_2b
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.monitor (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
monitor: 60s
|
||||
register: update_monitor_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_monitor_1 is changed
|
||||
- update_monitor_2 is not changed
|
||||
- update_monitor_2b is not changed
|
||||
- update_monitor_3 is changed
|
||||
when: docker_api_version is version('1.25', '>=') and docker_py_version is version('2.1.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- update_monitor_1 is failed
|
||||
- "'Minimum version required' in update_monitor_1.msg"
|
||||
when: docker_api_version is version('1.25', '<') or docker_py_version is version('2.1.0', '<')
|
||||
|
||||
###################################################################
|
||||
# update_config.order #############################################
|
||||
###################################################################
|
||||
|
||||
- name: update_config.order
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
order: "start-first"
|
||||
register: update_order_1
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.order (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
order: "start-first"
|
||||
register: update_order_2
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_order (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_order: "start-first"
|
||||
register: update_order_2b
|
||||
ignore_errors: yes
|
||||
|
||||
- name: update_config.order (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
order: "stop-first"
|
||||
register: update_order_3
|
||||
ignore_errors: yes
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_order_1 is changed
|
||||
- update_order_2 is not changed
|
||||
- update_order_2b is not changed
|
||||
- update_order_3 is changed
|
||||
when: docker_api_version is version('1.29', '>=') and docker_py_version is version('2.7.0', '>=')
|
||||
- assert:
|
||||
that:
|
||||
- update_order_1 is failed
|
||||
- "'Minimum version required' in update_order_1.msg"
|
||||
when: docker_api_version is version('1.29', '<') or docker_py_version is version('2.7.0', '<')
|
||||
|
||||
###################################################################
|
||||
## update_config.parallelism ######################################
|
||||
###################################################################
|
||||
|
||||
- name: update_config.parallelism
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
parallelism: 2
|
||||
register: update_parallelism_1
|
||||
|
||||
- name: update_config.parallelism (idempotency)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
parallelism: 2
|
||||
register: update_parallelism_2
|
||||
|
||||
- name: update_parallelism (idempotency, old name)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_parallelism: 2
|
||||
register: update_parallelism_2b
|
||||
|
||||
- name: update_config.parallelism (change)
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: alpine:3.8
|
||||
resolve_image: no
|
||||
command: '/bin/sh -v -c "sleep 10m"'
|
||||
update_config:
|
||||
parallelism: 1
|
||||
register: update_parallelism_3
|
||||
|
||||
- name: cleanup
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
state: absent
|
||||
diff: no
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- update_parallelism_1 is changed
|
||||
- update_parallelism_2 is not changed
|
||||
- update_parallelism_2b is not changed
|
||||
- update_parallelism_3 is changed
|
Loading…
Add table
Add a link
Reference in a new issue