github.com/SUSE/skuba@v1.4.17/ci/infra/openstack/generate-cpi-conf.sh (about)

     1  #!/bin/bash
     2  #shellcheck disable=SC2145,SC2016
     3  log()   { (>&1 echo -e "$@") ; }
     4  cmd()   { log "[ CMD ] $@" ; }
     5  info()  { log "[ INFO ] $@" ; }
     6  error() { (>&2 echo -e "[ ERROR ] $@") ;}
     7  
     8  if [ -z "${OS_AUTH_URL}" ] || [ -z "${OS_USERNAME}" ] || \
     9     [ -z "${OS_PASSWORD}" ] || [ -z "${OS_PROJECT_ID}" ] || \
    10     [ -z "${OS_PRIVATE_SUBNET_ID}" ] || [ -z "${OS_PUBLIC_NET_ID}" ]; then
    11      error '$OS_AUTH_URL $OS_USERNAME $OS_PASSWORD $OS_PROJECT_ID'
    12      error '$OS_PRIVATE_SUBNET_ID $OS_PUBLIC_NET_ID must be specified'
    13      error 'Please download and source your OpenStack RC file'
    14      exit 1
    15  fi
    16  
    17  OPENSTACK_CONF="openstack.conf"
    18  
    19  umask 077
    20  
    21  cat << EOF > "${OPENSTACK_CONF}"
    22  [Global]
    23  auth-url="${OS_AUTH_URL}"
    24  username="${OS_USERNAME}"
    25  password="${OS_PASSWORD}"
    26  tenant-id="${OS_PROJECT_ID}"
    27  tenant-name="${OS_PROJECT_NAME}"
    28  domain-id="${OS_USER_DOMAIN_ID}"
    29  domain-name="${OS_USER_DOMAIN_NAME}"
    30  region="${OS_REGION_NAME}"
    31  ca-file="${CA_FILE}"
    32  [LoadBalancer]
    33  lb-version=v2
    34  subnet-id="${OS_PRIVATE_SUBNET_ID}"
    35  floating-network-id="${OS_PUBLIC_NET_ID}"
    36  create-monitor=yes
    37  monitor-delay=1m
    38  monitor-timeout=30s
    39  monitor-max-retries=3
    40  [BlockStorage]
    41  trust-device-path=false
    42  bs-version=v2
    43  ignore-volume-az=true
    44  EOF
    45  
    46  umask 022
    47  
    48  [ -z "$OS_PROJECT_NAME" ] && sed -i '/^tenant-name=/d' "${OPENSTACK_CONF}"
    49  [ -z "$OS_USER_DOMAIN_ID" ] &&  sed -i '/^domain-id=/d' "${OPENSTACK_CONF}"
    50  [ -z "$OS_USER_DOMAIN_NAME" ] && sed -i '/^domain-name=/d' "${OPENSTACK_CONF}"
    51  [ -z "$CA_FILE" ] && sed -i '/^ca-file=/d' "${OPENSTACK_CONF}"
    52  
    53  if [ -z "${TR_STACK}" ] || [ -z "${TR_LB_IP}" ] || \
    54     [ -z "$TR_MASTER_IPS" ] || [ -z "$TR_WORKER_IPS" ] || \
    55     [ -z "${TR_USERNAME}" ]; then
    56      error '$TR_STACK $TR_LB_IP $TR_MASTER_IPS $TR_WORKER_IPS must be specified'
    57      exit 1
    58  fi
    59  
    60  info "### Run following commands to bootstrap skuba cluster:\\n"
    61  cmd " skuba cluster init --control-plane ${TR_LB_IP} --cloud-provider openstack ${TR_STACK}-cluster"
    62  cmd " mv openstack.conf ${TR_STACK}-cluster/cloud/openstack/openstack.conf"
    63  cmd " cd ${TR_STACK}-cluster"
    64  
    65  i=0
    66  for MASTER in $TR_MASTER_IPS; do
    67      if [ $i -eq "0" ]; then
    68          cmd " skuba node bootstrap --target ${MASTER} --sudo --user ${TR_USERNAME} caasp-master-${TR_STACK}-0"
    69      else
    70          cmd " skuba node join --role master --target ${MASTER} --sudo --user ${TR_USERNAME} caasp-master-${TR_STACK}-${i}"
    71      fi
    72      ((++i))
    73  done
    74  
    75  i=0
    76  for WORKER in $TR_WORKER_IPS; do
    77      cmd " skuba node join --role worker --target ${WORKER} --sudo --user ${TR_USERNAME} caasp-worker-${TR_STACK}-${i}"
    78      ((++i))
    79  done