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