jindrichskupa.ansible_compose
Docker Compose Ansible 角色
创建 docker-compose.yml
、(配置) 文件和目录。创建用于 Docker Compose 的 systemd 单元。
要求
- 基于 Debian 的发行版
- 已安装 Docker,你可以使用 这个 角色
示例剧本
---
- name: 管理 Docker 应用服务器
hosts: docker.example.com
remote_user: ansible
become: true
vars:
ansible_python_interpreter: /usr/bin/python3
roles:
- role: jindrichskupa.ansible_docker
- role: jindrichskupa.ansible_compose
vars:
# 项目/目录/单元名称
docker_app_name: promtail
# Docker Compose 基础目录,默认: `/srv/docker`
docker_compose_base: /srv/docker
# Docker Compose 版本,默认: 1.29.2
docker_compose_version: 1.29.2
# `docker-compose.yml` 模板
docker_compose_template: compose/promtail/docker-compose.yml
# 创建 systemd 单元,默认: false
docker_systemd: true
# 自定义/生成的文件,比如配置文件
docker_compose_files:
- template: compose/promtail/config.yaml
destination: promtail/config.yaml
# 在项目目录中创建空目录
docker_compose_dirs:
- promtail
# 模板中使用的自定义变量:
docker_image_backend: grafana/promtail:master
# 实际示例
- role: jindrichskupa.ansible_compose
vars:
docker_app_name: app1
docker_compose_template: compose/app1/docker-compose.yml
docker_compose_files:
- template: compose/app1/Dockerfile
destination: app1/Dockerfile
- template: compose/app1/entrypoint.sh
destination: app1/entrypoint.sh
docker_compose_dirs:
- data
- config
docker_compose_database_user: app1_user
docker_compose_database_pass: !vault |
$ANSIBLE_VAULT;1.1;AES256
35626337626164313637383463396533366465626466393639316565393231393637
docker_compose_database_host: postgres
模板示例
version: "3"
services:
promtail:
image: {{ docker_image_backend }}
volumes:
- $PWD/promtail:/etc/promtail
- /var/log:/var/log
- /var/lib/docker/containers:/var/lib/docker/containers
command: "-config.file=/etc/promtail/config.yaml"
{% raw %}
logging:
options:
tag: "{{.ImageName}}|{{.Name}}|{{.ImageFullID}}|{{.FullID}}"
{% endraw %}
restart: always
许可证
MIT
作者信息
Jindrich Skupa