Skip to content

Instantly share code, notes, and snippets.

@berendt
Created September 21, 2023 09:34
Show Gist options
  • Save berendt/b176cdc44f66fb26dd8deaee4b2d90ad to your computer and use it in GitHub Desktop.
Save berendt/b176cdc44f66fb26dd8deaee4b2d90ad to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
CONFIGURATION_DIRECTORY=${CONFIGURATION_DIRECTORY:-/opt/configuration}
ANSIBLE_COLLECTION_SERVICES_VERSION=${ANSIBLE_COLLECTION_SERVICES_VERSION:-main}
ANSIBLE_INVENTORY=${ANSIBLE_INVENTORY:-/opt/configuration/inventory}
ANSIBLE_PLAYBOOKS_MANAGER_VERSION=${ANSIBLE_PLAYBOOKS_MANAGER_VERSION:-main}
ANSIBLE_PRIVATE_KEY=${ANSIBLE_PRIVATE_KEY:-/opt/ansible/secrets/id_rsa.operator}
ANSIBLE_USER=${ANSIBLE_USER:-dragon}
ANSIBLE_VERSION=${ANSIBLE_VERSION:-ansible==8.4.0}
INSTALL_ANSIBLE_ROLES=${INSTALL_ANSIBLE_ROLES:-true}
MANAGER_VERSION=${MANAGER_VERSION:-main}
NETADDR_VERSION=${NETADDR_VERSION:-netaddr==0.9.0}
PLAYBOOK=${PLAYBOOK:-manager}
PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE:-python3}
VENV_PATH=${VENV_PATH:-.venv}
CONTAINER=${CONTAINER:-false}
CONTAINER_IMAGE=${CONTAINER_IMAGE:-osism/seed}
CONTAINER_REGISTRY=${CONTAINER_REGISTRY:-quay.io}
CONTAINER_TAG=${CONTAINER_TAG:-latest}
if [[ $CONTAINER == "true" ]]; then
docker run --rm -v $CONFIGURATION_DIRECTORY:/opt/configuration:ro -it $CONTAINER_REGISTRY/$CONTAINER_IMAGE:$CONTAINER_TAG $PLAYBOOK
exit 0
fi
pushd $CONFIGURATION_DIRECTORY/environments/manager > /dev/null
if [[ ! -e $VENV_PATH ]]; then
if [[ ! -x "$(command -v virtualenv)" ]]; then
sudo apt-get install -y virtualenv
fi
virtualenv -p $PYTHON_EXECUTABLE $VENV_PATH
source $VENV_PATH/bin/activate
pip3 install --no-cache-dir "$ANSIBLE_VERSION" "$NETADDR_VERSION"
else
source $VENV_PATH/bin/activate
fi
if [[ $INSTALL_ANSIBLE_ROLES == "true" ]]; then
ansible-galaxy collection install -f git+https://github.com/osism/ansible-collection-services,$ANSIBLE_COLLECTION_SERVICES_VERSION
ansible-galaxy collection install -f git+https://github.com/osism/ansible-playbooks-manager,$ANSIBLE_PLAYBOOKS_MANAGER_VERSION
fi
if [[ $PLAYBOOK == "netbox" || $PLAYBOOK == "traefik" ]]; then
ansible-playbook \
--private-key $ANSIBLE_PRIVATE_KEY \
-i $ANSIBLE_INVENTORY \
-e @$CONFIGURATION_DIRECTORY/environments/infrastructure/images.yml \
-e @$CONFIGURATION_DIRECTORY/environments/infrastructure/configuration.yml \
-e @$CONFIGURATION_DIRECTORY/environments/infrastructure/secrets.yml \
-e @$CONFIGURATION_DIRECTORY/environments/images.yml \
-e @$CONFIGURATION_DIRECTORY/environments/configuration.yml \
-e @$CONFIGURATION_DIRECTORY/environments/secrets.yml \
-e @images.yml \
-e @configuration.yml \
-e @secrets.yml \
-u $ANSIBLE_USER \
osism.manager.$PLAYBOOK "$@"
else
ansible-playbook \
--private-key $ANSIBLE_PRIVATE_KEY \
-i $ANSIBLE_INVENTORY \
-e @$CONFIGURATION_DIRECTORY/environments/images.yml \
-e @$CONFIGURATION_DIRECTORY/environments/configuration.yml \
-e @$CONFIGURATION_DIRECTORY/environments/secrets.yml \
-e @images.yml \
-e @configuration.yml \
-e @secrets.yml \
-u $ANSIBLE_USER \
osism.manager.$PLAYBOOK "$@"
osism reconciler sync
fi
popd > /dev/null
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment