New module: add docker_stack module (clound/docker/docker_stack) (#24588)

* add docker_stack module + tests
This commit is contained in:
Dario Zanzico 2018-09-18 10:54:44 +02:00 committed by John R Barker
commit 54c3d1c24e
8 changed files with 433 additions and 0 deletions

View file

@ -0,0 +1,4 @@
shippable/posix/group2
skip/osx
skip/freebsd
destructive

View file

@ -0,0 +1,5 @@
version: '3'
services:
busybox:
image: busybox:latest
command: sleep 3600

View file

@ -0,0 +1,5 @@
version: '3'
services:
busybox:
environment:
envvar: value

View file

@ -0,0 +1,3 @@
---
dependencies:
- setup_docker

View file

@ -0,0 +1,4 @@
- include_tasks: test_stack.yml
when:
- ansible_os_family != 'RedHat' or ansible_distribution_major_version != '6'
- ansible_distribution != 'Fedora' or ansible_distribution_major_version|int >= 26

View file

@ -0,0 +1,99 @@
- name: Create a Swarm cluster
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address}}"
- name: install docker_swarm python requirements
pip:
name: jsondiff,pyyaml
- name: Create a stack without name
register: output
docker_stack:
state: present
ignore_errors: yes
- name: assert failure when name not set
assert:
that:
- output is failed
- 'output.msg == "missing required arguments: name"'
- name: Create a stack without compose
register: output
docker_stack:
name: test_stack
ignore_errors: yes
- name: assert failure when compose not set
assert:
that:
- output is failed
- 'output.msg == "compose parameter must be a list containing at least one element"'
- name: Ensure stack is absent
register: output
docker_stack:
state: absent
name: test_stack
absent_retries: 30
- name: Copy compose files
copy:
src: "{{item}}"
dest: "{{output_dir}}/"
with_items:
- stack_compose_base.yml
- stack_compose_overrides.yml
- name: Create stack with compose file
register: output
docker_stack:
state: present
name: test_stack
compose:
- "{{output_dir}}/stack_compose_base.yml"
- name: assert test_stack changed on stack creation with compose file
assert:
that:
- output is changed
- name: Update stack with YAML
register: output
docker_stack:
state: present
name: test_stack
compose:
- "{{stack_compose_base}}"
- "{{stack_compose_overrides}}"
- name: assert test_stack correctly changed on update with yaml
assert:
that:
- output is changed
- output.docker_stack_spec_diff == stack_update_expected_diff
- name: Delete stack
register: output
docker_stack:
state: absent
name: test_stack
absent_retries: 30
- name: assert delete of existing stack returns changed
assert:
that:
- output is changed
- name: Delete stack again
register: output
docker_stack:
state: absent
name: test_stack
absent_retries: 30
- name: assert state=absent idempotency
assert:
that:
- output is not changed

View file

@ -0,0 +1,15 @@
stack_compose_base:
version: '3'
services:
busybox:
image: busybox:latest
command: sleep 3600
stack_compose_overrides:
version: '3'
services:
busybox:
environment:
envvar: value
stack_update_expected_diff: '{"test_stack_busybox": {"TaskTemplate": {"ContainerSpec": {"Env": ["envvar=value"]}}}}'