mirror of
https://github.com/ansible-collections/community.docker.git
synced 2025-12-16 03:52:05 +00:00
Improve CI (#198)
* Use remote temp path, replace remote lookups. * Copy local files. * Change docker resource name prefix from ansible-test to ansible-docker-test to avoid collision with ansible-test's containers. * Fix typos. * We don't neceessarily have a TTY. * Use hopefully less collision-likely subnet. * More collision avoidance. * More changes.
This commit is contained in:
parent
451bc0e94e
commit
5a3ce51049
@ -60,7 +60,7 @@ EOF
|
||||
echo "Run tests"
|
||||
set -x
|
||||
docker run \
|
||||
-it \
|
||||
-i \
|
||||
--rm \
|
||||
--privileged \
|
||||
--pid host \
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker_compose
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
# Create random name prefix (for containers, networks, ...)
|
||||
- name: Create random container name prefix
|
||||
set_fact:
|
||||
cname_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
cname_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
cnames: []
|
||||
dnetworks: []
|
||||
|
||||
|
||||
@ -105,10 +105,10 @@
|
||||
- block:
|
||||
- name: Define service and files
|
||||
set_fact:
|
||||
compose_file: "{{ output_dir }}/docker-compose.yml"
|
||||
env_file: "{{ output_dir }}/.env"
|
||||
compose_file: "{{ remote_tmp_dir }}/docker-compose.yml"
|
||||
env_file: "{{ remote_tmp_dir }}/.env"
|
||||
env_sleep_cmd: sleep 10m
|
||||
new_env_file: "{{ output_dir }}/new.env"
|
||||
new_env_file: "{{ remote_tmp_dir }}/new.env"
|
||||
new_env_sleep_cmd: sleep 20m
|
||||
test_service: |
|
||||
version: '2'
|
||||
@ -145,7 +145,7 @@
|
||||
- name: Env_file
|
||||
docker_compose:
|
||||
project_name: "{{ pname }}"
|
||||
project_src: "{{ output_dir }}"
|
||||
project_src: "{{ remote_tmp_dir }}"
|
||||
env_file: "{{ test_case.env_file | default(omit) }}"
|
||||
register: env_file_outputs
|
||||
loop: "{{ test_cases }}"
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
# Create random name prefix (for containers, networks, ...)
|
||||
- name: Create random container name prefix
|
||||
set_fact:
|
||||
cname_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
cname_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
cnames: []
|
||||
dnetworks: []
|
||||
|
||||
|
||||
@ -1607,13 +1607,18 @@
|
||||
## env_file #########################################################
|
||||
####################################################################
|
||||
|
||||
- name: Copy env-file
|
||||
copy:
|
||||
src: env-file
|
||||
dest: "{{ remote_tmp_dir }}/env-file"
|
||||
|
||||
- name: env_file
|
||||
docker_container:
|
||||
image: "{{ docker_test_image_alpine }}"
|
||||
command: '/bin/sh -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
env_file: "{{ role_path }}/files/env-file"
|
||||
env_file: "{{ remote_tmp_dir }}/env-file"
|
||||
register: env_file_1
|
||||
|
||||
- name: env_file (idempotency)
|
||||
@ -1622,7 +1627,7 @@
|
||||
command: '/bin/sh -c "sleep 10m"'
|
||||
name: "{{ cname }}"
|
||||
state: started
|
||||
env_file: "{{ role_path }}/files/env-file"
|
||||
env_file: "{{ remote_tmp_dir }}/env-file"
|
||||
register: env_file_2
|
||||
|
||||
- name: cleanup
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
- block:
|
||||
- name: Create random container name
|
||||
set_fact:
|
||||
cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
cname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Make sure container is not there
|
||||
docker_container:
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
- block:
|
||||
- name: Create random container name
|
||||
set_fact:
|
||||
cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
cname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Make sure container is not there
|
||||
docker_container:
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
---
|
||||
- name: Create random container/volume name
|
||||
set_fact:
|
||||
cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
vname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
cname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
vname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- debug:
|
||||
msg: "Using container name '{{ cname }}' and volume name '{{ vname }}'"
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker_registry
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
- name: Create random name prefix
|
||||
set_fact:
|
||||
name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
- name: Create image and container list
|
||||
set_fact:
|
||||
inames: []
|
||||
@ -12,13 +12,13 @@
|
||||
|
||||
- name: Create files directory
|
||||
file:
|
||||
path: '{{ output_dir }}/files'
|
||||
path: '{{ remote_tmp_dir }}/files'
|
||||
state: directory
|
||||
|
||||
- name: Template files
|
||||
template:
|
||||
src: '{{ item }}'
|
||||
dest: '{{ output_dir }}/files/{{ item }}'
|
||||
dest: '{{ remote_tmp_dir }}/files/{{ item }}'
|
||||
loop:
|
||||
- Dockerfile
|
||||
- EtcHostsDockerfile
|
||||
|
||||
@ -118,7 +118,7 @@
|
||||
source: build
|
||||
name: "{{ present_1.image.Id }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
force_source: true
|
||||
register: fail_4
|
||||
ignore_errors: yes
|
||||
|
||||
@ -191,7 +191,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
pull: no
|
||||
repository: "{{ test_image_base }}"
|
||||
source: build
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
args:
|
||||
TEST1: val1
|
||||
TEST2: val2
|
||||
@ -36,7 +36,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
args:
|
||||
TEST1: val1
|
||||
TEST2: val2
|
||||
@ -72,7 +72,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
container_limits:
|
||||
memory: 4000
|
||||
pull: no
|
||||
@ -84,7 +84,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
container_limits:
|
||||
memory: 7000000
|
||||
memswap: 8000000
|
||||
@ -117,7 +117,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
dockerfile: "MyDockerfile"
|
||||
pull: no
|
||||
source: build
|
||||
@ -149,7 +149,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
platform: linux
|
||||
pull: no
|
||||
source: build
|
||||
@ -160,7 +160,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
platform: linux
|
||||
pull: no
|
||||
source: build
|
||||
@ -193,7 +193,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
pull: no
|
||||
source: build
|
||||
|
||||
@ -201,7 +201,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
dockerfile: "MyDockerfile"
|
||||
pull: no
|
||||
source: build
|
||||
@ -212,7 +212,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
dockerfile: "MyDockerfile"
|
||||
pull: no
|
||||
source: build
|
||||
@ -237,20 +237,20 @@
|
||||
- name: Archive image
|
||||
docker_image:
|
||||
name: "{{ docker_test_image_hello_world }}"
|
||||
archive_path: "{{ output_dir }}/image.tar"
|
||||
archive_path: "{{ remote_tmp_dir }}/image.tar"
|
||||
source: pull
|
||||
register: archive_image
|
||||
|
||||
- name: Archive image by ID
|
||||
docker_image:
|
||||
name: "{{ archive_image.image.Id }}"
|
||||
archive_path: "{{ output_dir }}/image_id.tar"
|
||||
archive_path: "{{ remote_tmp_dir }}/image_id.tar"
|
||||
source: local
|
||||
register: archive_image_id
|
||||
|
||||
- name: Create invalid archive
|
||||
copy:
|
||||
dest: "{{ output_dir }}/image-invalid.tar"
|
||||
dest: "{{ remote_tmp_dir }}/image-invalid.tar"
|
||||
content: "this is not a valid image"
|
||||
|
||||
- name: remove image
|
||||
@ -262,21 +262,21 @@
|
||||
- name: load image (changed)
|
||||
docker_image:
|
||||
name: "{{ docker_test_image_hello_world }}"
|
||||
load_path: "{{ output_dir }}/image.tar"
|
||||
load_path: "{{ remote_tmp_dir }}/image.tar"
|
||||
source: load
|
||||
register: load_image
|
||||
|
||||
- name: load image (idempotency)
|
||||
docker_image:
|
||||
name: "{{ docker_test_image_hello_world }}"
|
||||
load_path: "{{ output_dir }}/image.tar"
|
||||
load_path: "{{ remote_tmp_dir }}/image.tar"
|
||||
source: load
|
||||
register: load_image_1
|
||||
|
||||
- name: load image (wrong name)
|
||||
docker_image:
|
||||
name: foo:bar
|
||||
load_path: "{{ output_dir }}/image.tar"
|
||||
load_path: "{{ remote_tmp_dir }}/image.tar"
|
||||
source: load
|
||||
register: load_image_2
|
||||
ignore_errors: true
|
||||
@ -284,7 +284,7 @@
|
||||
- name: load image (invalid image)
|
||||
docker_image:
|
||||
name: foo:bar
|
||||
load_path: "{{ output_dir }}/image-invalid.tar"
|
||||
load_path: "{{ remote_tmp_dir }}/image-invalid.tar"
|
||||
source: load
|
||||
register: load_image_3
|
||||
ignore_errors: true
|
||||
@ -292,7 +292,7 @@
|
||||
- name: load image (invalid image, old API version)
|
||||
docker_image:
|
||||
name: foo:bar
|
||||
load_path: "{{ output_dir }}/image-invalid.tar"
|
||||
load_path: "{{ remote_tmp_dir }}/image-invalid.tar"
|
||||
source: load
|
||||
api_version: "1.22"
|
||||
register: load_image_4
|
||||
@ -300,7 +300,7 @@
|
||||
- name: load image (ID, idempotency)
|
||||
docker_image:
|
||||
name: "{{ archive_image.image.Id }}"
|
||||
load_path: "{{ output_dir }}/image_id.tar"
|
||||
load_path: "{{ remote_tmp_dir }}/image_id.tar"
|
||||
source: load
|
||||
register: load_image_5
|
||||
|
||||
@ -326,7 +326,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
pull: no
|
||||
source: build
|
||||
register: path_1
|
||||
@ -335,7 +335,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
pull: no
|
||||
source: build
|
||||
register: path_2
|
||||
@ -359,7 +359,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
dockerfile: "StagedDockerfile"
|
||||
target: first
|
||||
pull: no
|
||||
@ -385,7 +385,7 @@
|
||||
docker_image:
|
||||
name: "{{ iname }}"
|
||||
build:
|
||||
path: "{{ output_dir }}/files"
|
||||
path: "{{ remote_tmp_dir }}/files"
|
||||
dockerfile: "EtcHostsDockerfile"
|
||||
pull: no
|
||||
etc_hosts:
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
---
|
||||
- name: Create random name prefix
|
||||
set_fact:
|
||||
name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
- name: Create image and container list
|
||||
set_fact:
|
||||
inames: []
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
all_images: "{{ image_names + (images.results | map(attribute='image') | map(attribute='Id') | list) }}"
|
||||
|
||||
- name: Create archives
|
||||
command: docker save {{ item.images | join(' ') }} -o {{ output_dir }}/{{ item.file }}
|
||||
command: docker save {{ item.images | join(' ') }} -o {{ remote_tmp_dir }}/{{ item.file }}
|
||||
loop:
|
||||
- file: archive-1.tar
|
||||
images: "{{ image_names }}"
|
||||
@ -72,7 +72,7 @@
|
||||
|
||||
- name: Load all images (IDs)
|
||||
docker_image_load:
|
||||
path: "{{ output_dir }}/archive-2.tar"
|
||||
path: "{{ remote_tmp_dir }}/archive-2.tar"
|
||||
register: result
|
||||
|
||||
- name: Print loaded image names
|
||||
@ -87,7 +87,7 @@
|
||||
|
||||
- name: Load all images (IDs, should be same result)
|
||||
docker_image_load:
|
||||
path: "{{ output_dir }}/archive-2.tar"
|
||||
path: "{{ remote_tmp_dir }}/archive-2.tar"
|
||||
register: result_2
|
||||
|
||||
- name: Print loaded image names
|
||||
@ -110,7 +110,7 @@
|
||||
|
||||
- name: Load all images (mixed images and IDs)
|
||||
docker_image_load:
|
||||
path: "{{ output_dir }}/archive-3.tar"
|
||||
path: "{{ remote_tmp_dir }}/archive-3.tar"
|
||||
register: result
|
||||
|
||||
- name: Print loading log
|
||||
@ -140,7 +140,7 @@
|
||||
|
||||
- name: Load all images (same image twice)
|
||||
docker_image_load:
|
||||
path: "{{ output_dir }}/archive-4.tar"
|
||||
path: "{{ remote_tmp_dir }}/archive-4.tar"
|
||||
register: result
|
||||
|
||||
- name: Print loaded image names
|
||||
@ -165,7 +165,7 @@
|
||||
|
||||
- name: Load all images (single image by ID)
|
||||
docker_image_load:
|
||||
path: "{{ output_dir }}/archive-5.tar"
|
||||
path: "{{ remote_tmp_dir }}/archive-5.tar"
|
||||
register: result
|
||||
|
||||
- name: Print loaded image names
|
||||
@ -200,7 +200,7 @@
|
||||
|
||||
- name: Load all images (names)
|
||||
docker_image_load:
|
||||
path: "{{ output_dir }}/archive-1.tar"
|
||||
path: "{{ remote_tmp_dir }}/archive-1.tar"
|
||||
register: result
|
||||
|
||||
- name: Print loaded image names
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
- name: Create random name prefix
|
||||
set_fact:
|
||||
name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
cnames: []
|
||||
dnetworks: []
|
||||
|
||||
|
||||
@ -17,12 +17,12 @@
|
||||
docker_network:
|
||||
name: "{{ nname_ipam_1 }}"
|
||||
ipam_config:
|
||||
- subnet: 172.23.27.0/24
|
||||
gateway: 172.23.27.2
|
||||
iprange: 172.23.27.0/26
|
||||
- subnet: 172.25.120.0/24
|
||||
gateway: 172.25.120.2
|
||||
iprange: 172.25.120.0/26
|
||||
aux_addresses:
|
||||
host1: 172.23.27.3
|
||||
host2: 172.23.27.4
|
||||
host1: 172.25.120.3
|
||||
host2: 172.25.120.4
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
@ -33,12 +33,12 @@
|
||||
docker_network:
|
||||
name: "{{ nname_ipam_1 }}"
|
||||
ipam_config:
|
||||
- subnet: 172.23.27.0/24
|
||||
gateway: 172.23.27.2
|
||||
iprange: 172.23.27.0/26
|
||||
- subnet: 172.25.120.0/24
|
||||
gateway: 172.25.120.2
|
||||
iprange: 172.25.120.0/26
|
||||
aux_addresses:
|
||||
host1: 172.23.27.3
|
||||
host2: 172.23.27.4
|
||||
host1: 172.25.120.3
|
||||
host2: 172.25.120.4
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
@ -49,11 +49,11 @@
|
||||
docker_network:
|
||||
name: "{{ nname_ipam_1 }}"
|
||||
ipam_config:
|
||||
- subnet: 172.23.28.0/24
|
||||
gateway: 172.23.28.2
|
||||
iprange: 172.23.28.0/26
|
||||
- subnet: 172.25.121.0/24
|
||||
gateway: 172.25.121.2
|
||||
iprange: 172.25.121.0/26
|
||||
aux_addresses:
|
||||
host1: 172.23.28.3
|
||||
host1: 172.25.121.3
|
||||
register: network
|
||||
diff: yes
|
||||
|
||||
@ -70,7 +70,7 @@
|
||||
docker_network:
|
||||
name: "{{ nname_ipam_1 }}"
|
||||
ipam_config:
|
||||
- subnet: 172.23.28.0/24
|
||||
- subnet: 172.25.121.0/24
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
@ -151,7 +151,7 @@
|
||||
name: "{{ nname_ipam_3 }}"
|
||||
enable_ipv6: yes
|
||||
ipam_config:
|
||||
- subnet: 172.24.27.0/24
|
||||
- subnet: 172.26.120.0/24
|
||||
- subnet: fdd1:ac8c:0557:7ce2::/64
|
||||
register: network
|
||||
|
||||
@ -165,7 +165,7 @@
|
||||
enable_ipv6: yes
|
||||
ipam_config:
|
||||
- subnet: fdd1:ac8c:0557:7ce2::/64
|
||||
- subnet: 172.24.27.0/24
|
||||
- subnet: 172.26.120.0/24
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
@ -177,7 +177,7 @@
|
||||
name: "{{ nname_ipam_3 }}"
|
||||
enable_ipv6: no
|
||||
ipam_config:
|
||||
- subnet: 172.24.27.0/24
|
||||
- subnet: 172.26.120.0/24
|
||||
register: network
|
||||
diff: yes
|
||||
|
||||
@ -203,8 +203,8 @@
|
||||
driver_options:
|
||||
parent: "{{ ansible_default_ipv4.alias }}"
|
||||
ipam_config:
|
||||
- subnet: 172.24.27.0/24
|
||||
- subnet: 172.24.28.0/24
|
||||
- subnet: 172.26.120.0/24
|
||||
- subnet: 172.26.121.0/24
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
@ -218,8 +218,8 @@
|
||||
driver_options:
|
||||
parent: "{{ ansible_default_ipv4.alias }}"
|
||||
ipam_config:
|
||||
- subnet: 172.24.28.0/24
|
||||
- subnet: 172.24.27.0/24
|
||||
- subnet: 172.26.121.0/24
|
||||
- subnet: 172.26.120.0/24
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
@ -233,8 +233,8 @@
|
||||
driver_options:
|
||||
parent: "{{ ansible_default_ipv4.alias }}"
|
||||
ipam_config:
|
||||
- subnet: 172.24.27.0/24
|
||||
- subnet: 172.24.29.0/24
|
||||
- subnet: 172.26.120.0/24
|
||||
- subnet: 172.26.122.0/24
|
||||
register: network
|
||||
diff: yes
|
||||
|
||||
@ -250,7 +250,7 @@
|
||||
driver_options:
|
||||
parent: "{{ ansible_default_ipv4.alias }}"
|
||||
ipam_config:
|
||||
- subnet: 172.24.29.0/24
|
||||
- subnet: 172.26.122.0/24
|
||||
register: network
|
||||
|
||||
- assert:
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
- block:
|
||||
- name: Create random network name
|
||||
set_fact:
|
||||
nname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
nname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Make sure network is not there
|
||||
docker_network:
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
- name: Template compose files
|
||||
template:
|
||||
src: "{{item}}"
|
||||
dest: "{{output_dir}}/"
|
||||
dest: "{{remote_tmp_dir}}/"
|
||||
with_items:
|
||||
- stack_compose_base.yml
|
||||
- stack_compose_overrides.yml
|
||||
@ -59,7 +59,7 @@
|
||||
state: present
|
||||
name: test_stack
|
||||
compose:
|
||||
- "{{output_dir}}/stack_compose_base.yml"
|
||||
- "{{remote_tmp_dir}}/stack_compose_base.yml"
|
||||
|
||||
- name: assert test_stack changed on stack creation with compose file
|
||||
assert:
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
- name: Template compose files
|
||||
template:
|
||||
src: "{{ item }}"
|
||||
dest: "{{ output_dir }}/"
|
||||
dest: "{{ remote_tmp_dir }}/"
|
||||
with_items:
|
||||
- stack_compose_base.yml
|
||||
- stack_compose_overrides.yml
|
||||
@ -49,7 +49,7 @@
|
||||
state: present
|
||||
name: test_stack
|
||||
compose:
|
||||
- "{{ output_dir }}/stack_compose_base.yml"
|
||||
- "{{ remote_tmp_dir }}/stack_compose_base.yml"
|
||||
|
||||
- name: Assert test_stack changed on stack creation with compose file
|
||||
assert:
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
---
|
||||
dependencies:
|
||||
- setup_docker
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
- name: Template compose files
|
||||
template:
|
||||
src: "{{ item }}"
|
||||
dest: "{{ output_dir }}/"
|
||||
dest: "{{ remote_tmp_dir }}/"
|
||||
with_items:
|
||||
- stack_compose_base.yml
|
||||
- stack_compose_overrides.yml
|
||||
@ -49,7 +49,7 @@
|
||||
state: present
|
||||
name: test_stack
|
||||
compose:
|
||||
- "{{ output_dir }}/stack_compose_base.yml"
|
||||
- "{{ remote_tmp_dir }}/stack_compose_base.yml"
|
||||
|
||||
- name: Assert test_stack changed on stack creation with compose file
|
||||
assert:
|
||||
|
||||
@ -2,3 +2,4 @@
|
||||
dependencies:
|
||||
- setup_docker
|
||||
- setup_openssl
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
loop_control:
|
||||
loop_var: key
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ output_dir }}/ansible_{{ key }}.key'
|
||||
path: '{{ remote_tmp_dir }}/ansible_{{ key }}.key'
|
||||
size: 2048
|
||||
mode: '0666'
|
||||
- name: Generate CSR
|
||||
@ -20,8 +20,8 @@
|
||||
loop_control:
|
||||
loop_var: key
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ output_dir }}/ansible_{{ key }}.csr'
|
||||
privatekey_path: '{{ output_dir }}/ansible_{{ key }}.key'
|
||||
path: '{{ remote_tmp_dir }}/ansible_{{ key }}.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ansible_{{ key }}.key'
|
||||
basic_constraints:
|
||||
- CA:TRUE
|
||||
key_usage:
|
||||
@ -33,16 +33,30 @@
|
||||
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'
|
||||
path: '{{ remote_tmp_dir }}/ansible_{{ key }}.pem'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/ansible_{{ key }}.key'
|
||||
csr_path: '{{ remote_tmp_dir }}/ansible_{{ key }}.csr'
|
||||
provider: selfsigned
|
||||
- name: Load certificates
|
||||
slurp:
|
||||
src: '{{ remote_tmp_dir }}/{{ item }}'
|
||||
loop:
|
||||
- ansible_key1.pem
|
||||
- ansible_key2.pem
|
||||
register: ansible_certificates
|
||||
- name: Load certificate keys
|
||||
slurp:
|
||||
src: '{{ remote_tmp_dir }}/{{ item }}'
|
||||
loop:
|
||||
- ansible_key1.key
|
||||
- ansible_key2.key
|
||||
register: ansible_keys
|
||||
- name: signing_ca_cert and signing_ca_key (check mode)
|
||||
docker_swarm:
|
||||
advertise_addr: '{{ansible_default_ipv4.address | default(''127.0.0.1'')}}'
|
||||
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'') }}'
|
||||
signing_ca_cert: '{{ ansible_certificates.results[0].content | b64decode }}'
|
||||
signing_ca_key: '{{ ansible_keys.results[0].content | b64decode }}'
|
||||
timeout: 120
|
||||
check_mode: true
|
||||
diff: true
|
||||
@ -50,18 +64,18 @@
|
||||
ignore_errors: true
|
||||
- name: signing_ca_cert and signing_ca_key
|
||||
docker_swarm:
|
||||
advertise_addr: '{{ansible_default_ipv4.address | default(''127.0.0.1'')}}'
|
||||
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'') }}'
|
||||
signing_ca_cert: '{{ ansible_certificates.results[0].content | b64decode }}'
|
||||
signing_ca_key: '{{ ansible_keys.results[0].content | b64decode }}'
|
||||
timeout: 120
|
||||
diff: true
|
||||
register: output_2
|
||||
ignore_errors: true
|
||||
- name: Private key
|
||||
debug: msg="{{ lookup('file', output_dir ~ '/ansible_key1.key') }}"
|
||||
debug: msg="{{ ansible_keys.results[0].content | b64decode }}"
|
||||
- name: Cert
|
||||
debug: msg="{{ lookup('file', output_dir ~ '/ansible_key1.pem') }}"
|
||||
debug: msg="{{ ansible_certificates.results[0].content | b64decode }}"
|
||||
- docker_swarm_info: null
|
||||
register: output
|
||||
ignore_errors: true
|
||||
@ -69,8 +83,8 @@
|
||||
- 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'') }}'
|
||||
signing_ca_cert: '{{ ansible_certificates.results[1].content | b64decode }}'
|
||||
signing_ca_key: '{{ ansible_keys.results[1].content | b64decode }}'
|
||||
timeout: 120
|
||||
check_mode: true
|
||||
diff: true
|
||||
@ -79,8 +93,8 @@
|
||||
- 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'') }}'
|
||||
signing_ca_cert: '{{ ansible_certificates.results[1].content | b64decode }}'
|
||||
signing_ca_key: '{{ ansible_keys.results[1].content | b64decode }}'
|
||||
timeout: 120
|
||||
diff: true
|
||||
register: output_6
|
||||
@ -109,6 +123,6 @@
|
||||
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'
|
||||
- '"Minimum version required is 2.6.0 " in output_1.msg'
|
||||
when: docker_py_version is version('2.6.0', '<')
|
||||
- include_tasks: cleanup.yml
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
# Create random name prefix (for containers, networks, ...)
|
||||
- name: Create random name prefix
|
||||
set_fact:
|
||||
name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
service_names: []
|
||||
network_names: []
|
||||
config_names: []
|
||||
|
||||
@ -672,13 +672,21 @@
|
||||
## env_files #######################################################
|
||||
####################################################################
|
||||
|
||||
- name: Copy env-files
|
||||
copy:
|
||||
src: "{{ item }}"
|
||||
dest: "{{ remote_tmp_dir }}/{{ item }}"
|
||||
loop:
|
||||
- env-file-1
|
||||
- env-file-2
|
||||
|
||||
- name: env_files
|
||||
docker_swarm_service:
|
||||
name: "{{ service_name }}"
|
||||
image: "{{ docker_test_image_alpine }}"
|
||||
resolve_image: no
|
||||
env_files:
|
||||
- "{{ role_path }}/files/env-file-1"
|
||||
- "{{ remote_tmp_dir }}/env-file-1"
|
||||
register: env_file_1
|
||||
|
||||
- name: env_files (idempotency)
|
||||
@ -687,7 +695,7 @@
|
||||
image: "{{ docker_test_image_alpine }}"
|
||||
resolve_image: no
|
||||
env_files:
|
||||
- "{{ role_path }}/files/env-file-1"
|
||||
- "{{ remote_tmp_dir }}/env-file-1"
|
||||
register: env_file_2
|
||||
|
||||
- name: env_files (more items)
|
||||
@ -696,8 +704,8 @@
|
||||
image: "{{ docker_test_image_alpine }}"
|
||||
resolve_image: no
|
||||
env_files:
|
||||
- "{{ role_path }}/files/env-file-1"
|
||||
- "{{ role_path }}/files/env-file-2"
|
||||
- "{{ remote_tmp_dir }}/env-file-1"
|
||||
- "{{ remote_tmp_dir }}/env-file-2"
|
||||
register: env_file_3
|
||||
|
||||
- name: env_files (order)
|
||||
@ -706,8 +714,8 @@
|
||||
image: "{{ docker_test_image_alpine }}"
|
||||
resolve_image: no
|
||||
env_files:
|
||||
- "{{ role_path }}/files/env-file-2"
|
||||
- "{{ role_path }}/files/env-file-1"
|
||||
- "{{ remote_tmp_dir }}/env-file-2"
|
||||
- "{{ remote_tmp_dir }}/env-file-1"
|
||||
register: env_file_4
|
||||
|
||||
- name: env_files (multiple idempotency)
|
||||
@ -716,8 +724,8 @@
|
||||
image: "{{ docker_test_image_alpine }}"
|
||||
resolve_image: no
|
||||
env_files:
|
||||
- "{{ role_path }}/files/env-file-2"
|
||||
- "{{ role_path }}/files/env-file-1"
|
||||
- "{{ remote_tmp_dir }}/env-file-2"
|
||||
- "{{ remote_tmp_dir }}/env-file-1"
|
||||
register: env_file_5
|
||||
|
||||
- name: env_files (empty)
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
- name: Generate service base name
|
||||
set_fact:
|
||||
service_base_name: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
service_base_name: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Registering service names
|
||||
set_fact:
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
- name: Create random name prefix
|
||||
set_fact:
|
||||
name_prefix: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
name_prefix: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
vnames: []
|
||||
|
||||
- debug:
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
- block:
|
||||
- name: Create random volume name
|
||||
set_fact:
|
||||
cname: "{{ 'ansible-test-%0x' % ((2**32) | random) }}"
|
||||
cname: "{{ 'ansible-docker-test-%0x' % ((2**32) | random) }}"
|
||||
|
||||
- name: Make sure volume is not there
|
||||
docker_volume:
|
||||
|
||||
@ -22,9 +22,17 @@
|
||||
command: ls -lah ~/.ssh
|
||||
ignore_errors: true
|
||||
|
||||
- name: Recover home directory on remote
|
||||
command: echo $HOME
|
||||
register: remote_home
|
||||
|
||||
- name: Print remote home directory
|
||||
debug:
|
||||
var: remote_home.stdout
|
||||
|
||||
- name: Create SSH config
|
||||
copy:
|
||||
dest: "{{ lookup('env', 'HOME') }}/.ssh/config"
|
||||
dest: "{{ remote_home.stdout }}/.ssh/config"
|
||||
mode: '0600'
|
||||
content: |
|
||||
Host localhost
|
||||
|
||||
@ -9,8 +9,8 @@
|
||||
state: absent
|
||||
force_kill: yes
|
||||
loop:
|
||||
- ansible-test-docker-inventory-container-1
|
||||
- ansible-test-docker-inventory-container-2
|
||||
- ansible-docker-test-docker-inventory-container-1
|
||||
- ansible-docker-test-docker-inventory-container-2
|
||||
|
||||
- name: remove docker pagkages
|
||||
action: "{{ ansible_facts.pkg_mgr }}"
|
||||
|
||||
@ -18,5 +18,5 @@
|
||||
published_ports:
|
||||
- 22/tcp
|
||||
loop:
|
||||
- name: ansible-test-docker-inventory-container-1
|
||||
- name: ansible-test-docker-inventory-container-2
|
||||
- name: ansible-docker-test-docker-inventory-container-1
|
||||
- name: ansible-docker-test-docker-inventory-container-2
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
- when:
|
||||
# When the integration tests are run inside a docker container, there
|
||||
# will be other containers.
|
||||
- inventory_hostname.startswith('ansible-test-docker-inventory-container-')
|
||||
- inventory_hostname.startswith('ansible-docker-test-docker-inventory-container-')
|
||||
block:
|
||||
|
||||
- name: Run raw command
|
||||
|
||||
@ -16,8 +16,8 @@
|
||||
- groups.running | length >= 2
|
||||
- groups.stopped | length >= 0
|
||||
- groups['image_' ~ docker_test_image_alpine] | length == 2
|
||||
- groups['ansible-test-docker-inventory-container-1'] | length == 1
|
||||
- groups['ansible-test-docker-inventory-container-2'] | length == 1
|
||||
- groups['ansible-docker-test-docker-inventory-container-1'] | length == 1
|
||||
- groups['ansible-docker-test-docker-inventory-container-2'] | length == 1
|
||||
- groups['unix://var/run/docker.sock'] | length >= 2
|
||||
- groups | length >= 12
|
||||
# The four additional groups are IDs and short IDs of the containers.
|
||||
@ -42,4 +42,4 @@
|
||||
when:
|
||||
# When the integration tests are run inside a docker container, there
|
||||
# will be other containers.
|
||||
- inventory_hostname.startswith('ansible-test-docker-inventory-container-')
|
||||
- inventory_hostname.startswith('ansible-docker-test-docker-inventory-container-')
|
||||
|
||||
@ -85,21 +85,21 @@
|
||||
# Cleanup docker daemon
|
||||
- command: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %}'
|
||||
|
||||
- name: "Remove all ansible-test-* docker containers"
|
||||
shell: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker rm -f'
|
||||
- name: "Remove all ansible-docker-test-* docker containers"
|
||||
shell: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %} | grep "^ansible-docker-test-" | xargs -r docker rm -f'
|
||||
register: docker_containers
|
||||
retries: 3
|
||||
delay: 3
|
||||
until: docker_containers is success
|
||||
ignore_errors: yes
|
||||
|
||||
- name: "Remove all ansible-test-* docker volumes"
|
||||
shell: 'docker volume ls --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker volume rm -f'
|
||||
- name: "Remove all ansible-docker-test-* docker volumes"
|
||||
shell: 'docker volume ls --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-docker-test-" | xargs -r docker volume rm -f'
|
||||
register: docker_volumes
|
||||
ignore_errors: yes
|
||||
|
||||
- name: "Remove all ansible-test-* docker networks"
|
||||
shell: 'docker network ls --no-trunc --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker network rm'
|
||||
- name: "Remove all ansible-docker-test-* docker networks"
|
||||
shell: 'docker network ls --no-trunc --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-docker-test-" | xargs -r docker network rm'
|
||||
register: docker_networks
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
@ -1,3 +1,4 @@
|
||||
dependencies:
|
||||
#- setup_docker -- done in setup.yml, to work around cleanup problems!
|
||||
- setup_openssl
|
||||
- setup_remote_tmp_dir
|
||||
|
||||
@ -25,8 +25,16 @@
|
||||
}}
|
||||
register: nginx_container
|
||||
|
||||
- name: Copy config files
|
||||
copy:
|
||||
src: "{{ item }}"
|
||||
dest: "{{ remote_tmp_dir }}/{{ item }}"
|
||||
loop:
|
||||
- nginx.conf
|
||||
- nginx.htpasswd
|
||||
|
||||
- name: Copy static files into volume
|
||||
command: docker cp {{ role_path }}/files/{{ item }} {{ docker_registry_container_name_frontend }}:/etc/nginx/{{ item }}
|
||||
command: docker cp {{ remote_tmp_dir }}/{{ item }} {{ docker_registry_container_name_frontend }}:/etc/nginx/{{ item }}
|
||||
loop:
|
||||
- nginx.conf
|
||||
- nginx.htpasswd
|
||||
@ -38,27 +46,27 @@
|
||||
|
||||
- name: Create private key for frontend certificate
|
||||
community.crypto.openssl_privatekey:
|
||||
path: '{{ output_dir }}/cert.key'
|
||||
path: '{{ remote_tmp_dir }}/cert.key'
|
||||
type: ECC
|
||||
curve: secp256r1
|
||||
force: yes
|
||||
|
||||
- name: Create CSR for frontend certificate
|
||||
community.crypto.openssl_csr:
|
||||
path: '{{ output_dir }}/cert.csr'
|
||||
privatekey_path: '{{ output_dir }}/cert.key'
|
||||
path: '{{ remote_tmp_dir }}/cert.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/cert.key'
|
||||
subject_alt_name:
|
||||
- DNS:test-registry.ansible.com
|
||||
|
||||
- name: Create frontend certificate
|
||||
community.crypto.openssl_certificate:
|
||||
path: '{{ output_dir }}/cert.pem'
|
||||
csr_path: '{{ output_dir }}/cert.csr'
|
||||
privatekey_path: '{{ output_dir }}/cert.key'
|
||||
path: '{{ remote_tmp_dir }}/cert.pem'
|
||||
csr_path: '{{ remote_tmp_dir }}/cert.csr'
|
||||
privatekey_path: '{{ remote_tmp_dir }}/cert.key'
|
||||
provider: selfsigned
|
||||
|
||||
- name: Copy dynamic files into volume
|
||||
command: docker cp {{ output_dir }}/{{ item }} {{ docker_registry_container_name_frontend }}:/etc/nginx/{{ item }}
|
||||
command: docker cp {{ remote_tmp_dir }}/{{ item }} {{ docker_registry_container_name_frontend }}:/etc/nginx/{{ item }}
|
||||
loop:
|
||||
- cert.pem
|
||||
- cert.key
|
||||
|
||||
@ -14,9 +14,9 @@
|
||||
|
||||
- name: Create random name prefix and test registry name
|
||||
set_fact:
|
||||
docker_registry_container_name_registry: '{{ ''ansible-test-registry-%0x'' % ((2**32) | random) }}'
|
||||
docker_registry_container_name_nginx: '{{ ''ansible-test-registry-frontend-%0x'' % ((2**32) | random) }}'
|
||||
docker_registry_container_name_nginx2: '{{ ''ansible-test-registry-frontend2-%0x'' % ((2**32) | random) }}'
|
||||
docker_registry_container_name_registry: '{{ ''ansible-docker-test-registry-%0x'' % ((2**32) | random) }}'
|
||||
docker_registry_container_name_nginx: '{{ ''ansible-docker-test-registry-frontend-%0x'' % ((2**32) | random) }}'
|
||||
docker_registry_container_name_nginx2: '{{ ''ansible-docker-test-registry-frontend2-%0x'' % ((2**32) | random) }}'
|
||||
|
||||
- name: Create image and container list
|
||||
set_fact:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user