Skip to main content

The obscene docker-compose deploy with ansible cli

Project description

Deploying a docker-compose.yml

Provide ssh configuration and target dir as first argument, then the path to a docker-compose.yml file:

ansible-compose user@host:22/absolute/target/path ./docker-compose-example.yml

Or, deploy from a url, just like kubectl apply would let you:

ansible-compose user@host:22/absolute/target/path https://raw.git.../docker-compose.yml

Automatic creation of volume dirs

It will try to automatically create the volume bind dirs for you. To set the uid and/or guid, set them as env vars, either in the compose.yml:

environment:
  uid: 1001
  gid: 100

Or with an env var:

web_environment_uid=1001

Transforms for docker-compose.yml on the CLI

Transforms apply on the docker-compose.yml as if it was a template we are going to render using environment variables.

Suppose that you start with such a docker-compose.yml:

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

First, all build lines will be dropped. You will have to specify images with env vars ie.:

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

If you wanted to drop the environment line use the drop prefix:

drop_web_environment=  # dels services[web][environment]

You can also override deeper in the YAML tree:

web_environment_SECRET_TOKEN=yoursecret

Even for drop:

drop_web_environment_VERSION=

Or even drop a whole service:

drop_web=

You can however require all variables to have a particular prefix, ie:

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

Don’t forget ansible-compose will also forward extraneous arguments to the ansible-playbook call beneath.

Running commands on the compose of a target

Provide ssh configuration and target dir as first argument, then the docker-compose command:

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

Installation

Local:

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

The current configuration in CI for image yourlabs/ansible-compose is:

  • ANSIBLE_HOST_KEY_CHECKING=false

  • SSH_PRIVATE_KEY=our passwordless private key generated with ssh-keygen -t ed25519 and default options

  • SSH_INSECURE=true not checking any host key today !

Example gitlab ci job

deploy:
   stage: deploy
   image: yourlabs/ansible-compose
   script:
   - ansible-compose
         deploy@example.com/home/staging
         ./docker-compose.yml
         # composed to rely on $CI_COMMIT_SHA

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ansible-compose-1.0.6.tar.gz (5.3 kB view details)

Uploaded Source

File details

Details for the file ansible-compose-1.0.6.tar.gz.

File metadata

  • Download URL: ansible-compose-1.0.6.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.6

File hashes

Hashes for ansible-compose-1.0.6.tar.gz
Algorithm Hash digest
SHA256 63405cc0df7148a921f7baaf50a5427dc4f70d7197a24012dd772d3c87f51b68
MD5 3ff82ea17da81380c57177624bb289d7
BLAKE2b-256 1f59ba595ebd34e3bbd150bbce799c008e34faf087abf8bdb9d41ddc6ebadd41

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page