From e08ec6bf90b7d7c17fda9b8e38cbdaf696c85b5a Mon Sep 17 00:00:00 2001 From: Rodolfo Berrios <20590102+rodber@users.noreply.github.com> Date: Fri, 16 Feb 2024 16:13:06 -0300 Subject: [PATCH] improve sh --- Makefile | 10 ++-------- README.md | 14 -------------- docs/CLOUDFLARE.md | 4 ---- docs/DOCKER-COMPOSE.md | 10 ---------- scripts/system/cloudflare--create.sh | 14 +++++++++++--- scripts/system/cloudflare--delete.sh | 3 ++- scripts/system/cloudflare.sh | 3 ++- scripts/system/cron.sh | 3 ++- scripts/system/deploy.sh | 27 +++++++++++++++------------ scripts/system/namespace.sh | 5 +++-- scripts/system/update.sh | 1 - 11 files changed, 37 insertions(+), 57 deletions(-) diff --git a/Makefile b/Makefile index 8ec3367..0f99854 100644 --- a/Makefile +++ b/Makefile @@ -158,7 +158,7 @@ cloudflare: @./scripts/system/cloudflare.sh cloudflare--create: - @./scripts/system/cloudflare--create.sh | (printf "CLOUDFLARE_IDENTIFIER=" && cat) >> ${NAMESPACE_FILE} + @NAMESPACE_FILE=${NAMESPACE_FILE} ./scripts/system/cloudflare--create.sh cloudflare--delete: @./scripts/system/cloudflare--delete.sh @@ -215,7 +215,7 @@ down--volumes: feedback feedback--compose spawn: feedback feedback--compose feedback--url cloudflare--create up-d .PHONY: deploy -deploy: feedback feedback--compose feedback--url +deploy: @./scripts/system/deploy.sh update: feedback feedback--compose feedback--url @@ -225,12 +225,6 @@ destroy: feedback feedback--compose cloudflare--delete ${DOCKER_COMPOSE} down --volumes @rm namespace/${NAMESPACE} -# Provisioning - -provision: feedback--short - make namespace HOSTNAME="${NAMESPACE}.${DOMAIN}" - make spawn NAMESPACE=${NAMESPACE} - install: feedback--short docker exec -it --user ${DOCKER_USER} \ ${CONTAINER_BASENAME}_${SERVICE} \ diff --git a/README.md b/README.md index de74fdc..4b79c1e 100644 --- a/README.md +++ b/README.md @@ -96,20 +96,6 @@ make image make namespace NAMESPACE=yourproject HOSTNAME=yourdomain.tld ``` -## Spawn Chevereto instance - -* Run the Chevereto container using [spawn](docs/DOCKER-COMPOSE.md#spawn): - -```sh -make spawn NAMESPACE=yourproject -``` - -* 💡 When using free edition pass `EDITION=free`: - -```sh -make spawn NAMESPACE=yourproject EDITION=free -``` - ## Documentation * [SETUP](./docs/SETUP.md) diff --git a/docs/CLOUDFLARE.md b/docs/CLOUDFLARE.md index 202cc08..591176e 100644 --- a/docs/CLOUDFLARE.md +++ b/docs/CLOUDFLARE.md @@ -53,10 +53,6 @@ The A record used to point CNAMEs generated by this project. **Note:** Following commands must run only after creating the [NAMESPACE](NAMESPACE.md). -### Spawn instance - -Refer to [make spawn](DOCKER-COMPOSE.md#spawn). - ### Destroy instance Refer to [make destroy](DOCKER-COMPOSE.md#destroy). diff --git a/docs/DOCKER-COMPOSE.md b/docs/DOCKER-COMPOSE.md index 8366f44..02e0d91 100644 --- a/docs/DOCKER-COMPOSE.md +++ b/docs/DOCKER-COMPOSE.md @@ -97,16 +97,6 @@ make down--volumes ## Combined commands -### Spawn - -💡 Use it right after creating the NAMESPACE. - -This will run [cloudflare--create](CLOUDFLARE.md#create-cname-record) and [up-d](DOCKER-COMPOSE.md#up-daemon). - -```sh -make spawn NAMESPACE=yourproject -``` - ### Destroy 💡 Use it when needing to complety destroy an instance. diff --git a/scripts/system/cloudflare--create.sh b/scripts/system/cloudflare--create.sh index d6976e8..1a7d2eb 100755 --- a/scripts/system/cloudflare--create.sh +++ b/scripts/system/cloudflare--create.sh @@ -1,5 +1,7 @@ -#!/bin/bash -curl --request POST \ +#!/usr/bin/env bash +set -e +echo "* Creating ${HOSTNAME} CNAME record at CloudFlare" +CLOUDFLARE_IDENTIFIER=$(curl --request POST \ --url https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${CLOUDFLARE_TOKEN}" \ @@ -9,4 +11,10 @@ curl --request POST \ "type": "CNAME", "proxied": true, "ttl": 3600 - }' | jq -r '.result.id' + }' | jq -r '.result.id') +if [ "${CLOUDFLARE_IDENTIFIER}" == null ]; then + echo "CloudFlare integration failure" + exit 1 +fi +echo "CLOUDFLARE_IDENTIFIER=${CLOUDFLARE_IDENTIFIER}" >>${NAMESPACE_FILE} +echo "[OK] Hostname created @ ${CLOUDFLARE_IDENTIFIER}" diff --git a/scripts/system/cloudflare--delete.sh b/scripts/system/cloudflare--delete.sh index c7684a9..0d8e3d5 100755 --- a/scripts/system/cloudflare--delete.sh +++ b/scripts/system/cloudflare--delete.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/usr/bin/env bash +set -e PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" curl --request DELETE \ --url https://api.cloudflare.com/client/v4/zones/${CLOUDFLARE_ZONE_ID}/dns_records/${CLOUDFLARE_IDENTIFIER} \ diff --git a/scripts/system/cloudflare.sh b/scripts/system/cloudflare.sh index 73769f6..cd8b2de 100755 --- a/scripts/system/cloudflare.sh +++ b/scripts/system/cloudflare.sh @@ -1,4 +1,5 @@ -#!/bin/bash +#!/usr/bin/env bash +set -e PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" CLOUDFLARE_FILE_PATH=${PROJECT_DIR}/../nginx/cloudflare.conf cat >${CLOUDFLARE_FILE_PATH} </dev/null && pwd)" CRON_FILE=/etc/cron.d/chevereto +echo "* Creating ${CRON_FILE}" cat >${CRON_FILE} </dev/null 2>&1 45 2 * * * ${USER} ${PROJECT_DIR}/cloudflare.sh >/dev/null 2>&1 EOM -echo ${CRON_FILE} +echo "[OK] Cron file created @ ${CRON_FILE}" diff --git a/scripts/system/deploy.sh b/scripts/system/deploy.sh index e6764a5..487841c 100755 --- a/scripts/system/deploy.sh +++ b/scripts/system/deploy.sh @@ -1,23 +1,26 @@ #!/usr/bin/env bash - set -e - NAMESPACE="${NAMESPACE}" ADMIN_USER="${ADMIN_USER:-admin}" ADMIN_EMAIL="${ADMIN_EMAIL}" ADMIN_PASSWORD="$(openssl rand -base64 8)" - -NAMESPACE=${NAMESPACE} make --no-print-directory provision && - NAMESPACE=${NAMESPACE} \ - ADMIN_PASSWORD=${ADMIN_PASSWORD} \ - ADMIN_EMAIL=${ADMIN_EMAIL} \ - ADMIN_USER=${ADMIN_USER} make --no-print-directory install - +if [ -z "${CLOUDFLARE_A_NAME}" ]; then + HOSTNAME="${DOMAIN}" + echo "* CLOUDFLARE_A_NAME is not set. Skipping DNS creation." +else + HOSTNAME="${NAMESPACE}.${DOMAIN}" +fi +echo "* Using hostname ${HOSTNAME}" +make --no-print-directory feedback feedback--compose feedback--url NAMESPACE=${NAMESPACE} +make --no-print-directory namespace NAMESPACE=${NAMESPACE} HOSTNAME="${HOSTNAME}" +if [ -n "${CLOUDFLARE_A_NAME}" ]; then + make --no-print-directory cloudflare--create NAMESPACE=${NAMESPACE} +fi +make --no-print-directory up-d NAMESPACE=${NAMESPACE} +make --no-print-directory install NAMESPACE=${NAMESPACE} ADMIN_USER=${ADMIN_USER} ADMIN_EMAIL=${ADMIN_EMAIL} ADMIN_PASSWORD=${ADMIN_PASSWORD} echo "" -echo "🚀 Deployment complete!" - +echo "[OK] Deployment complete!" NAMESPACE=${NAMESPACE} make --no-print-directory feedback--url - echo "Login details" echo "--" echo "Email: ${ADMIN_EMAIL}" diff --git a/scripts/system/namespace.sh b/scripts/system/namespace.sh index 61b2c7c..e08f2a1 100755 --- a/scripts/system/namespace.sh +++ b/scripts/system/namespace.sh @@ -4,13 +4,14 @@ if [ -f "${NAMESPACE_FILE}" ]; then echo "[!] File ${NAMESPACE_FILE} already exists" exit 1 fi +echo "* Creating ${NAMESPACE_FILE}" if [ "${ENCRYPTION_KEY}" == "" ]; then ENCRYPTION_KEY=$(openssl rand -base64 32) - echo '🔑 Using auto encryption key' + echo '* 🔑 Using auto encryption key' fi mkdir -p $(dirname ${NAMESPACE_FILE}) cat >${NAMESPACE_FILE} <