Search code examples
ibm-cloudbiginsights

how can I programmatically get the hostname for the BIGSQL_HEAD?


I need to programmatically retrieve the BIGSQL_HEAD hostname of my BigInsihgts on Cloud enterprise cluster from a script so I can automate connecting to that host.

The BIGSQL_HEAD hostname is in Ambari - how can I retrieve this information using 'standard' unix tools?


Solution

  • BI_HOST=your_biginsights_mastermanager_hostname
    BI_USER=your_biginsights_username
    BI_PASS=your_biginsights_password
    
    BASE_URL=https://${BI_HOST}:9443
    
    CLUSTER_NAME=$(curl -k -s -u ${BI_USER}:${BI_PASS} -H 'X-Requested-By:ambari' \
      ${BASE_URL}/api/v1/clusters |  python -c \
      'import json,sys;print json.load(sys.stdin)["items"][0]["Clusters"]["cluster_name"]')
    
    BIGSQL_HOST=$(curl -k -s -u ${BI_USER}:${BI_PASS} -H 'X-Requested-By:ambari' \
       ${BASE_URL}/api/v1/clusters/${CLUSTER_NAME}/services/BIGSQL/components/BIGSQL_HEAD | \
       python -c \
       'import json,sys;print json.load(sys.stdin)["host_components"][0]["HostRoles"]["host_name"]')
    
    echo ${BIGSQL_HOST}
    

    These commands can be run on the BigInsight cluster or your client machine.

    Thanks to Pierre Regazzoni for the ambari code.