sorrowless.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.docker