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:
Felix Fontein 2021-09-08 09:43:35 +02:00 committed by GitHub
parent 451bc0e94e
commit 5a3ce51049
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 190 additions and 139 deletions

View File

@ -60,7 +60,7 @@ EOF
echo "Run tests"
set -x
docker run \
-it \
-i \
--rm \
--privileged \
--pid host \

View File

@ -1,3 +1,4 @@
---
dependencies:
- setup_docker_compose
- setup_remote_tmp_dir

View File

@ -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: []

View File

@ -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 }}"

View File

@ -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: []

View File

@ -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

View File

@ -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:

View File

@ -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:

View File

@ -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 }}'"

View File

@ -1,3 +1,4 @@
---
dependencies:
- setup_docker_registry
- setup_remote_tmp_dir

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -1,3 +1,4 @@
---
dependencies:
- setup_docker
- setup_remote_tmp_dir

View File

@ -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: []

View File

@ -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

View File

@ -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: []

View File

@ -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:

View File

@ -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:

View File

@ -1,3 +1,4 @@
---
dependencies:
- setup_docker
- setup_remote_tmp_dir

View File

@ -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:

View File

@ -1,3 +1,4 @@
---
dependencies:
- setup_docker
- setup_remote_tmp_dir

View File

@ -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:

View File

@ -1,3 +1,4 @@
---
dependencies:
- setup_docker
- setup_remote_tmp_dir

View File

@ -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:

View File

@ -2,3 +2,4 @@
dependencies:
- setup_docker
- setup_openssl
- setup_remote_tmp_dir

View File

@ -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

View File

@ -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: []

View File

@ -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)

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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

View File

@ -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 }}"

View File

@ -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

View File

@ -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

View File

@ -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-')

View File

@ -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

View File

@ -1,3 +1,4 @@
dependencies:
#- setup_docker -- done in setup.yml, to work around cleanup problems!
- setup_openssl
- setup_remote_tmp_dir

View File

@ -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

View File

@ -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: