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

关于项目

Role for docker-compose management via ansible

安装
ansible-galaxy install jindrichskupa.ansible_compose
许可证
mit
下载
5.9k
拥有者