跳转到主要内容

使用Ansible CLI的淫秽docker-compose部署

项目描述

部署docker-compose.yml

首先,配置dsn变量以包含用户/主机和存储compose文件的路径。如果没有设置,则使用当前工作目录中的localhost

export dsn=user@host:22/absolute/target/path

然后,运行ansible-compose apply -f,就像使用k8s一样

ansible-compose apply -f ./docker-compose-example.yml -f ./examples/nginx.yml

或者,从URL部署,就像kubectl apply一样让您做

ansible-compose apply -f https://raw.git.../docker-compose.yml

在目标compose上运行命令

提供ssh配置和目标目录作为第一个参数,然后是docker-compose命令

export dsn=user@host:22/absolute/target/path
ansible-compose stop
ansible-compose start
ansible-compose logs
ansible-compose help

CLI上docker-compose.yml的转换

转换应用于docker-compose.yml,就像我们正在使用环境变量渲染模板一样。

假设你从一个这样的docker-compose.yml开始

version: '3.4'
services:
  web:
    build: .
    environment:
      base: here
      wrong: todrop

首先,所有构建行将被删除。您必须使用环境变量指定镜像,例如。

web_image=abc  # sets services[web][image]=abc

如果您想删除环境行,请使用drop前缀

drop_web_environment=  # dels services[web][environment]

您也可以在YAML树中更深层地覆盖

web_environment_SECRET_TOKEN=yoursecret

甚至对于drop

drop_web_environment_VERSION=

甚至删除整个服务

drop_web=

但是,您可以为所有变量要求特定的前缀,例如

dev_drop_mail=              # to prevent the mail service on dev branches
ansible_compose_prefix=dev  # to enable only variables starting with dev_

不要忘记,ansible-compose还会将多余的参数传递给下方的ansible-playbook调用。

自动创建卷目录

它将尝试自动为您创建卷绑定目录。要设置uid和/或guid,请将它们作为环境变量设置,无论是 compose.yml

environment:
  uid: 1001
  gid: 100

或使用环境变量

web_environment_uid=1001

安装

本地

pip install --user ansible-compose
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

CI中当前image yourlabs/ansible-compose的配置为

  • ANSIBLE_HOST_KEY_CHECKING=false

  • SSH_PRIVATE_KEY=使用ssh-keygen -t ed25519和默认选项生成的无密码私钥

  • SSH_INSECURE=true 今日不检查任何主机密钥!

示例gitlab ci作业

deploy:
   stage: deploy
   image: yourlabs/ansible-compose
   variables:
   - dsn=deploy@example.com/home/staging
   script:
   - ansible-compose apply -f ./docker-compose.yml

项目详情


下载文件

下载适用于您平台的项目文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

ansible-compose-1.0.8.post5.tar.gz (7.7 kB 查看散列值)

上传时间

由以下支持