tinyblargon.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 文件的本地目录。该目录相对于主 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 命令,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_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 为相对路径,则起始目录由远程主机决定。如果 src 和 dest 为文件,且 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