github.com/codefresh-io/kcfi@v0.0.0-20230301195427-c1578715cc46/charts/external-nodes/files/scripts/register-node.sh (about) 1 #!/usr/bin/env bash 2 # 3 4 usage() { 5 echo "Register docker-node in consul 6 $0 <node-addres> [port] 7 " 8 } 9 10 print_envs() { 11 for ii in $@ 12 do 13 echo "${ii}=${!ii}" 14 done 15 } 16 17 set -e 18 NODE_ADDRESS=${1:-$NODE_ADDRESS} 19 if [[ -z "${NODE_ADDRESS}" ]]; then 20 echo "Error: no node address provided" 21 usage 22 exit 1 23 fi 24 25 NODE_PORT=${2:-${NODE_PORT:-2376}} 26 NODE_NAME=${NODE_NAME:-${NODE_ADDRESS}} 27 CONSUL=${CONSUL:-"http://cf-consul:8500"} 28 NODE_CLUSTER=${NODE_CLUSTER:-"codefresh"} 29 NODE_ROLE=${NODE_ROLE:-builder} 30 31 print_envs NODE_ADDRESS NODE_PORT NODE_NAME CONSUL NODE_CLUSTER NODE_ROLE DRY_RUN 32 33 PROVIDER=' 34 { 35 "name": "remote", 36 "type": "customer" 37 }' 38 SYSTEM_DATA='{"os_name": "linux"}' 39 NODE_SERVICE_DEF=' 40 { 41 "Node": "'${NODE_NAME}'", 42 "Address": "'${NODE_ADDRESS}'", 43 "Service": { 44 "Service": "docker-node", 45 "Tags": [ 46 "dind", 47 "noagent", 48 "account_codefresh", 49 "type_builder" 50 ], 51 "Address": "'${NODE_ADDRESS}'", 52 "Port": '${NODE_PORT}' 53 }, 54 "Check": { 55 "Node": "", 56 "CheckID": "service:docker-node", 57 "Name": "Remote Node Check", 58 "Notes": "Check builder is up and running", 59 "Output": "Builder alive and reachable", 60 "Status": "passing", 61 "ServiceID": "docker-node" 62 } 63 }' 64 echo "Registering node $NODE_NAME in consul. Configuration: ${NODE_SERVICE}" 65 66 if [[ -n ${DRY_RUN} ]]; then 67 print_envs NODE_SERVICE_DEF 68 echo "DRY RUN MODE - only printing envs and exit" 69 exit 70 fi 71 curl -X PUT -d "${NODE_SERVICE_DEF}" ${CONSUL}/v1/catalog/register 72 curl -X PUT -d "${NODE_ADDRESS}" ${CONSUL}/v1/kv/services/docker-node/${NODE_NAME}/publicAddress 73 curl -X PUT -d "${NODE_CLUSTER}" ${CONSUL}/v1/kv/services/docker-node/${NODE_NAME}/account 74 curl -X PUT -d "${NODE_ROLE}" ${CONSUL}/v1/kv/services/docker-node/${NODE_NAME}/role 75 curl -X PUT -d "${PROVIDER}" ${CONSUL}/v1/kv/services/docker-node/${NODE_NAME}/systemData 76 curl -X PUT -d "${SYSTEM_DATA}" ${CONSUL}/v1/kv/services/docker-node/${NODE_NAME}/provider