The obscene docker-compose deploy with ansible cli
Project description
Deploying a docker-compose.yml
First, configure the dsn variable to have the user/host and path to store the compose files in. If not set, localhost in current working directory will be used:
export dsn=user@host:22/absolute/target/path
Then, run ansible-compose apply -f as you would with k8s:
ansible-compose apply -f ./docker-compose-example.yml -f ./examples/nginx.yml
Or, deploy from a url, just like kubectl apply would let you:
ansible-compose apply -f https://raw.git.../docker-compose.yml
Running commands on the compose of a target
Provide ssh configuration and target dir as first argument, then the docker-compose command:
export dsn=user@host:22/absolute/target/path ansible-compose stop ansible-compose start ansible-compose logs ansible-compose help
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.
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
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
variables:
- dsn=deploy@example.com/home/staging
script:
- ansible-compose apply -f ./docker-compose.yml
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ansible-compose-1.0.8.post5.tar.gz
.
File metadata
- Download URL: ansible-compose-1.0.8.post5.tar.gz
- Upload date:
- Size: 7.7 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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ed91770e5fb1086dd4f46a75973a30cd606ac282f951c3fda781d3b97cfc14d |
|
MD5 | ee1a3042e8ba0420a0e6246b46ad080b |
|
BLAKE2b-256 | cd4624cf26b5d24f7a3ad83d8048bfd43df2059dc8bb50aa12afc89f16e3e45b |