Skip to content

Instantly share code, notes, and snippets.

@hongkongkiwi
Created May 16, 2018 14:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hongkongkiwi/59d620cb11f3f63413418d021ca87ace to your computer and use it in GitHub Desktop.
Save hongkongkiwi/59d620cb11f3f63413418d021ca87ace to your computer and use it in GitHub Desktop.
Sync a Docker-Compose file to a Zookeeper
#!/bin/bash
DOCKER_COMPOSE_FILE="$2"
ACTION="$1"
SERVER=${3:-"localhost:2181"}
USAGE="$0 action 'docker-compose.yml' ['localhost:2181']"
if [[ "$ACTION" == "" ]]; then
echo "$USAGE"
echo "Invalid action."
echo "Must be 'importyml' or 'exportyml'"
exit 1
fi
if [[ "$ACTION" == "importyml" ]]; then
if [[ ! -f "$DOCKER_COMPOSE_FILE" ]]; then
echo "$USAGE"
echo "Invalid docker-compose.yml file"
exit 1
fi
JSON=`yaml2json "$DOCKER_COMPOSE_FILE" | jq -c '' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//'`
if [[ "$JSON" == "" ]]; then
echo "Invalid JSON!"
exit 1
fi
HOSTNAME=${HOSTNAME,,}
DIR_NAME=$(basename $(dirname $(realpath "$DOCKER_COMPOSE_FILE")))
DIR_NAME=${DIR_NAME,,}
KEY_NAME="/docker/$HOSTNAME/$DIR_NAME/docker-compose/json"
zeke -a "$SERVER" -s "$KEY_NAME" "$JSON"
elif [[ "$ACTION" == "exportyml" ]]; then
DOCKER_COMPOSE_FILE_DIR=$(dirname $(realpath "$DOCKER_COMPOSE_FILE"))
if [[ ! -d "$DOCKER_COMPOSE_FILE_DIR" ]]; then
echo "Invalid docker-compose.yml file dir"
exit 1
fi
HOSTNAME=${HOSTNAME,,}
DIR_NAME=$(basename $(dirname $(realpath "$DOCKER_COMPOSE_FILE")))
DIR_NAME=${DIR_NAME,,}
KEY_NAME="/docker/$HOSTNAME/$DIR_NAME/docker-compose/json"
zeke -a "$SERVER" -g "$KEY_NAME" | jq '.' | json2yaml > "$DOCKER_COMPOSE_FILE_DIR/docker-compose.yml"
else
echo "$USAGE"
echo "Unknown action $ACTION"
exit 1
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment