Skip to content

Instantly share code, notes, and snippets.

@dmitry-lyutenko
Created May 31, 2020 19:17
Show Gist options
  • Select an option

  • Save dmitry-lyutenko/ee05fc1f55b86f904cfa9ceb1a9ec04c to your computer and use it in GitHub Desktop.

Select an option

Save dmitry-lyutenko/ee05fc1f55b86f904cfa9ceb1a9ec04c to your computer and use it in GitHub Desktop.

Revisions

  1. dmitry-lyutenko created this gist May 31, 2020.
    56 changes: 56 additions & 0 deletions dinv.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,56 @@
    #!/bin/bash

    ARGS="list,host:"

    ## read cmd params
    opts=$(getopt \
    --longoptions "$(echo $ARGS)" \
    --name "$(basename "$0")" \
    --options "" \
    -- "$@"
    )

    eval set --$opts

    getHostList() {
    hlist=$(gcloud compute instances list \
    --format="table[no-heading](name,INTERNAL_IP,EXTERNAL_IP)" \
    --filter="STATUS=RUNNING" | awk '{print "\""$1"\",\""$2"\",\""$3"\""}')

    hosts="{\n \"hosts\": [\n"

    meta=" \"_meta\" : {\n \"hostvars\": {\n"

    for el in $hlist; do
    host=$(echo $el | cut -d ',' -f1)
    ext_ip=$(echo $el | cut -d ',' -f3)
    int_ip=$(echo $el | cut -d ',' -f2)
    isDB=$(echo $host | grep -q -e "^\"db.*"; echo $?)

    hosts=`echo "$hosts $host,\n"`
    meta=$(echo "$meta $host: {\n \"ansible_host\": $ext_ip")
    if [ $isDB -eq 0 ]; then
    meta=$(echo "$meta,\n \"mongo_bind_ip\": $int_ip\n")
    fi
    meta=$(echo "$meta\n },\n")
    done
    hosts=$(echo "$hosts" | sed 's/,\\n$/\\n ],/')
    meta=$(echo "$meta" | sed 's/,\\n$/\\n }\\n/')
    echo -e "$hosts\n$meta }\n}"
    }

    while [[ $# -gt 0 ]]; do
    case "$1" in
    --list)
    shift 2
    getHostList
    ;;
    --host)
    shift 2
    echo '{"_meta": {"hostvars": {}}}'
    ;;
    *)
    break
    ;;
    esac
    done