diff --git a/README.md b/README.md index 021c1f2..860287a 100755 --- a/README.md +++ b/README.md @@ -297,7 +297,7 @@ have to edit any of these variables. ```yml # List of packages to be installed. -docker__package_dependencies: +docker__apt_package_dependencies: - "apt-transport-https" - "ca-certificates" - "cron" @@ -317,6 +317,19 @@ docker__apt_repository: > {{ ansible_distribution_release }} {{ docker__channel | join (' ') }} ``` +### Configuring the DNF package manager + +Docker requires a few dependencies to be installed for it to work. You shouldn't +have to edit this variable. + +```yml +# List of packages to be installed. +docker__dnf_package_dependencies: + - "ca-certificates" + - "cronie" + - "gnupg2" + - "libselinux-python" + ### Installing Python packages with Virtualenv and PIP #### Configuring Virtualenv @@ -337,9 +350,15 @@ PIP package. ```yml # This will attempt to install the correct version of PIP based on what your # configured Ansible Python interpreter is set to (ie. Python 2 or 3). -docker__pip_dependencies: +docker__apt_pip_dependencies: - "python-setuptools" - "python{{ '3' if ansible_python.version.major == 3 else '' }}-pip" + +docker__dnf_pip_dependencies: + - "python{{ ansible_python.version.major }}" + - "python{{ ansible_python.version.major }}-pip" + - "python{{ ansible_python.version.major }}-libs" + - "python{{ ansible_python.version.major }}-setuptools" ``` #### Installing PIP packages diff --git a/defaults/main.yml b/defaults/main.yml index 6f68e39..9ce3341 100755 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -31,13 +31,19 @@ docker__cron_jobs: cron_file: "docker-disk-clean-up" user: "{{ (docker__users | first) | d('root') }}" -docker__package_dependencies: +docker__apt_package_dependencies: - "apt-transport-https" - "ca-certificates" - "cron" - "gnupg2" - "software-properties-common" +docker__dnf_package_dependencies: + - "ca-certificates" + - "cronie" + - "gnupg2" + - "libselinux-python" + docker__apt_key_id: "9DC858229FC7DD38854AE2D88D81803C0EBFCD88" docker__apt_key_url: "https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg" docker__apt_repository: > @@ -45,10 +51,16 @@ docker__apt_repository: > https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker__channel | join (' ') }} -docker__pip_dependencies: +docker__apt_pip_dependencies: - "python-setuptools" - "python{{ '3' if ansible_python.version.major == 3 else '' }}-pip" +docker__dnf_pip_dependencies: + - "python{{ ansible_python.version.major }}" + - "python{{ ansible_python.version.major }}-pip" + - "python{{ ansible_python.version.major }}-libs" + - "python{{ ansible_python.version.major }}-setuptools" + docker__pip_virtualenv: "/usr/local/lib/docker/virtualenv" docker__default_pip_packages: diff --git a/tasks/apt.yml b/tasks/apt.yml new file mode 100644 index 0000000..0b4068a --- /dev/null +++ b/tasks/apt.yml @@ -0,0 +1,35 @@ +--- + +- name: Disable pinned Docker version + file: + dest: "/etc/apt/preferences.d/docker-ce.pref" + state: "absent" + when: not docker__version | d() + +- name: Enable pinned Docker version + template: + src: "etc/apt/preferences.d/docker-ce.pref.j2" + dest: "/etc/apt/preferences.d/docker-ce.pref" + owner: "root" + group: "root" + mode: "0644" + when: docker__version | d() + +- name: Install Docker's dependencies + apt: + name: "{{ docker__apt_package_dependencies + docker__apt_pip_dependencies }}" + +- name: Add Docker's public PGP key to the APT keyring + apt_key: + id: "{{ docker__apt_key_id }}" + url: "{{ docker__apt_key_url }}" + +- name: Configure Docker's upstream APT repository + apt_repository: + repo: "{{ docker__apt_repository }}" + update_cache: true + +- name: Install Docker + apt: + name: "docker-{{ docker__edition }}" + state: "{{ docker__state }}" diff --git a/tasks/dnf.yml b/tasks/dnf.yml new file mode 100644 index 0000000..682489d --- /dev/null +++ b/tasks/dnf.yml @@ -0,0 +1,32 @@ +--- +# Installing docker via https://docs.docker.com/install/linux/docker-ce/fedora/ + +- name: Old Docker versions are absent + dnf: + name: "{{ item }}" + state: absent + loop: + - 'docker' + - 'docker-client' + - 'docker-client-latest' + - 'docker-common' + - 'docker-latest' + - 'docker-latest-logrotate' + - 'docker-logrotate' + - 'docker-selinux' + - 'docker-engine-selinux' + - 'docker-engine' + +- name: Docker's Repository is added + get_url: + url: https://download.docker.com/linux/fedora/docker-ce.repo + dest: /etc/yum.repos.d/docker-ce.repo + +- name: Install Docker's dependencies + dnf: + name: "{{ docker__dnf_package_dependencies + docker__dnf_pip_dependencies }}" + +- name: Install Docker + dnf: + name: "docker-{{ docker__edition }}" + state: "{{ docker__state }}" diff --git a/tasks/main.yml b/tasks/main.yml index 2914c65..c3dafc4 100755 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,38 +1,7 @@ --- -- name: Disable pinned Docker version - file: - dest: "/etc/apt/preferences.d/docker-ce.pref" - state: "absent" - when: not docker__version | d() - -- name: Enable pinned Docker version - template: - src: "etc/apt/preferences.d/docker-ce.pref.j2" - dest: "/etc/apt/preferences.d/docker-ce.pref" - owner: "root" - group: "root" - mode: "0644" - when: docker__version | d() - -- name: Install Docker's dependencies - apt: - name: "{{ docker__package_dependencies + docker__pip_dependencies }}" - -- name: Add Docker's public PGP key to the APT keyring - apt_key: - id: "{{ docker__apt_key_id }}" - url: "{{ docker__apt_key_url }}" - -- name: Configure Docker's upstream APT repository - apt_repository: - repo: "{{ docker__apt_repository }}" - update_cache: true - -- name: Install Docker - apt: - name: "docker-{{ docker__edition }}" - state: "{{ docker__state }}" +- name: Include Appropriate Package Management + include_tasks: "{{ ansible_pkg_mgr }}.yml" - name: Check for existing Docker Compose file stat: diff --git a/tasks/yum.yml b/tasks/yum.yml new file mode 100644 index 0000000..e69de29