summaryrefslogtreecommitdiffstats
path: root/test/integration/targets/incidental_setup_docker
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-14 20:03:01 +0000
commita453ac31f3428614cceb99027f8efbdb9258a40b (patch)
treef61f87408f32a8511cbd91799f9cececb53e0374 /test/integration/targets/incidental_setup_docker
parentInitial commit. (diff)
downloadansible-a453ac31f3428614cceb99027f8efbdb9258a40b.tar.xz
ansible-a453ac31f3428614cceb99027f8efbdb9258a40b.zip
Adding upstream version 2.10.7+merged+base+2.10.8+dfsg.upstream/2.10.7+merged+base+2.10.8+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/integration/targets/incidental_setup_docker')
-rw-r--r--test/integration/targets/incidental_setup_docker/aliases2
-rw-r--r--test/integration/targets/incidental_setup_docker/defaults/main.yml18
-rw-r--r--test/integration/targets/incidental_setup_docker/handlers/main.yml14
-rw-r--r--test/integration/targets/incidental_setup_docker/meta/main.yml2
-rw-r--r--test/integration/targets/incidental_setup_docker/tasks/Debian.yml43
-rw-r--r--test/integration/targets/incidental_setup_docker/tasks/Fedora.yml21
-rw-r--r--test/integration/targets/incidental_setup_docker/tasks/RedHat-7.yml44
-rw-r--r--test/integration/targets/incidental_setup_docker/tasks/RedHat-8.yml33
-rw-r--r--test/integration/targets/incidental_setup_docker/tasks/Suse.yml7
-rw-r--r--test/integration/targets/incidental_setup_docker/tasks/main.yml113
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/Debian.yml9
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/Fedora.yml5
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/RedHat-7.yml18
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/RedHat-8.yml9
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/Suse.yml2
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/Ubuntu-14.yml5
-rw-r--r--test/integration/targets/incidental_setup_docker/vars/default.yml0
17 files changed, 345 insertions, 0 deletions
diff --git a/test/integration/targets/incidental_setup_docker/aliases b/test/integration/targets/incidental_setup_docker/aliases
new file mode 100644
index 00000000..d466c39c
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/aliases
@@ -0,0 +1,2 @@
+needs/target/setup_epel
+hidden
diff --git a/test/integration/targets/incidental_setup_docker/defaults/main.yml b/test/integration/targets/incidental_setup_docker/defaults/main.yml
new file mode 100644
index 00000000..48959cc3
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/defaults/main.yml
@@ -0,0 +1,18 @@
+docker_cli_version: '0.0'
+docker_api_version: '0.0'
+docker_py_version: '0.0'
+docker_skip_cleanup: no
+docker_prereq_packages: []
+docker_packages:
+ - docker-ce
+
+docker_pip_extra_packages: []
+docker_pip_never_remove: []
+docker_pip_packages:
+ - docker
+
+docker_cleanup_packages:
+ - docker
+ - docker-ce
+ - docker-ce-cli
+ - containerd.io
diff --git a/test/integration/targets/incidental_setup_docker/handlers/main.yml b/test/integration/targets/incidental_setup_docker/handlers/main.yml
new file mode 100644
index 00000000..9e3f928f
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/handlers/main.yml
@@ -0,0 +1,14 @@
+- name: remove pip packages
+ pip:
+ state: absent
+ name: "{{ docker_pip_packages | union(docker_pip_extra_packages) | difference(docker_pip_never_remove) }}"
+ listen: cleanup docker
+ when: not docker_skip_cleanup | bool
+
+- name: remove docker packages
+ action: "{{ ansible_facts.pkg_mgr }}"
+ args:
+ name: "{{ docker_cleanup_packages }}"
+ state: absent
+ listen: cleanup docker
+ when: not docker_skip_cleanup | bool
diff --git a/test/integration/targets/incidental_setup_docker/meta/main.yml b/test/integration/targets/incidental_setup_docker/meta/main.yml
new file mode 100644
index 00000000..91a63627
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/meta/main.yml
@@ -0,0 +1,2 @@
+dependencies:
+ - setup_remote_constraints
diff --git a/test/integration/targets/incidental_setup_docker/tasks/Debian.yml b/test/integration/targets/incidental_setup_docker/tasks/Debian.yml
new file mode 100644
index 00000000..0ea2cb4b
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/tasks/Debian.yml
@@ -0,0 +1,43 @@
+- name: Get OS version
+ shell: uname -r
+ register: os_version
+
+- name: Install pre-reqs
+ apt:
+ name: "{{ docker_prereq_packages }}"
+ state: present
+ update_cache: yes
+ notify: cleanup docker
+
+- name: Add gpg key
+ shell: curl -fsSL https://download.docker.com/linux/ubuntu/gpg >key && apt-key add key
+
+- name: Add Docker repo
+ shell: add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
+
+- block:
+ - name: Prevent service restart
+ copy:
+ content: exit 101
+ dest: /usr/sbin/policy-rc.d
+ backup: yes
+ mode: 0755
+ register: policy_rc_d
+
+ - name: Install Docker CE
+ apt:
+ name: "{{ docker_packages }}"
+ state: present
+ update_cache: yes
+ always:
+ - name: Restore /usr/sbin/policy-rc.d (if needed)
+ command: mv {{ policy_rc_d.backup_file }} /usr/sbin/policy-rc.d
+ when:
+ - "'backup_file' in policy_rc_d"
+
+ - name: Remove /usr/sbin/policy-rc.d (if needed)
+ file:
+ path: /usr/sbin/policy-rc.d
+ state: absent
+ when:
+ - "'backup_file' not in policy_rc_d"
diff --git a/test/integration/targets/incidental_setup_docker/tasks/Fedora.yml b/test/integration/targets/incidental_setup_docker/tasks/Fedora.yml
new file mode 100644
index 00000000..9f52e8f1
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/tasks/Fedora.yml
@@ -0,0 +1,21 @@
+- name: Add repository
+ yum_repository:
+ file: docker-ce
+ name: docker-ce-stable
+ description: Docker CE Stable - $basearch
+ baseurl: https://download.docker.com/linux/fedora/$releasever/$basearch/stable
+ enabled: yes
+ gpgcheck: yes
+ gpgkey: https://download.docker.com/linux/fedora/gpg
+
+- name: Update cache
+ command: dnf makecache
+ args:
+ warn: no
+
+- name: Install docker
+ dnf:
+ name: "{{ docker_packages }}"
+ state: present
+ enablerepo: docker-ce-test
+ notify: cleanup docker
diff --git a/test/integration/targets/incidental_setup_docker/tasks/RedHat-7.yml b/test/integration/targets/incidental_setup_docker/tasks/RedHat-7.yml
new file mode 100644
index 00000000..bd708315
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/tasks/RedHat-7.yml
@@ -0,0 +1,44 @@
+# The RHEL extras repository must be enabled to provide the container-selinux package.
+# See: https://docs.docker.com/engine/installation/linux/docker-ee/rhel/#install-using-the-repository
+
+- name: Install Docker pre-reqs
+ yum:
+ name: "{{ docker_prereq_packages }}"
+ state: present
+ notify: cleanup docker
+
+- name: Install epel repo which is missing on rhel-7 and is needed for pigz (needed for docker-ce 18)
+ include_role:
+ name: setup_epel
+
+- name: Enable extras repository for RHEL on AWS
+ # RHEL 7.6 uses REGION-rhel-server-extras and RHEL 7.7+ use rhel-7-server-rhui-extras-rpms
+ command: yum-config-manager --enable REGION-rhel-server-extras rhel-7-server-rhui-extras-rpms
+ args:
+ warn: no
+
+# They broke their .repo file, so we set it up ourselves
+- name: Set-up repository
+ yum_repository:
+ name: docker-ce
+ description: docker-ce
+ baseurl: https://download.docker.com/linux/centos/{{ ansible_facts.distribution_major_version }}/$basearch/stable
+ gpgcheck: true
+ gpgkey: https://download.docker.com/linux/centos/gpg
+
+- name: Update cache
+ command: yum -y makecache fast
+ args:
+ warn: no
+
+- name: Install docker
+ yum:
+ name: "{{ docker_packages }}"
+ state: present
+ notify: cleanup docker
+
+- name: Make sure the docker daemon is running (failure expected inside docker container)
+ service:
+ name: docker
+ state: started
+ ignore_errors: "{{ ansible_virtualization_type == 'docker' }}"
diff --git a/test/integration/targets/incidental_setup_docker/tasks/RedHat-8.yml b/test/integration/targets/incidental_setup_docker/tasks/RedHat-8.yml
new file mode 100644
index 00000000..6d2fb3e7
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/tasks/RedHat-8.yml
@@ -0,0 +1,33 @@
+# The RHEL extras repository must be enabled to provide the container-selinux package.
+# See: https://docs.docker.com/engine/installation/linux/docker-ee/rhel/#install-using-the-repository
+
+- name: Install Docker pre-reqs
+ dnf:
+ name: "{{ docker_prereq_packages }}"
+ state: present
+ notify: cleanup docker
+ register: result
+ until: result is success
+ retries: 10
+ delay: 2
+
+# They broke their .repo file, so we set it up ourselves
+- name: Set-up repository
+ yum_repository:
+ name: docker-ce
+ description: docker-ce
+ baseurl: https://download.docker.com/linux/centos/{{ ansible_facts.distribution_major_version }}/$basearch/stable
+ gpgcheck: true
+ gpgkey: https://download.docker.com/linux/centos/gpg
+
+- name: Install docker
+ dnf:
+ name: "{{ docker_packages }}"
+ state: present
+ notify: cleanup docker
+
+- name: Make sure the docker daemon is running (failure expected inside docker container)
+ service:
+ name: docker
+ state: started
+ ignore_errors: "{{ ansible_virtualization_type == 'docker' }}"
diff --git a/test/integration/targets/incidental_setup_docker/tasks/Suse.yml b/test/integration/targets/incidental_setup_docker/tasks/Suse.yml
new file mode 100644
index 00000000..93f4d34e
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/tasks/Suse.yml
@@ -0,0 +1,7 @@
+- name: Install docker
+ zypper:
+ name: "{{ docker_packages }}"
+ force: yes
+ disable_gpg_check: yes
+ update_cache: yes
+ notify: cleanup docker
diff --git a/test/integration/targets/incidental_setup_docker/tasks/main.yml b/test/integration/targets/incidental_setup_docker/tasks/main.yml
new file mode 100644
index 00000000..359a6d44
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/tasks/main.yml
@@ -0,0 +1,113 @@
+- name: Setup Docker
+ when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6']
+ block:
+ - name: Include distribution specific variables
+ include_vars: "{{ lookup('first_found', params) }}"
+ vars:
+ params:
+ files:
+ - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
+ - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
+ - "{{ ansible_facts.distribution }}.yml"
+ - "{{ ansible_facts.os_family }}.yml"
+ - default.yml
+ paths:
+ - "{{ role_path }}/vars"
+
+ - name: Include distribution specific tasks
+ include_tasks: "{{ lookup('first_found', params) }}"
+ vars:
+ params:
+ files:
+ - "{{ ansible_facts.distribution }}-{{ ansible_facts.distribution_major_version }}.yml"
+ - "{{ ansible_facts.os_family }}-{{ ansible_facts.distribution_major_version }}.yml"
+ - "{{ ansible_facts.distribution }}.yml"
+ - "{{ ansible_facts.os_family }}.yml"
+ paths:
+ - "{{ role_path }}/tasks"
+
+ - name: Install Python requirements
+ pip:
+ state: present
+ name: "{{ docker_pip_packages | union(docker_pip_extra_packages) }}"
+ extra_args: "-c {{ remote_constraints }}"
+ notify: cleanup docker
+
+ # Detect docker CLI, API and docker-py versions
+ - name: Check Docker CLI version
+ command: "docker version -f {% raw %}'{{.Client.Version}}'{% endraw %}"
+ register: docker_cli_version_stdout
+ ignore_errors: yes
+
+ - name: Check Docker API version
+ command: "{{ ansible_python.executable }} -c 'import docker; print(docker.from_env().version()[\"ApiVersion\"])'"
+ register: docker_api_version_stdout
+ ignore_errors: yes
+
+ - name: Check docker-py API version
+ command: "{{ ansible_python.executable }} -c 'import docker; print(docker.__version__)'"
+ register: docker_py_version_stdout
+ ignore_errors: yes
+
+ - set_fact:
+ docker_cli_version: "{{ docker_cli_version_stdout.stdout | default('0.0') }}"
+ docker_api_version: "{{ docker_api_version_stdout.stdout | default('0.0') }}"
+ docker_py_version: "{{ docker_py_version_stdout.stdout | default('0.0') }}"
+
+ - debug:
+ msg: "Docker CLI version: {{ docker_cli_version }}; Docker API version: {{ docker_api_version }}; docker-py library version: {{ docker_py_version }}"
+
+ - block:
+ # Cleanup docker daemon
+ - name: "Remove all ansible-test-* docker containers"
+ shell: 'docker ps --no-trunc --format {% raw %}"{{.Names}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker rm -f'
+ register: docker_containers
+ retries: 3
+ delay: 3
+ until: docker_containers is success
+
+ - name: "Remove all ansible-test-* docker volumes"
+ shell: 'docker volume ls --format {% raw %}"{{.Name}}"{% endraw %} | grep "^ansible-test-" | xargs -r docker volume rm -f'
+ register: docker_volumes
+
+ - 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'
+ register: docker_networks
+
+ - name: Cleaned docker resources
+ debug:
+ var: docker_resources
+ vars:
+ docker_resources:
+ containers: "{{ docker_containers.stdout_lines }}"
+ volumes: "{{ docker_volumes.stdout_lines }}"
+ networks: "{{ docker_networks.stdout_lines }}"
+
+ # List all existing docker resources
+ - name: List all docker containers
+ command: docker ps --no-trunc -a
+ register: docker_containers
+
+ - name: List all docker volumes
+ command: docker volume ls
+ register: docker_volumes
+
+ - name: List all docker networks
+ command: docker network ls --no-trunc
+ register: docker_networks
+
+ - name: List all docker images
+ command: docker images --no-trunc -a
+ register: docker_images
+
+ - name: Still existing docker resources
+ debug:
+ var: docker_resources
+ vars:
+ docker_resources:
+ containers: "{{ docker_containers.stdout_lines }}"
+ volumes: "{{ docker_volumes.stdout_lines }}"
+ networks: "{{ docker_networks.stdout_lines }}"
+ images: "{{ docker_images.stdout_lines }}"
+
+ when: docker_cli_version is version('0.0', '>')
diff --git a/test/integration/targets/incidental_setup_docker/vars/Debian.yml b/test/integration/targets/incidental_setup_docker/vars/Debian.yml
new file mode 100644
index 00000000..477bd124
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/Debian.yml
@@ -0,0 +1,9 @@
+docker_packages:
+ - docker-ce=5:19.03.0*
+ - docker-ce-cli=5:19.03.0*
+
+docker_prereq_packages:
+ - apt-transport-https
+ - ca-certificates
+ - curl
+ - software-properties-common
diff --git a/test/integration/targets/incidental_setup_docker/vars/Fedora.yml b/test/integration/targets/incidental_setup_docker/vars/Fedora.yml
new file mode 100644
index 00000000..9dd84344
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/Fedora.yml
@@ -0,0 +1,5 @@
+docker_prereq_packages: []
+
+docker_packages:
+ - docker-ce-19.03.1
+ - docker-ce-cli-19.03.1
diff --git a/test/integration/targets/incidental_setup_docker/vars/RedHat-7.yml b/test/integration/targets/incidental_setup_docker/vars/RedHat-7.yml
new file mode 100644
index 00000000..84ba0920
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/RedHat-7.yml
@@ -0,0 +1,18 @@
+docker_prereq_packages:
+ - yum-utils
+ - device-mapper-persistent-data
+ - lvm2
+ - libseccomp
+
+docker_packages:
+ - docker-ce-19.03.1
+ - docker-ce-cli-19.03.1
+
+docker_pip_extra_packages:
+ - requests==2.6.0
+
+# We need to pin the above so pip finds the right system-installed package
+# but we never want to try to remove it, so we substract this from the set of
+# packages we remove on cleanup
+docker_pip_never_remove:
+ - requests==2.6.0
diff --git a/test/integration/targets/incidental_setup_docker/vars/RedHat-8.yml b/test/integration/targets/incidental_setup_docker/vars/RedHat-8.yml
new file mode 100644
index 00000000..ff6dcf7b
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/RedHat-8.yml
@@ -0,0 +1,9 @@
+docker_prereq_packages:
+ - yum-utils
+ - device-mapper-persistent-data
+ - lvm2
+ - libseccomp
+
+docker_packages:
+ - docker-ce-19.03.13
+ - docker-ce-cli-19.03.13
diff --git a/test/integration/targets/incidental_setup_docker/vars/Suse.yml b/test/integration/targets/incidental_setup_docker/vars/Suse.yml
new file mode 100644
index 00000000..b740861f
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/Suse.yml
@@ -0,0 +1,2 @@
+docker_packages:
+ - docker=19.03.1_ce
diff --git a/test/integration/targets/incidental_setup_docker/vars/Ubuntu-14.yml b/test/integration/targets/incidental_setup_docker/vars/Ubuntu-14.yml
new file mode 100644
index 00000000..36ab54b9
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/Ubuntu-14.yml
@@ -0,0 +1,5 @@
+docker_pip_extra_packages:
+ # Installing requests >=2.12.0 on Ubuntu 14.04 breaks certificate validation. We restrict to an older version
+ # to ensure out get_url tests work out fine. This is only an issue if pyOpenSSL is also installed.
+ # Not sure why RHEL7 needs this specific version
+ - requests==2.6.0
diff --git a/test/integration/targets/incidental_setup_docker/vars/default.yml b/test/integration/targets/incidental_setup_docker/vars/default.yml
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/test/integration/targets/incidental_setup_docker/vars/default.yml