docker
Ansible Роль: Docker
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