Initial commit

This commit is contained in:
Ansible Core Team 2020-03-09 09:11:07 +00:00
commit aebc1b03fd
4861 changed files with 812621 additions and 0 deletions

View file

@ -0,0 +1,35 @@
- name: CLEANUP | Leave Docker Swarm
docker_swarm:
state: absent
force: true
ignore_errors: yes
register: leave_swarm
- name: CLEANUP | Kill Docker and cleanup
when: leave_swarm is failed
block:
- name: CLEANUP | Kill docker daemon
command: systemctl kill -s 9 docker
become: yes
- name: CLEANUP | Clear out /var/lib/docker
shell: rm -rf /var/lib/docker/*
args:
warn: no
- name: CLEANUP | Start docker daemon
service:
name: docker
state: started
become: yes
- name: CLEANUP | Wait for docker daemon to be fully started
command: docker ps
register: result
until: result is success
retries: 10
- name: CLEANUP | Leave Docker Swarm
docker_swarm:
state: absent
force: true

View file

@ -0,0 +1,18 @@
- name: Run Docker Swarm tests
when:
- docker_py_version is version('1.10.0', '>=')
- docker_api_version is version('1.25', '>=')
block:
- include_tasks: "{{ item }}"
with_fileglob:
- 'tests/*.yml'
always:
- import_tasks: cleanup.yml
- fail:
msg: "Too old docker / docker-py version to run docker_swarm tests!"
when:
- not(docker_py_version is version('1.10.0', '>=') and docker_api_version is version('1.25', '>='))
- (ansible_distribution != 'CentOS' or ansible_distribution_major_version|int > 6)

View file

@ -0,0 +1,158 @@
- debug:
msg: Running tests/basic.yml
####################################################################
## Errors ##########################################################
####################################################################
- name: Test parameters with state=join
docker_swarm:
state: join
ignore_errors: yes
register: output
- name: assert failure when called with state=join and no advertise_addr,remote_addrs,join_token
assert:
that:
- 'output.failed'
- 'output.msg == "state is join but all of the following are missing: advertise_addr, remote_addrs, join_token"'
- name: Test parameters with state=remove
docker_swarm:
state: remove
ignore_errors: yes
register: output
- name: assert failure when called with state=remove and no node_id
assert:
that:
- 'output.failed'
- 'output.msg == "state is remove but all of the following are missing: node_id"'
####################################################################
## Creation ########################################################
####################################################################
- name: Create a Swarm cluster (check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
check_mode: yes
diff: yes
register: output_1
- name: Create a Swarm cluster
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
diff: yes
register: output_2
- name: Create a Swarm cluster (idempotent)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
diff: yes
register: output_3
- name: Create a Swarm cluster (idempotent, check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
check_mode: yes
diff: yes
register: output_4
- name: Create a Swarm cluster (force re-create)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
force: yes
diff: yes
register: output_5
- name: Create a Swarm cluster (force re-create, check mode)
docker_swarm:
state: present
advertise_addr: "{{ansible_default_ipv4.address | default('127.0.0.1')}}"
force: yes
check_mode: yes
diff: yes
register: output_6
- name: assert changed when create a new swarm cluster
assert:
that:
- 'output_1 is changed'
- 'output_1.diff.before is defined'
- 'output_1.diff.after is defined'
- 'output_2 is changed'
- 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- 'output_2.swarm_facts.JoinTokens.Manager'
- 'output_2.swarm_facts.JoinTokens.Worker'
- 'output_2.diff.before is defined'
- 'output_2.diff.after is defined'
- 'output_3 is not changed'
- 'output_3.diff.before is defined'
- 'output_3.diff.after is defined'
- 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'
- 'output_5 is changed'
- 'output_5.diff.before is defined'
- 'output_5.diff.after is defined'
- 'output_6 is changed'
- 'output_6.diff.before is defined'
- 'output_6.diff.after is defined'
####################################################################
## Removal #########################################################
####################################################################
- name: Remove a Swarm cluster (check mode)
docker_swarm:
state: absent
force: true
check_mode: yes
diff: yes
register: output_1
- name: Remove a Swarm cluster
docker_swarm:
state: absent
force: true
diff: yes
register: output_2
- name: Remove a Swarm cluster (idempotent)
docker_swarm:
state: absent
force: true
diff: yes
register: output_3
- name: Remove a Swarm cluster (idempotent, check mode)
docker_swarm:
state: absent
force: true
check_mode: yes
diff: yes
register: output_4
- name: assert changed when remove a swarm cluster
assert:
that:
- 'output_1 is changed'
- 'output_1.diff.before is defined'
- 'output_1.diff.after is defined'
- 'output_2 is changed'
- 'output_2.actions[0] == "Node has left the swarm cluster"'
- 'output_2.diff.before is defined'
- 'output_2.diff.after is defined'
- 'output_3 is not changed'
- 'output_3.diff.before is defined'
- 'output_3.diff.after is defined'
- 'output_4 is not changed'
- 'output_4.diff.before is defined'
- 'output_4.diff.after is defined'
- include_tasks: cleanup.yml

View file

@ -0,0 +1,114 @@
- debug:
msg: Running tests/options-ca.yml
- name: options-ca
when: pyopenssl_version.stdout is version('0.15', '>=') or cryptography_version.stdout is version('1.6', '>=')
block:
- name: Generate privatekey
loop:
- key1
- key2
loop_control:
loop_var: key
community.crypto.openssl_privatekey:
path: '{{ output_dir }}/ansible_{{ key }}.key'
size: 2048
mode: '0666'
- name: Generate CSR
loop:
- key1
- key2
loop_control:
loop_var: key
community.crypto.openssl_csr:
path: '{{ output_dir }}/ansible_{{ key }}.csr'
privatekey_path: '{{ output_dir }}/ansible_{{ key }}.key'
basic_constraints:
- CA:TRUE
key_usage:
- keyCertSign
- name: Generate self-signed certificate
loop:
- key1
- key2
loop_control:
loop_var: key
community.crypto.openssl_certificate:
path: '{{ output_dir }}/ansible_{{ key }}.pem'
privatekey_path: '{{ output_dir }}/ansible_{{ key }}.key'
csr_path: '{{ output_dir }}/ansible_{{ key }}.csr'
provider: selfsigned
- name: signing_ca_cert and signing_ca_key (check mode)
docker_swarm:
advertise_addr: '{{ansible_default_ipv4.address | default(''127.0.0.1'')}}'
state: present
signing_ca_cert: '{{ lookup(''file'', output_dir ~ ''/ansible_key1.pem'') }}'
signing_ca_key: '{{ lookup(''file'', output_dir ~ ''/ansible_key1.key'') }}'
timeout: 120
check_mode: true
diff: true
register: output_1
ignore_errors: true
- name: signing_ca_cert and signing_ca_key
docker_swarm:
advertise_addr: '{{ansible_default_ipv4.address | default(''127.0.0.1'')}}'
state: present
signing_ca_cert: '{{ lookup(''file'', output_dir ~ ''/ansible_key1.pem'') }}'
signing_ca_key: '{{ lookup(''file'', output_dir ~ ''/ansible_key1.key'') }}'
timeout: 120
diff: true
register: output_2
ignore_errors: true
- name: Private key
debug: msg="{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
- name: Cert
debug: msg="{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
- docker_swarm_info: null
register: output
ignore_errors: true
- debug: var=output
- name: signing_ca_cert and signing_ca_key (change, check mode)
docker_swarm:
state: present
signing_ca_cert: '{{ lookup(''file'', output_dir ~ ''/ansible_key2.pem'') }}'
signing_ca_key: '{{ lookup(''file'', output_dir ~ ''/ansible_key2.key'') }}'
timeout: 120
check_mode: true
diff: true
register: output_5
ignore_errors: true
- name: signing_ca_cert and signing_ca_key (change)
docker_swarm:
state: present
signing_ca_cert: '{{ lookup(''file'', output_dir ~ ''/ansible_key2.pem'') }}'
signing_ca_key: '{{ lookup(''file'', output_dir ~ ''/ansible_key2.key'') }}'
timeout: 120
diff: true
register: output_6
ignore_errors: true
- name: assert signing_ca_cert and signing_ca_key
assert:
that:
- output_1 is changed
- 'output_1.actions[0] | regex_search("New Swarm cluster created: ")'
- output_1.diff.before is defined
- output_1.diff.after is defined
- output_2 is changed
- 'output_2.actions[0] | regex_search("New Swarm cluster created: ")'
- output_2.diff.before is defined
- output_2.diff.after is defined
- output_5 is changed
- output_5.actions[0] == "Swarm cluster updated"
- output_5.diff.before is defined
- output_5.diff.after is defined
- output_6 is changed
- output_6.actions[0] == "Swarm cluster updated"
- output_6.diff.before is defined
- output_6.diff.after is defined
when: docker_py_version is version('2.6.0', '>=')
- assert:
that:
- output_1 is failed
- ('version is ' ~ docker_py_version ~ ' ') in output_1.msg
- '''Minimum version required is 2.6.0 '' in output_1.msg'
when: docker_py_version is version('2.6.0', '<')
- include_tasks: cleanup.yml

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,90 @@
- debug:
msg: Running tests/remote-addr-pool.yml
####################################################################
## default_addr_pool ###############################################
####################################################################
- name: default_addr_pool
docker_swarm:
state: present
default_addr_pool:
- "2.0.0.0/16"
diff: yes
register: output_1
ignore_errors: yes
- name: default_addr_pool (idempotent)
docker_swarm:
state: present
default_addr_pool:
- "2.0.0.0/16"
diff: yes
register: output_2
ignore_errors: yes
- name: assert default_addr_pool
assert:
that:
- 'output_1 is changed'
- 'output_2 is not changed'
- 'output_2.swarm_facts.DefaultAddrPool == ["2.0.0.0/16"]'
when:
- docker_api_version is version('1.39', '>=')
- docker_py_version is version('4.0.0', '>=')
- name: assert default_addr_pool failed when unsupported
assert:
that:
- 'output_1 is failed'
- "'Minimum version required' in output_1.msg"
when: docker_api_version is version('1.39', '<') or
docker_py_version is version('4.0.0', '<')
####################################################################
## subnet_size #####################################################
####################################################################
- name: Leave swarm
docker_swarm:
state: absent
force: yes
default_addr_pool:
- "2.0.0.0/16"
diff: yes
- name: subnet_size
docker_swarm:
state: present
force: yes
subnet_size: 26
diff: yes
register: output_1
ignore_errors: yes
- name: subnet_size (idempotent)
docker_swarm:
state: present
subnet_size: 26
diff: yes
register: output_2
ignore_errors: yes
- name: assert subnet_size
assert:
that:
- 'output_1 is changed'
- 'output_2 is not changed'
- 'output_2.swarm_facts.SubnetSize == 26'
when:
- docker_api_version is version('1.39', '>=')
- docker_py_version is version('4.0.0', '>=')
- name: assert subnet_size failed when unsupported
assert:
that:
- output_1 is failed
- "'Minimum version required' in output_1.msg"
when: docker_api_version is version('1.39', '<') or
docker_py_version is version('4.0.0', '<')
- include_tasks: cleanup.yml