|
|
|
---
|
|
|
|
- block:
|
|
|
|
- name: Make sure we're not already using Docker swarm
|
|
|
|
docker_swarm:
|
|
|
|
state: absent
|
|
|
|
force: true
|
|
|
|
|
|
|
|
- name: Try to get docker_swarm_facts when docker is not running in swarm mode
|
|
|
|
docker_swarm_facts:
|
|
|
|
ignore_errors: yes
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert failure when called when swarm is not in use or not run on mamager node
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output is failed'
|
|
|
|
- 'output.msg == "Error running docker swarm module: must run on swarm manager node"'
|
|
|
|
- 'output.can_talk_to_docker == true'
|
|
|
|
- 'output.docker_swarm_active == false'
|
|
|
|
- 'output.docker_swarm_manager == false'
|
|
|
|
|
|
|
|
- name: Create a Swarm cluster
|
|
|
|
docker_swarm:
|
|
|
|
state: present
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert changed when create a new swarm cluster
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output is changed'
|
|
|
|
- 'output.actions[0] | regex_search("New Swarm cluster created: ")'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Manager'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Worker'
|
|
|
|
|
|
|
|
- name: Try to get docker_swarm_facts when docker is running in swarm mode and as manager
|
|
|
|
docker_swarm_facts:
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert creding docker swarm facts
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output.swarm_facts.JoinTokens.Manager'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Worker'
|
|
|
|
- 'output.swarm_facts.ID'
|
|
|
|
- 'output.can_talk_to_docker == true'
|
|
|
|
- 'output.docker_swarm_active == true'
|
|
|
|
- 'output.docker_swarm_manager == true'
|
|
|
|
|
|
|
|
- name: Try to get docker_swarm_facts and list of nodes when docker is running in swarm mode and as manager
|
|
|
|
docker_swarm_facts:
|
|
|
|
nodes: yes
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert reding swarm facts with list of nodes option
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output.swarm_facts.JoinTokens.Manager'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Worker'
|
|
|
|
- 'output.swarm_facts.ID'
|
|
|
|
- 'output.nodes[0].ID is string'
|
|
|
|
- 'output.can_talk_to_docker == true'
|
|
|
|
- 'output.docker_swarm_active == true'
|
|
|
|
- 'output.docker_swarm_manager == true'
|
|
|
|
|
|
|
|
- name: Get local docker node name
|
|
|
|
set_fact:
|
|
|
|
localnodename: "{{ output.nodes[0].Hostname }}"
|
|
|
|
|
|
|
|
|
|
|
|
- name: Try to get docker_swarm_facts and verbose list of nodes when docker is running in swarm mode and as manager
|
|
|
|
docker_swarm_facts:
|
|
|
|
nodes: yes
|
|
|
|
verbose_output: yes
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert reading swarm facts with list of nodes and versbose output options
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output.swarm_facts.JoinTokens.Manager'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Worker'
|
|
|
|
- 'output.swarm_facts.ID'
|
|
|
|
- 'output.nodes[0].ID is string'
|
|
|
|
- 'output.nodes[0].CreatedAt'
|
|
|
|
- 'output.can_talk_to_docker == true'
|
|
|
|
- 'output.docker_swarm_active == true'
|
|
|
|
- 'output.docker_swarm_manager == true'
|
|
|
|
|
|
|
|
- name: Try to get docker_swarm_facts and list of nodes with filters providing existing node name
|
|
|
|
docker_swarm_facts:
|
|
|
|
nodes: yes
|
|
|
|
nodes_filters:
|
|
|
|
name: "{{ localnodename }}"
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert reading reading swarm facts and using node filter (random node name)
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output.swarm_facts.JoinTokens.Manager'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Worker'
|
|
|
|
- 'output.swarm_facts.ID'
|
|
|
|
- 'output.nodes | length == 1'
|
|
|
|
- 'output.can_talk_to_docker == true'
|
|
|
|
- 'output.docker_swarm_active == true'
|
|
|
|
- 'output.docker_swarm_manager == true'
|
|
|
|
|
|
|
|
- name: Create random name
|
|
|
|
set_fact:
|
|
|
|
randomnodename: "{{ 'node-%0x' % ((2**32) | random) }}"
|
|
|
|
|
|
|
|
- name: Try to get docker_swarm_facts and list of nodes with filters providing non-existing random node name
|
|
|
|
docker_swarm_facts:
|
|
|
|
nodes: yes
|
|
|
|
nodes_filters:
|
|
|
|
name: "{{ randomnodename }}"
|
|
|
|
register: output
|
|
|
|
|
|
|
|
- name: assert reading reading swarm facts and using node filter (random node name)
|
|
|
|
assert:
|
|
|
|
that:
|
|
|
|
- 'output.swarm_facts.JoinTokens.Manager'
|
|
|
|
- 'output.swarm_facts.JoinTokens.Worker'
|
|
|
|
- 'output.swarm_facts.ID'
|
|
|
|
- 'output.nodes | length == 0'
|
|
|
|
- 'output.can_talk_to_docker == true'
|
|
|
|
- 'output.docker_swarm_active == true'
|
|
|
|
- 'output.docker_swarm_manager == true'
|
|
|
|
|
|
|
|
always:
|
|
|
|
- name: Cleanup
|
|
|
|
docker_swarm:
|
|
|
|
state: absent
|
|
|
|
force: true
|