From 3470e5effb452c96dec0b0411abd2c5345672d71 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Fri, 30 Dec 2022 15:19:20 +0100 Subject: [PATCH] Add setup role for Docker Compose v2. (#542) --- .../setup_docker_compose_v2/defaults/main.yml | 8 +++ .../setup_docker_compose_v2/meta/main.yml | 8 +++ .../setup_docker_compose_v2/tasks/Alpine.yml | 9 ++++ .../tasks/Archlinux.yml | 9 ++++ .../setup_docker_compose_v2/tasks/Debian.yml | 9 ++++ .../setup_docker_compose_v2/tasks/Fedora.yml | 10 ++++ .../tasks/RedHat-7.yml | 9 ++++ .../tasks/RedHat-8.yml | 9 ++++ .../tasks/RedHat-9.yml | 9 ++++ .../setup_docker_compose_v2/tasks/Suse.yml | 12 +++++ .../setup_docker_compose_v2/tasks/main.yml | 16 ++++++ .../setup_docker_compose_v2/tasks/setup.yml | 50 +++++++++++++++++++ .../setup_docker_compose_v2/vars/Alpine.yml | 6 +++ .../vars/Archlinux.yml | 7 +++ .../setup_docker_compose_v2/vars/Fedora.yml | 6 +++ .../setup_docker_compose_v2/vars/default.yml | 4 ++ 16 files changed, 181 insertions(+) create mode 100644 tests/integration/targets/setup_docker_compose_v2/defaults/main.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/meta/main.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/Alpine.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/Archlinux.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/Debian.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/Fedora.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-7.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-8.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-9.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/Suse.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/main.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/tasks/setup.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/vars/Alpine.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/vars/Archlinux.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/vars/Fedora.yml create mode 100644 tests/integration/targets/setup_docker_compose_v2/vars/default.yml diff --git a/tests/integration/targets/setup_docker_compose_v2/defaults/main.yml b/tests/integration/targets/setup_docker_compose_v2/defaults/main.yml new file mode 100644 index 00000000..4f84d3ac --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/defaults/main.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +skip_docker_compose: false +docker_compose_packages: + - docker-compose-plugin diff --git a/tests/integration/targets/setup_docker_compose_v2/meta/main.yml b/tests/integration/targets/setup_docker_compose_v2/meta/main.yml new file mode 100644 index 00000000..b6e985d7 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/meta/main.yml @@ -0,0 +1,8 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +dependencies: + - setup_docker + - setup_remote_constraints diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/Alpine.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/Alpine.yml new file mode 100644 index 00000000..85042fdf --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/Alpine.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + apk: + name: "{{ docker_compose_packages }}" + state: present diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/Archlinux.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/Archlinux.yml new file mode 100644 index 00000000..2e62ff05 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/Archlinux.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + pacman: + name: "{{ docker_compose_packages }}" + state: present diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/Debian.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/Debian.yml new file mode 100644 index 00000000..1729ccab --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/Debian.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + apt: + name: "{{ docker_compose_packages }}" + state: present diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/Fedora.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/Fedora.yml new file mode 100644 index 00000000..a5f3d467 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/Fedora.yml @@ -0,0 +1,10 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + dnf: + name: "{{ docker_compose_packages }}" + state: present + enablerepo: docker-ce-test diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-7.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-7.yml new file mode 100644 index 00000000..62f0e373 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-7.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + yum: + name: "{{ docker_compose_packages }}" + state: present diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-8.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-8.yml new file mode 100644 index 00000000..54986845 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-8.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + dnf: + name: "{{ docker_compose_packages }}" + state: present diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-9.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-9.yml new file mode 100644 index 00000000..54986845 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/RedHat-9.yml @@ -0,0 +1,9 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + dnf: + name: "{{ docker_compose_packages }}" + state: present diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/Suse.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/Suse.yml new file mode 100644 index 00000000..bf8db5c0 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/Suse.yml @@ -0,0 +1,12 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- name: Install docker-compose as system package + community.general.zypper: + name: "{{ docker_compose_packages }}" + force: yes + disable_gpg_check: yes + update_cache: yes + notify: cleanup docker diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/main.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/main.yml new file mode 100644 index 00000000..e379f0fb --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/main.yml @@ -0,0 +1,16 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +#################################################################### +# WARNING: These are designed specifically for Ansible tests # +# and should not be used as examples of how to write Ansible roles # +#################################################################### + +- set_fact: + has_docker_compose: false + +- when: ansible_facts.distribution ~ ansible_facts.distribution_major_version not in ['CentOS6', 'RedHat6'] and ansible_python_version is version('3.7', '>=') + include_tasks: + file: setup.yml diff --git a/tests/integration/targets/setup_docker_compose_v2/tasks/setup.yml b/tests/integration/targets/setup_docker_compose_v2/tasks/setup.yml new file mode 100644 index 00000000..3da96a33 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/tasks/setup.yml @@ -0,0 +1,50 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +- 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" + +- block: + - 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 on Whales + pip: + state: present + name: python-on-whales + extra_args: "-c {{ remote_constraints }}" + + - name: Register docker-compose version + command: "docker compose version --short" + register: docker_compose_version + + - name: Declare docker-compose version + set_fact: + docker_compose_version: "{{ docker_compose_version.stdout }}" + + - name: Declare docker-compose as existing + set_fact: + has_docker_compose: '{{ docker_compose_version is version("2.0", ">=") }}' + + when: not skip_docker_compose diff --git a/tests/integration/targets/setup_docker_compose_v2/vars/Alpine.yml b/tests/integration/targets/setup_docker_compose_v2/vars/Alpine.yml new file mode 100644 index 00000000..c5d18002 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/vars/Alpine.yml @@ -0,0 +1,6 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +skip_docker_compose: true diff --git a/tests/integration/targets/setup_docker_compose_v2/vars/Archlinux.yml b/tests/integration/targets/setup_docker_compose_v2/vars/Archlinux.yml new file mode 100644 index 00000000..99d81828 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/vars/Archlinux.yml @@ -0,0 +1,7 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +docker_compose_packages: + - docker-compose diff --git a/tests/integration/targets/setup_docker_compose_v2/vars/Fedora.yml b/tests/integration/targets/setup_docker_compose_v2/vars/Fedora.yml new file mode 100644 index 00000000..c5d18002 --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/vars/Fedora.yml @@ -0,0 +1,6 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +skip_docker_compose: true diff --git a/tests/integration/targets/setup_docker_compose_v2/vars/default.yml b/tests/integration/targets/setup_docker_compose_v2/vars/default.yml new file mode 100644 index 00000000..f55df21f --- /dev/null +++ b/tests/integration/targets/setup_docker_compose_v2/vars/default.yml @@ -0,0 +1,4 @@ +--- +# Copyright (c) Ansible Project +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later