tinyblargon.docker_deploy

Ansible 角色:docker 部署

Ansible 角色用于部署 docker compose 堆栈(文件)。

需求

本地系统

  • rsync

部署系统

  • docker-ce

  • docker-ce-cli

  • containerd.io

  • docker-compose-plugindocker-compose

角色变量

变量名称 类型 默认值 描述
docker_deploy_source: 字符串 "docker-deploy" 包含 docker 部署和 compose 文件的本地目录。该目录相对于主 playbook 目录。
docker_deploy_destination: 字符串 "/opt/docker-deploy" 部署应克隆到的目标文件夹。
docker_deploy_compose_file: 字符串 "docker-compose.yml" 要启动的 docker compose 文件的名称。
docker_deploy_files: 列表 [] 应复制到 docker_deploy_destination: 的文件列表,关于 map 的更多信息见Docker_deploy_files章节。
docker_deploy_compatibility: 布尔值 true 启用启动 compose 文件时的 --compatibility 标志。
docker_deploy_remove_orphans: 布尔值 true 启用启动 compose 文件时的 --remove-orphans 标志。
docker_deploy_build: 布尔值 false docker_deploy_source:docker_deploy_files: 中的文件发生更改时启用 --build 标志。
docker_deploy_recreate: 布尔值 false docker_deploy_source:docker_deploy_files: 中的文件发生更改时启用 --force-recreate 标志。
docker_deploy_compose_plugin: 布尔值 true 指定使用 docker compose 还是 docker-compose 命令,truedocker composefalsedocker-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_destination: 中的 docker_deploy_compose_file:
docker_deploy_rsync_opts: 列表 ['--exclude="*.example"'] 通过传递数组来指定额外的 rsync 选项。所有在 docker_deploy_files: 中指定的 dest 将自动从 rsync 中排除。
docker_deploy_show_warnings: 布尔值 true 显示 docker compose 警告。
docker_deploy_absent_volume: 布尔值 false 仅在 docker_deploy_state:"absent" 时适用。启用在关闭 compose 文件时的 --volumes 标志,这将删除在 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 为相对路径,则起始目录由远程主机决定。如果 srcdest 为文件,且 dest 的父目录不存在,则任务将失败。所有 dest 将自动从 rsync 中排除。
group: 字符串 "root" 应拥有文件系统对象的组名称,如同用于 chown。
mode: 字符串 目标文件或目录的权限。Ansible 文档详细信息
owner: 字符串 "root" 应拥有文件系统对象的用户名,如同用于 chown。指定数值用户名将被视为用户 ID,而非用户名。请避免使用数值用户名以避免混淆。
src: 字符串 本地路径,需复制到远程服务器的文件。这可以是绝对路径或相对路径。如果路径是目录,则会递归复制。在此情况下,如果路径以“/”结尾,则仅复制该目录中的内容到目标。否则,如果不以“/”结尾,则会复制目录本身及所有内容。此行为类似于 rsync 命令行工具。
no_log: 布尔值 false 如果为 true,则内容将不被记录。

content:src: 均未定义时,将在目标创建一个空文件。

示例 Playbook

存在

- 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.docker_deploy
许可证
mit
下载
1.1k
拥有者
If the DevOps tooling doesn't exist, I'll write it myself.