dudefellah.docker

Ansible Role: Docker

pipeline status

An Ansible Role that installs Docker on Linux.

Note

This is a fork of the geerlingguy.docker Docker role with a few modifications. If you're looking for that role (which may be better maintained than this one), please see his role rather than this one.

Otherwise, this role adds the ability to easily customize your docker.json file in your Docker configuration. This is useful in a number of scenarios, including the configuration of Kubernetes nodes. See defaults/main.yml for more details.

Requirements

None.

Role Variables

Available variables are listed below, along with default values (see defaults/main.yml):

# Edition can be one of: 'ce' (Community Edition) or 'ee' (Enterprise Edition).
docker_edition: 'ce'
docker_package: "docker-{{ docker_edition }}"
docker_package_state: present

The docker_edition should be either ce (Community Edition) or ee (Enterprise Edition). You can also specify a specific version of Docker to install using the distribution-specific format: Red Hat/CentOS: docker-{{ docker_edition }}-<VERSION>; Debian/Ubuntu: docker-{{ docker_edition }}=<VERSION>.

You can control whether the package is installed, uninstalled, or at the latest version by setting docker_package_state to present, absent, or latest, respectively. Note that the Docker daemon will be automatically restarted if the Docker package is updated. This is a side effect of flushing all handlers (running any of the handlers that have been notified by this and any other role up to this point in the play).

docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted

Variables to control the state of the docker service, and whether it should start on boot. If you're installing Docker inside a Docker container without systemd or sysvinit, you should set these to stopped and set the enabled variable to no.

docker_install_compose: true
docker_compose_version: "1.26.0"
docker_compose_path: /usr/local/bin/docker-compose

Docker Compose installation options.

docker_apt_release_channel: stable
docker_apt_arch: amd64
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] https://download.docker.com/linux/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: True
docker_apt_gpg_key: https://download.docker.com/linux/{{ ansible_distribution | lower }}/gpg

(Used only for Debian/Ubuntu.) You can switch the channel to edge if you want to use the Edge release.

You can change docker_apt_gpg_key to a different url if you are behind a firewall or provide a trustworthy mirror. Usually in combination with changing docker_apt_repository as well.

docker_yum_repo_url: https://download.docker.com/linux/centos/docker-{{ docker_edition }}.repo
docker_yum_repo_enable_edge: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: https://download.docker.com/linux/centos/gpg

(Used only for RedHat/CentOS.) You can enable the Edge or Test repo by setting the respective vars to 1.

You can change docker_yum_gpg_key to a different url if you are behind a firewall or provide a trustworthy mirror. Usually in combination with changing docker_yum_repository as well.

docker_daemon_json:
  exec-opts:
    - native.cgroupdriver=systemd
  log-driver: json-file
  log-opts:
    max-size: "100m"
  storage-driver: overlay2

docker_daemon_json_filename: /etc/docker/daemon.json

Customize your /etc/docker/daemon.json contents and filename. The YAML passed to docker_daemon_json is converted to JSON and ends up at the location referred to by docker_daemon_json_filename. If you leave docker_daemon_json empty, no file will be created and docker_daemon_json_filename will be deleted, if it exists.

docker_users:
  - user1
  - user2

A list of system users to be added to the docker group (so they can use Docker on the server).

Use with Ansible (and docker Python library)

Many users of this role wish to also use Ansible to then build Docker images and manage Docker containers on the server where Docker is installed. In this case, you can easily add in the docker Python library using the geerlingguy.pip role:

- hosts: all

  vars:
    pip_install_packages:
      - name: docker

  roles:
    - geerlingguy.pip
    - geerlingguy.docker

Dependencies

None.

Example Playbook

- hosts: all
  roles:
    - geerlingguy.docker

License

MIT / BSD

Author Information

This role was created in 2017 by Jeff Geerling, author of Ansible for DevOps.

Install
ansible-galaxy install dudefellah.docker
GitHub repository
License
mit
Downloads
466
Owner