diff --git a/.ansible-lint b/.ansible-lint new file mode 100644 index 0000000..62d7553 --- /dev/null +++ b/.ansible-lint @@ -0,0 +1,4 @@ +warn_list: + - '106' + - '208' + - experimental diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..5474992 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,19 @@ +--- +name: ci + +on: + pull_request + +jobs: + tests: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + # this should be in sync with our deploy image + python-version: "3.7.x" + - run: | + python -m pip install --upgrade pip + pip install tox tox-gh-actions + - run: tox diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3d17f8b..0000000 --- a/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ ---- - -language: python -python: - - "3.6" - - "3.7" - -sudo: required - -# Enable the docker service -services: - - docker - -# Replace aufs with the vfs docker storage driver -# to prevent systemd to fail starting docker in docker. -before_install: - - sudo sed -i 's|DOCKER_OPTS=.*|DOCKER_OPTS="-H tcp://127.0.0.1:2375 -H unix:///var/run/docker.sock --storage-driver vfs"|g' /etc/default/docker - - sudo service docker restart - - docker info - -# Install molecule and docker-py -install: - - pip install tox-travis - -# Parallel testing of the supported Ansible versions -env: - matrix: - - ANSIBLE=2.6 - - ANSIBLE=2.7 - - ANSIBLE=2.8 - -# Tests all the scenarios -script: - - tox - -notifications: - webhooks: https://galaxy.ansible.com/api/v1/notifications/ diff --git a/README.md b/README.md index b7609ef..9af7762 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,11 @@ # Ansible Role: Docker -[![Build Status](https://travis-ci.org/pngmbh/ansible-dockerswarm.svg?branch=pngmbh)](https://travis-ci.org/pngmbh/ansible-dockerswarm) [![License](https://img.shields.io/badge/license-MIT%20License-brightgreen.svg)](https://opensource.org/licenses/MIT) -[![Ansible Role](http://img.shields.io/badge/galaxy-atosatto.docker--swarm-blue.svg?style=flat-square)](https://galaxy.ansible.com/atosatto/docker-swarm) -[![GitHub tag](https://img.shields.io/github/tag/atosatto/ansible-dockerswarm.svg)](https://github.com/atosatto/ansible-dockerswarm/tags) +[![GitHub tag](https://img.shields.io/github/tag/pngmbh/ansible-dockerswarm.svg)](https://github.com/pngmbh/ansible-dockerswarm/tags) -Setup a Docker on RHEL/CentOS and Debian/Ubuntu servers. -The role supports Docker Engine's "Swarm Mode" (https://docs.docker.com/engine/swarm/) to create a cluster of Docker nodes. +Setup a [Docker Swarm](https://docs.docker.com/engine/swarm) on Flatcar servers. + +> This is a fork of [atosatto/ansible-dockerswarm](https://github.com/atosatto/ansible-dockerswarm), which skips install and configuration of Docker and **only** supports setting up Docker Swarm. If you need to install Docker, find another role or use Flatcar Linux. :) ## Requirements @@ -20,37 +19,6 @@ None. Available variables are listed below, along with default values (see `[defaults/main.yml](defaults/main.yml)`): - docker_repo: "{{ docker_repo_ce_stable }}" - -The repository proving the Docker packages. -The [Docker Community](https://www.docker.com/docker-community) stable repository is configured by default. -Additional repositories are defined in `[vars/main.yml](vars/main.yml)` including the edge, test and nightly repositories. -To skip the configuration of the repository and use the system repositories set `skip_repo: true`. - - docker_package_name: "docker-ce" - -Name of the package providing the Docker daemon. - - docker_package_version: "" - -Version of the Docker package to be installed on the target hosts. -When set to `""` the latest available version will be installed. - - docker_dependencies: "{{ default_docker_dependencies }}" - -Additional packages to be installed by the role. -See `[vars/RedHat.yml](vars/RedHat.yml)` and `[vars/Debian.yml](vars/Debian.yml)` for the definition of the `default_docker_dependencies` variable. - - docker_service_state: "started" - docker_service_enabled: "yes" - -State of the Docker service. - - docker_daemon_config: {} - -Dictionary of Docker deamon configuration options to be written to `/etc/docker/daemon.json`. -See [Daemon configuration file](https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file) for the detailed documentation of the available options. - docker_swarm_interface: "{{ ansible_default_ipv4['alias'] }}" Setting `docker_swarm_interface` allows you to define which network interface will be used for cluster inter-communication. @@ -64,21 +32,9 @@ By default, the ip address of `docker_swarm_interface`. Listen port for the Swarm raft API. - docker_group_name: "docker" - docker_group_users: - - "{{ ansible_user }}" - -Name of the Docker group and list of users to be added to `docker_group_name` to manage the Docker daemon. -**NB**: The users must already exist in the system. - - skip_repo: false - skip_engine: false - skip_group: false skip_swarm: false - skip_docker_py: false Switches allowing to disable specific functionalities of the role. -If you want to use this role to install `docker-engine` without enabling `swarm-mode` set `skip_swarm: true`. Swarm node labels ----------------- @@ -137,27 +93,6 @@ You can assign labels to cluster running playbook with `--tags=swarm_labels` roles: - { role: atosatto.docker-swarm } -Testing -------- - -Tests are performed by [Molecule](http://molecule.readthedocs.org/en/latest/). - - $ pip install tox - -To test all the scenarios run - - $ tox - -To run a custom molecule command - - $ tox -e py27-ansible23 -- molecule test -s swarm-cluster - -The `MOLECULE_DRIVER_NAME` and `MOLECULE_TARGET_DISTRO` allows to change the Molecule driver from Docker to Vagrant and the tests target OS - - $ MOLECULE_DRIVER_NAME=vagrant MOLECULE_TARGET_DISTRO=ubuntu-1604 tox - -To test the role on Ubuntu instead of CentOS set the - License ------- diff --git a/defaults/main.yml b/defaults/main.yml index aa208ae..a208c53 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,31 +1,5 @@ --- - -# Repository to be used for the installation of the Docker packages -docker_repo: "{{ docker_repo_ce_stable }}" - -# Name of the package providing Docker -docker_package_name: "docker-ce" - -# Version of the Docker package to be installed. -# By default, the latest available version will be installed. -docker_package_version: "" - -# Installation state of the Docker package. -# Set it to 'latest' to upgrade Docker. -docker_package_state: present - -# Extra packages that have to be installed together with Docker -# e.g. linux-image-extra-virtual on some Debian systems -docker_dependencies: "{{ default_docker_dependencies }}" - -# State of the Docker deamon service -docker_service_state: "started" - -# Whether the Docker service should start on boot -docker_service_enabled: "yes" - -# Docker Deamon configuration -docker_daemon_config: {} +skip_swarm: false # if true, skips the swarm setup # Docker swarm network can be define in order to be sure that # swarm cluster doesn't overlap with you infrastructure @@ -36,17 +10,3 @@ docker_daemon_config: {} docker_swarm_interface: "{{ ansible_default_ipv4['interface'] }}" docker_swarm_addr: "{{ hostvars[inventory_hostname]['ansible_' + docker_swarm_interface]['ipv4']['address'] }}" docker_swarm_port: 2377 - -# Name of the Docker group -docker_group_name: "docker" - -# List of the users in the Docker group -docker_group_users: - - "{{ ansible_user | default(ansible_user_id) }}" # if ansible_user is not defined, we default to the ansible ansible_user_id fact - -# Switches disabling the docker-engine, docker group and swarm-mode setup. -skip_repo: false # if true, skips the setup of the docker repository -skip_engine: false # if true, skips the docker engine installation -skip_group: false # if true, does not add the docker_admin_users to the docker_group_name -skip_swarm: false # if true, skips the swarm setup -skip_docker_py: false # if true, skips the installation of docker-py diff --git a/handlers/main.yml b/handlers/main.yml deleted file mode 100644 index 0b2c357..0000000 --- a/handlers/main.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- - -- name: restart docker - service: - name: docker - state: restarted - -- name: clean yum cache - command: /usr/bin/yum clean all - args: - warn: false diff --git a/meta/main.yml b/meta/main.yml index 7f80604..f74b7d9 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -1,28 +1,15 @@ --- galaxy_info: - author: Andrea Tosatto - description: Setup a Docker Swarm Cluster on Centos/RHEL, Ubuntu/Debian. + author: Planetary Quantum GmbH + description: Setup a Docker Swarm Cluster on Flatcar. min_ansible_version: 2.5 license: MIT - issue_tracker_url: https://github.com/atosatto/ansible-dockerswarm/issues + issue_tracker_url: https://github.com/pngmbh/ansible-dockerswarm/issues - platforms: - - name: EL - versions: - - 7 - - name: Ubuntu - versions: - - disco - - cosmic - - bionic - - xenial - - name: Debian - versions: - - buster - - stretch + platforms: [] galaxy_tags: - docker - swarm -dependencies: [] +dependencies: {} diff --git a/molecule/resources/Dockerfile.centos-systemd.j2 b/molecule/resources/Dockerfile.centos-systemd.j2 deleted file mode 100644 index 8065458..0000000 --- a/molecule/resources/Dockerfile.centos-systemd.j2 +++ /dev/null @@ -1,26 +0,0 @@ -# Molecule managed - -FROM {{ item.image }} - -ENV container docker - -# Configure systemd to run into the container (see https://hub.docker.com/_/centos/) -RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ -rm -f /lib/systemd/system/multi-user.target.wants/*;\ -rm -f /etc/systemd/system/*.wants/*;\ -rm -f /lib/systemd/system/local-fs.target.wants/*; \ -rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ -rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ -rm -f /lib/systemd/system/basic.target.wants/*;\ -rm -f /lib/systemd/system/anaconda.target.wants/*; - -# Install sudo and disable requiretty -RUN yum -y install sudo -RUN /usr/bin/sed -i -e 's/^\(Defaults\s*requiretty\)/#--- \1/' /etc/sudoers - -VOLUME [ "/sys/fs/cgroup" ] - -CMD ["/usr/sbin/init"] - -RUN if [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf net-tools bash && dnf clean all; \ - elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl net-tools bash && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; fi diff --git a/molecule/resources/Dockerfile.debian-systemd.j2 b/molecule/resources/Dockerfile.debian-systemd.j2 deleted file mode 100644 index 60aa004..0000000 --- a/molecule/resources/Dockerfile.debian-systemd.j2 +++ /dev/null @@ -1,25 +0,0 @@ -# Molecule managed - -FROM {{ item.image }} - -RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y systemd && apt-get clean; fi -RUN if [ ! -e /sbin/init ]; then ln -s /lib/systemd/systemd /sbin/init ; fi - -ENV container docker - -# Don't start the optional systemd services. -RUN find /etc/systemd/system \ - /lib/systemd/system \ - -path '*.wants/*' \ - -not -name '*journald*' \ - -not -name '*systemd-tmpfiles*' \ - -not -name '*systemd-user-sessions*' \ - -exec rm \{} \; - -RUN systemctl set-default multi-user.target - -VOLUME [ "/sys/fs/cgroup" ] - -CMD ["/sbin/init"] - -RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash net-tools ca-certificates && apt-get clean; fi diff --git a/molecule/resources/Dockerfile.default.j2 b/molecule/resources/Dockerfile.default.j2 deleted file mode 100644 index a27a019..0000000 --- a/molecule/resources/Dockerfile.default.j2 +++ /dev/null @@ -1,11 +0,0 @@ -# Molecule managed - -FROM {{ item.image }} - -RUN if [ $(command -v apt-get) ]; then apt-get update && apt-get upgrade -y && apt-get install -y python sudo bash ca-certificates net-tools && apt-get clean; \ - elif [ $(command -v dnf) ]; then dnf makecache && dnf --assumeyes install python python-devel python2-dnf bash net-tools && dnf clean all; \ - elif [ $(command -v yum) ]; then yum makecache fast && yum update -y && yum install -y python sudo yum-plugin-ovl bash net-tools && sed -i 's/plugins=0/plugins=1/g' /etc/yum.conf && yum clean all; \ - elif [ $(command -v zypper) ]; then zypper refresh && zypper update -y && zypper install -y python sudo bash python-xml net-tools && zypper clean -a; \ - elif [ $(command -v apk) ]; then apk update && apk add --no-cache python sudo bash ca-certificates net-tools; fi - -CMD ["sleep", "infinity"] diff --git a/molecule/resources/create.yml b/molecule/resources/create.yml deleted file mode 100644 index 1d148c6..0000000 --- a/molecule/resources/create.yml +++ /dev/null @@ -1,54 +0,0 @@ ---- - -- name: Create the test targets - hosts: localhost - connection: local - gather_facts: false - vars: - molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}" - molecule_ephemeral_directory: "{{ lookup('env', 'MOLECULE_EPHEMERAL_DIRECTORY') }}" - molecule_scenario_directory: "{{ lookup('env', 'MOLECULE_SCENARIO_DIRECTORY') }}" - molecule_yml: "{{ lookup('file', molecule_file) | molecule_from_yaml }}" - tasks: - - - name: Create the test targets Dockerfiles - template: - src: "Dockerfile.{{ item.dockerfile_tpl | default('default') }}.j2" - dest: "{{ molecule_ephemeral_directory }}/Dockerfile_{{ item.image | regex_replace('[^a-zA-Z0-9_]', '_') }}" - with_items: "{{ molecule_yml.platforms }}" - register: platforms - - - name: Build the test targets Docker images - docker_image: - path: "{{ molecule_ephemeral_directory }}" - name: "molecule_ansible_dockerswarm/{{ item.item.image }}" - dockerfile: "{{ item.item.dockerfile | default(item.invocation.module_args.dest) }}" - force: "{{ item.item.force | default(true) }}" - with_items: "{{ platforms.results }}" - when: platforms.changed - - - name: Create the test targets Docker instances - docker_container: - name: "{{ item.name }}" - hostname: "{{ item.name }}" - image: "molecule_ansible_dockerswarm/{{ item.image }}" - command: "{{ item.command | default(omit) }}" - log_driver: json-file - privileged: "yes" - volumes: - # Mount the cgroups fs to allow SystemD to run into the containers - - "/sys/fs/cgroup:/sys/fs/cgroup:ro" - state: started - recreate: false - register: server - with_items: "{{ molecule_yml.platforms }}" - async: 7200 - poll: 0 - - - name: Wait for instance(s) creation to complete - async_status: - jid: "{{ item.ansible_job_id }}" - register: docker_jobs - until: docker_jobs.finished - retries: 300 - with_items: "{{ server.results }}" diff --git a/molecule/resources/destroy.yml b/molecule/resources/destroy.yml deleted file mode 100644 index dc0b526..0000000 --- a/molecule/resources/destroy.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- - -- name: Destroy the test targets - hosts: localhost - connection: local - gather_facts: false - vars: - molecule_file: "{{ lookup('env', 'MOLECULE_FILE') }}" - molecule_yml: "{{ lookup('file', molecule_file) | molecule_from_yaml }}" - tasks: - - - name: Destroy the test targets instance(s) - docker_container: - name: "{{ item.name }}" - state: absent - force_kill: "{{ item.force_kill | default(true) }}" - register: server - with_items: "{{ molecule_yml.platforms }}" - async: 7200 - poll: 0 - - - name: Wait for instance(s) deletion to complete - async_status: - jid: "{{ item.ansible_job_id }}" - register: docker_jobs - until: docker_jobs.finished - retries: 300 - with_items: "{{ server.results }}" diff --git a/molecule/resources/prepare.yml b/molecule/resources/prepare.yml deleted file mode 100644 index 78f418f..0000000 --- a/molecule/resources/prepare.yml +++ /dev/null @@ -1,16 +0,0 @@ ---- - -- name: Prepare the test targets - hosts: all - tasks: - - name: Make sure the ip command is available on Debian/Ubuntu. - package: - name: iproute2 - state: present - when: ansible_os_family == 'Debian' - - - name: Make sure the ip command is available on RedHat/CentOS. - package: - name: iproute - state: present - when: ansible_os_family == 'RedHat' diff --git a/molecule/resources/tests/test_docker_engine.py b/molecule/resources/tests/test_docker_engine.py deleted file mode 100644 index 8b941ac..0000000 --- a/molecule/resources/tests/test_docker_engine.py +++ /dev/null @@ -1,39 +0,0 @@ -import os -import testinfra.utils.ansible_runner - -testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner( - os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all') - -debian_os = ['debian', 'ubuntu'] -rhel_os = ['redhat', 'centos'] - - -def test_docker_ce_stable_repository_exists(host): - - f = None - if host.system_info.distribution.lower() in debian_os: - f = host.file('/etc/apt/sources.list.d/docker_ce_stable.list') - if host.system_info.distribution.lower() in rhel_os: - f = host.file('/etc/yum.repos.d/docker_ce_stable.repo') - - assert f.exists - assert f.user == 'root' - assert f.group == 'root' - assert f.mode == 0o644 - - -def test_docker_ce_installed(host): - - assert host.package('docker-ce').is_installed - - -def test_docker_service(host): - - # Testinfra fails on Ubuntu trying to use systemd to get - # the status of the Docker daemon - if host.system_info.distribution.lower() in debian_os: - host.run("/etc/init.d/docker status").rc == 0 - else: - s = host.service('docker') - assert s.is_running - assert s.is_enabled diff --git a/molecule/swarm/molecule.yml b/molecule/swarm/molecule.yml deleted file mode 100644 index 4779627..0000000 --- a/molecule/swarm/molecule.yml +++ /dev/null @@ -1,57 +0,0 @@ ---- - -scenario: - name: swarm - -driver: - name: docker - -dependency: - name: galaxy - -platforms: - - - name: centos-7 - image: centos:7 - dockerfile_tpl: centos-systemd - groups: - - docker_swarm_manager - - - name: ubuntu-1804 - image: ubuntu:18.04 - dockerfile_tpl: debian-systemd - groups: - - docker_swarm_worker - - - name: debian-10 - image: debian:10 - dockerfile_tpl: debian-systemd - groups: - - docker_swarm_worker - -provisioner: - name: ansible - options: - diff: false - v: false - playbooks: - create: ../resources/create.yml - destroy: ../resources/destroy.yml - prepare: ../resources/prepare.yml - lint: - name: ansible-lint - -lint: - name: yamllint - options: - config-data: - ignore: venv - -verifier: - name: testinfra - options: - vvv: true - additional_files_or_dirs: - - ../../resources/tests/ - lint: - name: flake8 # Will use the rules defined in .flake8 diff --git a/molecule/swarm/playbook.yml b/molecule/swarm/playbook.yml deleted file mode 100644 index 25fafb8..0000000 --- a/molecule/swarm/playbook.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- - -- name: Provision a Docker Swarm cluster - hosts: all - roles: - - { role: ansible-dockerswarm } diff --git a/molecule/swarm/tests/test_docker_swarm.py b/molecule/swarm/tests/test_docker_swarm.py deleted file mode 100644 index 782333c..0000000 --- a/molecule/swarm/tests/test_docker_swarm.py +++ /dev/null @@ -1,29 +0,0 @@ -import os -import testinfra.utils.ansible_runner - -runner = testinfra.utils.ansible_runner.AnsibleRunner(os.environ['MOLECULE_INVENTORY_FILE']) - -ALL_HOSTS = runner.get_hosts('all') -MANAGER_HOSTS = runner.get_hosts('docker_swarm_manager') -WORKER_HOSTS = runner.get_hosts('docker_swarm_worker') - -testinfra_hosts = ALL_HOSTS - - -def test_docker_swarm_enabled(host): - - assert 'Swarm: active' in host.check_output('docker info') - - -def test_docker_swarm_status(host): - - docker_info = host.check_output('docker info') - hostname = host.check_output('hostname -s') - - if hostname in MANAGER_HOSTS: - assert 'Is Manager: true' in docker_info - assert 'Nodes: 3' in docker_info # the test cluster is of 3 nodes - assert 'Managers: 1' in docker_info # with 1 managers - - elif hostname in WORKER_HOSTS: - assert 'Is Manager: false' in docker_info diff --git a/tasks/main.yml b/tasks/main.yml index a332c78..5711b03 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,28 +1,4 @@ --- - -# Variables setup -- name: Include os-specific variables. - include_vars: "{{ ansible_os_family }}.yml" - -- name: Run os-specific specific setup - include: "setup-{{ ansible_os_family }}.yml" - -# Install the Docker repository -- include: "repo-{{ ansible_os_family }}.yml" - when: not skip_repo - -# Install the Docker Engine -- include: setup-docker-engine.yml - when: not skip_engine - -# Install docker-py -- include: setup-docker-py.yml - when: not skip_docker_py - -# Adds the Docker admin users to the Docker group -- include: setup-docker-group.yml - when: not skip_group - # Setup the Docker Swarm Cluster - block: - include: setup-swarm-cluster.yml diff --git a/tasks/repo-Debian.yml b/tasks/repo-Debian.yml deleted file mode 100644 index d29ecdc..0000000 --- a/tasks/repo-Debian.yml +++ /dev/null @@ -1,18 +0,0 @@ ---- - -- name: Install apt-transport-https if necessary. - apt: - name: apt-transport-https - state: present - -- name: Import Docker APT public key. - apt_key: - url: "{{ docker_repo['apt_gpg_key'] }}" - id: "{{ docker_repo['apt_gpg_key_id'] | default('') }}" - state: present - -- name: Add the Docker APT repository. - apt_repository: - repo: "{{ docker_repo['apt_repo'] }}" - filename: "{{ docker_repo['name'] }}" - state: present diff --git a/tasks/repo-RedHat.yml b/tasks/repo-RedHat.yml deleted file mode 100644 index 1c06c5f..0000000 --- a/tasks/repo-RedHat.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -- name: Install yum-utils if necessary. - yum: - name: yum-utils - state: present - -- name: Add the YUM Docker repository. - yum_repository: - name: "{{ docker_repo['name'] }}" - file: "{{ docker_repo['name'] }}" - description: "{{ docker_repo['name'] }}" - baseurl: "{{ docker_repo['yum_repo'] }}" - gpgkey: "{{ docker_repo['yum_gpg_key'] | default(omit) }}" - gpgcheck: "{{ docker_repo['yum_gpg_check'] | default(False) }}" - state: present - notify: clean yum cache diff --git a/tasks/reset-connection.yml b/tasks/reset-connection.yml deleted file mode 100644 index 3005711..0000000 --- a/tasks/reset-connection.yml +++ /dev/null @@ -1,3 +0,0 @@ ---- - -- meta: reset_connection diff --git a/tasks/setup-Debian.yml b/tasks/setup-Debian.yml deleted file mode 100644 index 020e78a..0000000 --- a/tasks/setup-Debian.yml +++ /dev/null @@ -1,30 +0,0 @@ ---- -# Makes sure that the repo cache is fresh -- name: Update APT cache. - apt: - update_cache: true - changed_when: false - -- name: Install python-pip. - package: - name: "{{ python_pip_packages }}" - state: present - when: (not skip_docker_py) or (ansible_python_version is version('2.6.0', '>=') - and ansible_python_version is version('2.7.9', '<')) - -- name: Install the Python SNI support packages. - package: - name: "{{ python_sni_support_packages }}" - state: present - when: ansible_python_version is version('2.6.0', '>=') - and ansible_python_version is version('2.7.9', '<') - -# There extra pip dependencies are needed to add SSL SNI support to -# Python version prior to 2.7.9. SNI support is needed by the Ansible -# apt_key module. -- name: Install the Python SNI python-pip dependencies. - pip: - name: "{{ python_sni_pip_dependencies }}" - state: present - when: ansible_python_version is version('2.6.0', '>=') - and ansible_python_version is version('2.7.9', '<') diff --git a/tasks/setup-RedHat.yml b/tasks/setup-RedHat.yml deleted file mode 100644 index e6431f4..0000000 --- a/tasks/setup-RedHat.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -- name: Install python-pip. - package: - name: "{{ item }}" - state: present - with_items: "{{ python_pip_packages }}" - when: (not skip_docker_py) or (ansible_python_version is version('2.6.0', '>=') - and ansible_python_version is version('2.7.9', '<')) diff --git a/tasks/setup-docker-engine.yml b/tasks/setup-docker-engine.yml deleted file mode 100644 index 38005e3..0000000 --- a/tasks/setup-docker-engine.yml +++ /dev/null @@ -1,76 +0,0 @@ ---- - -- name: Install Docker dependencies. - package: - name: "{{ docker_dependencies }}" - state: present - -- block: - - - name: Prefix the Docker package version with the correct separator on RedHat - set_fact: - _docker_package_version: "-{{ docker_package_version }}" - when: ansible_os_family == 'RedHat' - - - name: Prefix the Docker package version with the correct separator on Debian - set_fact: - _docker_package_version: "={{ docker_package_version }}" - when: ansible_os_family == 'Debian' - - when: docker_package_version | length > 0 - -- name: Install Docker. - package: - name: "{{ docker_package_name }}{{ _docker_package_version | default('') }}" - state: "{{ docker_package_state }}" - -- name: Explicitly install/Update Docker CLI too, on RedHat distros - when: ansible_os_family == 'RedHat' - package: - name: "{{ docker_package_name }}-cli{{ _docker_package_version | default('') }}" - state: "{{ docker_package_state }}" - -- name: Make sure the Docker daemon configuration directory exists - file: - path: /etc/docker - owner: root - group: root - mode: 0700 - state: directory - -- name: Configure the Docker deamon. - template: - src: docker-daemon.json.j2 - dest: /etc/docker/daemon.json - owner: root - group: root - mode: 0600 - notify: restart docker - -- name: Ensure service directories exist. - file: - path: "/etc/systemd/system/{{ item }}.service.d" - state: directory - with_items: - - containerd - - docker - -- name: Add overrides. - template: - src: "override-{{ item }}.conf.j2" - dest: "/etc/systemd/system/{{ item }}.service.d/override.conf" - with_items: - - containerd - - docker - register: override_template - -- name: Reload systemd daemon if template is changed. - systemd: - daemon_reload: true - when: override_template is changed - -- name: Enable the Docker daemon service and start it. - service: - name: docker - state: "{{ docker_service_state }}" - enabled: "{{ docker_service_enabled }}" diff --git a/tasks/setup-docker-group.yml b/tasks/setup-docker-group.yml deleted file mode 100644 index d1cae59..0000000 --- a/tasks/setup-docker-group.yml +++ /dev/null @@ -1,28 +0,0 @@ ---- -- name: Add the Docker administrators to the Docker group - user: - name: "{{ item }}" - groups: "{{ docker_group_name }}" - append: true - register: addtogroup - become: true - with_items: "{{ docker_group_users }}" - -- name: Gather users which were added during this run - set_fact: - __docker_users_added: "{{ addtogroup.results | selectattr('changed') | map(attribute='item') | list }}" - -- block: - # See https://stackoverflow.com/a/44753457 - - name: Reset ansible connection after group changes (Ansible >= 2.3.0). - include_tasks: reset-connection.yml - # we need to force dynamic inclusion here to avoid 'reset_connection' to be - # always executed even if the when condition evaluates to false on Ansible 2.4.x - # or to generate syntax errors on Ansible < 2.3 - when: ansible_version is defined - and (ansible_version.full is version('2.3.0.0', '>=')) - - when: ansible_connection in ['ssh', 'smart'] - and ansible_user is defined - and ansible_user in docker_group_users - and ansible_user in __docker_users_added diff --git a/tasks/setup-docker-py.yml b/tasks/setup-docker-py.yml deleted file mode 100644 index 0b1c150..0000000 --- a/tasks/setup-docker-py.yml +++ /dev/null @@ -1,17 +0,0 @@ ---- - -# Specified version because of https://github.com/ansible/ansible/issues/17495 -- name: Install docker-py 1.9.0. - pip: - name: docker-py - version: 1.9.0 - state: present - when: ansible_version is defined - and ansible_version.full is version('2.2.0.0', '<') - -- name: Install docker-py. - pip: - name: docker-py - state: present - when: (ansible_version is not defined) or (ansible_version is defined - and ansible_version.full is version('2.2.0.0', '>=')) diff --git a/templates/docker-daemon.json.j2 b/templates/docker-daemon.json.j2 deleted file mode 100644 index 07eb372..0000000 --- a/templates/docker-daemon.json.j2 +++ /dev/null @@ -1 +0,0 @@ -{{ docker_daemon_config | to_nice_json(indent=2) }} diff --git a/templates/override-containerd.conf.j2 b/templates/override-containerd.conf.j2 deleted file mode 100644 index adab53c..0000000 --- a/templates/override-containerd.conf.j2 +++ /dev/null @@ -1,3 +0,0 @@ -# {{ ansible_managed }} -[Service] -ExecStartPre= diff --git a/templates/override-docker.conf.j2 b/templates/override-docker.conf.j2 deleted file mode 100644 index 8a444d4..0000000 --- a/templates/override-docker.conf.j2 +++ /dev/null @@ -1,4 +0,0 @@ -# {{ ansible_managed }} - [Service] - ExecStart= - ExecStart=/usr/bin/dockerd diff --git a/test-requirements.txt b/test-requirements.txt deleted file mode 100644 index 8b7999f..0000000 --- a/test-requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -molecule==2.22.0 -docker-py==1.10.6 diff --git a/tox.ini b/tox.ini deleted file mode 100644 index 0d014c8..0000000 --- a/tox.ini +++ /dev/null @@ -1,14 +0,0 @@ -[tox] -minversion = 1.8 -envlist = py{36,37}-ansible{26,27,28} -skipsdist = true - -[testenv] -passenv = * -deps = - -rtest-requirements.txt - ansible28: ansible<2.9 - ansible27: ansible<2.8 - ansible26: ansible<2.7 -commands = - {posargs:molecule test --all --destroy always} diff --git a/vars/Debian.yml b/vars/Debian.yml deleted file mode 100644 index 58cc8cb..0000000 --- a/vars/Debian.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- - -python_pip_packages: - - python-pip - -python_sni_support_packages: - - python-dev - - libssl-dev - - libffi-dev - -default_docker_dependencies: [ ] diff --git a/vars/RedHat.yml b/vars/RedHat.yml deleted file mode 100644 index 3d3fdd9..0000000 --- a/vars/RedHat.yml +++ /dev/null @@ -1,11 +0,0 @@ ---- - -python_pip_packages: - - epel-release - - python-pip - -python_sni_support_packages: [ ] - -default_docker_dependencies: - # See https://github.com/moby/moby/issues/26054 - - xfsprogs diff --git a/vars/main.yml b/vars/main.yml deleted file mode 100644 index 3f083b9..0000000 --- a/vars/main.yml +++ /dev/null @@ -1,52 +0,0 @@ ---- - -docker_architecture: - x86_64: "amd64" - -# Docker CE stable release repository -docker_repo_ce_stable: - name: "docker_ce_stable" - yum_repo: "https://download.docker.com/linux/centos/7/$basearch/stable" - yum_gpg_key: "https://download.docker.com/linux/centos/gpg" - yum_gpg_check: "yes" - apt_repo: "deb [arch={{ docker_architecture[ansible_architecture] }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} stable" - apt_gpg_key: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" - apt_gpg_key_id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88" - -# Docker CE edge release repository -docker_repo_ce_edge: - name: "docker_ce_edge" - yum_repo: "https://download.docker.com/linux/centos/7/$basearch/edge" - yum_gpg_key: "https://download.docker.com/linux/centos/gpg" - yum_gpg_check: "yes" - apt_repo: "deb [arch={{ docker_architecture[ansible_architecture] }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} edge" - apt_gpg_key: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" - apt_gpg_key_id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88" - -# Docker CE test release repository -docker_repo_ce_test: - name: "docker_ce_test" - yum_repo: "https://download.docker.com/linux/centos/7/$basearch/test" - yum_gpg_key: "https://download.docker.com/linux/centos/gpg" - yum_gpg_check: "yes" - apt_repo: "deb [arch={{ docker_architecture[ansible_architecture] }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} test" - apt_gpg_key: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" - apt_gpg_key_id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88" - -# Docker CE nightly release repository -docker_repo_ce_nightly: - name: "docker_ce_nightly" - yum_repo: "https://download.docker.com/linux/centos/7/$basearch/nightly" - yum_gpg_key: "https://download.docker.com/linux/centos/gpg" - yum_gpg_check: "yes" - apt_repo: "deb [arch={{ docker_architecture[ansible_architecture] }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} nightly" - apt_gpg_key: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" - apt_gpg_key_id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88" - -# Name of the SSH Deamon -ssh_daemon: sshd - -python_sni_pip_dependencies: - - pyopenssl - - ndg-httpsclient - - pyasn1