docker_deploy

Ansible Роль: развертывание Docker

Ansible роль для развертывания стеков Docker Compose (файлов).

Требования

Локальная система

  • rsync

Развертываемая система

  • docker-ce

  • docker-ce-cli

  • containerd.io

  • docker-compose-plugin или docker-compose

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

Имя переменной Тип Значение по умолчанию Описание
docker_deploy_source: строка "docker-deploy" Локальный каталог, содержащий файлы для развертывания Docker и Compose. Этот каталог относителен к основному каталогу плейбуков.
docker_deploy_destination: строка "/opt/docker-deploy" Папка назначения, в которую должно быть скопировано развертывание.
docker_deploy_compose_file: строка "docker-compose.yml" Имя файла Docker Compose, который нужно запустить.
docker_deploy_files: список [] Список файлов, которые должны быть скопированы в docker_deploy_destination:, больше информации о списке можно найти в следующей главе Docker_deploy_files.
docker_deploy_compatibility: булево true Включить флаг --compatibility, когда запускается файл Compose.
docker_deploy_remove_orphans: булево true Включить флаг --remove-orphans, когда запускается файл Compose.
docker_deploy_build: булево false Включить флаг --build, когда какие-либо файлы в docker_deploy_source: или docker_deploy_files: были изменены.
docker_deploy_recreate: булево false Включить флаг --force-recreate, когда какие-либо файлы в docker_deploy_source: или docker_deploy_files: были изменены.
docker_deploy_compose_plugin: булево true Укажите, нужно ли использовать команду docker compose или docker-compose, true для docker compose, false для docker-compose.
docker_deploy_prune: список ["image"] Какие команды очистки должны быть выполнены после изменения конфигурации Compose. Значение может быть комбинацией следующих опций: "builder", "container", "image", "network", "system", "volume".
docker_deploy_state: строка "present" Когда "present", docker_deploy_source: будет синхронизирован с docker_deploy_destination:, и docker_deploy_compose_file: будет запущен. Когда "absent", docker_deploy_compose_file: в docker_deploy_destination: будет остановлен.
docker_deploy_rsync_opts: список ['--exclude="*.example"'] Укажите дополнительные опции rsync в виде массива. Все dest, указанные в docker_deploy_files:, автоматически будут исключены из rsync.
docker_deploy_show_warnings: булево true Показывать предупреждения Docker Compose.
docker_deploy_absent_volume: булево false Применяется только когда docker_deploy_state: равно "absent". Включает флаг --volumes, когда файл Compose останавливается, это удалит все тома, указанные в файле Compose.
docker_deploy_absent_remove: булево false Применяется только когда docker_deploy_state: равно "absent". Если true, docker_deploy_destination: будет удален.

Docker_deploy_files

Имя переменной Тип Значение по умолчанию Описание
content: строка "" Когда используется вместо src, устанавливает содержимое файла непосредственно в указанное значение. Работает только когда dest является файлом. Создает файл, если он не существует.
dest: строка Удаленный путь, относительно docker_deploy_destination:, куда должен быть скопирован файл. Если src является каталогом, это тоже должен быть каталог. Если dest — несуществующий путь и если dest заканчивается на “/” или src является каталогом, dest будет создан. Если dest — относительный путь, начальный каталог определяется удаленным хостом. Если src и dest — файлы, родительский каталог dest не создается, и задача завершится с ошибкой, если он не существует. Все dest автоматически будут исключены из rsync.
group: строка "root" Имя группы, которой должен принадлежать объект файловой системы, как это было бы передано в chown.
mode: строка Права доступа к файлу или каталогу назначения. Документация Ansible для дальнейших деталей
owner: строка "root" Имя пользователя, который должен владеть объектом файловой системы, как это было передано в chown. Если указано числовое имя пользователя, оно будет считаться идентификатором пользователя, а не именем пользователя. Избегайте числовых имен пользователей, чтобы избежать путаницы.
src: строка Локальный путь к файлу, который необходимо скопировать на удаленный сервер. Это может быть абсолютный или относительный путь. Если путь — каталог, он копируется рекурсивно. В этом случае, если путь заканчивается на “/”, только содержимое этого каталога копируется в назначение. В противном случае, если он не заканчивается на “/”, сам каталог со всем содержимым копируется. Это поведение похоже на инструмент командной строки rsync.
no_log: булево false Если true, содержимое не может быть записано в журнал.

Когда content: и src: оба не указаны, в назначении создается пустой файл.

Примеры Плейбуков

Присутствует

- hosts: all
  roles:
    - role: tinyblargon.docker_deploy
      vars:
        docker_deploy_source: "docker-deploy"
        docker_deploy_destination: "/opt/docker-deploy"
        docker_deploy_compose_file: "docker-compose.yml"
        docker_deploy_files:
          - dest: ".env"
            src: ".env"
          - dest: ".secrets/password.txt"
            content: "{{ lookup('file', 'password.txt') }}"
            owner: "root"
            group: "root"
            mode: "0600"
            no_log: true
        docker_deploy_compatibility: true
        docker_deploy_remove_orphans: true
        docker_deploy_recreate: true
        docker_deploy_compose_plugin: false
        docker_deploy_prune: ["system"]
        docker_deploy_state: "present"

Отсутствует

- hosts: all
  roles:
    - role: tinyblargon.docker_deploy
      vars:
        docker_deploy_destination: "/opt/docker-deploy"
        docker_deploy_compose_file: "docker-compose.yml"
        docker_deploy_compose_plugin: false
        docker_deploy_prune: ["system", "volume"]
        docker_deploy_state: "absent"
        docker_deploy_absent_volume: true
        docker_deploy_absent_remove: true

Лицензия

MIT

О проекте

Ansible role to deploy a docker compose stack (file).

Установить
ansible-galaxy install Tinyblargon/ansible-role-docker-deploy
Лицензия
mit
Загрузки
613
Владелец
If the DevOps tooling doesn't exist, I'll write it myself.