docker

Ansible Роль: Docker

CI

Ansible роль, которая устанавливает Docker на Linux.

Требования

Нет.

Переменные роли

Доступные переменные перечислены ниже с значениями по умолчанию (см. defaults/main.yml):

# Выпуск может быть одним из: 'ce' (Community Edition) или 'ee' (Enterprise Edition).
# Вы можете определить версию Docker с помощью переменной docker_version, например: '=5:23.0.2-1~ubuntu.20.04~focal'
docker_edition: 'ce'
docker_version: ''
docker_packages:
  - "docker-{{ docker_edition }}{{ docker_version }}"
  - "docker-{{ docker_edition }}-cli{{ docker_version}}"
  - "docker-{{ docker_edition }}-rootless-extras{{ docker_version}}"
  - "containerd.io"
docker_packages_state: present

Переменная docker_edition должна быть либо ce (Community Edition), либо ee (Enterprise Edition). Вы также можете указать конкретную версию Docker для установки, используя переменную "docker_version": docker_version: '=5:23.0.2-1ubuntu.20.04focal'

Вы можете контролировать, установлен ли пакет, удалён или обновлён до последней версии, установив docker_packages_state на present, absent или latest, соответственно. Обратите внимание, что демон Docker будет автоматически перезапущен, если пакет Docker будет обновлён. Это побочный эффект очистки всех обработчиков (запуск любых обработчиков, которые были уведомлены этим и любым другим ролью до этого момента в плей).

docker_service_manage: true
docker_service_state: started
docker_service_enabled: true
docker_restart_handler_state: restarted

Переменные для управления состоянием сервиса docker и тем, должен ли он запускаться при загрузке. Если вы устанавливаете Docker внутри контейнера Docker без systemd или sysvinit, вы должны установить docker_service_manage на false.

docker_install_compose_plugin: false
docker_compose_package: docker-compose-plugin
docker_compose_package_state: present

Параметры установки плагина Docker Compose. Эти параметры отличаются от нижеуказанных тем, что docker-compose устанавливается как плагин Docker (и используется с docker compose), а не как самостоятельный бинарный файл.

docker_install_compose: true
docker_compose_version: "1.26.0"
docker_compose_arch: "{{ ansible_architecture }}"
docker_compose_path: /usr/local/bin/docker-compose

Параметры установки Docker Compose.

docker_add_repo: true

Управляет тем, добавит ли эта роль официальный репозиторий Docker. Установите на false, если вы хотите использовать пакеты Docker по умолчанию для вашей системы или управлять репозиторием пакетов самостоятельно.

docker_repo_url: https://download.docker.com/linux

Основной URL репозитория Docker, общий для систем Debian и RHEL.

docker_apt_release_channel: stable
docker_apt_arch: "{{ 'arm64' if ansible_architecture == 'aarch64' else 'amd64' }}"
docker_apt_repository: "deb [arch={{ docker_apt_arch }}] {{ docker_repo_url }}/{{ ansible_distribution | lower }} {{ ansible_distribution_release }} {{ docker_apt_release_channel }}"
docker_apt_ignore_key_error: true
docker_apt_gpg_key: "{{ docker_repo_url }}/{{ ansible_distribution | lower }}/gpg"
docker_apt_filename: "docker"

(Используется только для Debian/Ubuntu.) Вы можете переключить канал на nightly, если хотите использовать ночной релиз.

Вы можете изменить docker_apt_gpg_key на другой URL, если вы находитесь за брандмауэром или предоставить надежное зеркало. Обычно это идет в сочетании с изменением docker_apt_repository. docker_apt_filename контролирует имя файла списка источников, создаваемого в sources.list.d. Если вы обновляетесь с более ранней (<7.0.0) версии этой роли, вы должны изменить это имя на имя существующего файла (например, download_docker_com_linux_debian на Debian), чтобы избежать конфликтующих списков.

docker_yum_repo_url: "{{ docker_repo_url }}/{{ (ansible_distribution == 'Fedora') | ternary('fedora','centos') }}/docker-{{ docker_edition }}.repo"
docker_yum_repo_enable_nightly: '0'
docker_yum_repo_enable_test: '0'
docker_yum_gpg_key: "{{ docker_repo_url }}/centos/gpg"

(Используется только для RedHat/CentOS.) Вы можете включить ночной или тестовый репозиторий, установив соответствующие переменные в 1.

Вы можете изменить docker_yum_gpg_key на другой URL, если вы находитесь за брандмауэром или предоставить надежное зеркало. Обычно это также комбинируется с изменением docker_yum_repository.

docker_users:
  - user1
  - user2

Список системных пользователей, которые будут добавлены в группу docker (чтобы они могли использовать Docker на сервере).

docker_daemon_options:
  storage-driver: "devicemapper"
  log-opts:
    max-size: "100m"

Пользовательские опции dockerd можно настроить через этот словарь, представляющий json файл /etc/docker/daemon.json.

Для входа в реестр вам нужно определить следующие переменные:

  • docker_registry_url
  • docker_registry_user
  • docker_registry_password

Использование с Ansible (и библиотекой docker на Python)

Многие пользователи этой роли желают также использовать Ansible для создания образов Docker и управления контейнерами Docker на сервере, где установлен Docker. В этом случае вы можете легко добавить библиотеку docker на Python, используя роль geerlingguy.pip:

- hosts: all

  vars:
    pip_install_packages:
      - name: docker

  roles:
    - geerlingguy.pip
    - geerlingguy.docker

Для настройки swarm вы должны добавить переменную docker_swarm_configure: true для всех узлов и docker_swarm_manager: true для менеджеров. inventory_hostname должен совпадать с именем хоста (ansible_hostname) для правильного удаления узлов.

Зависимости

Нет.

Пример Плейбука

- hosts: all
  roles:
    - geerlingguy.docker

Лицензия

MIT / BSD

Спонсоры

  • We Manage: Помогаем стартапам и развивающимся компаниям в устойчивом масштабировании их инфраструктуры.

Указанные спонсоры поддерживают Джеффа Гирлинга на GitHub Sponsors. Вы также можете поддерживать работу Джеффа, чтобы помочь ему продолжать улучшать эти проекты с открытым исходным кодом Ansible!

Информация об авторе

Эта роль была создана в 2017 году Джеффом Гирлингом, автором Ansible for DevOps. Адаптировано под собственные нужды Станиславом Богаткиным.

Установить
ansible-galaxy install sorrowless/ansible-role-docker
Лицензия
mit
Загрузки
4574
Владелец
Barocco-style deployment engineer