- #!/bin/bash
 - 
 - # unset http proxy which maybe set by docker daemon
 - export http_proxy=""; export https_proxy=""; export no_proxy=""; export HTTP_PROXY=""; export HTTPS_PROXY=""; export NO_PROXY=""
 - 
 - echo "Elasticsearch built-in user: elastic:${ELASTIC_PASSWORD}"
 - 
 - # Wait Elasticsearch be healthy
 - while true; do
 -     response=$(curl -s -v -w "\n%{http_code}" -u "elastic:${ELASTIC_PASSWORD}" "http://es01:9200")
 -     exit_code=$?
 -     status=$(echo "$response" | tail -n1)
 -     if [ $exit_code -eq 0 ] && [ "$status" = "200" ]; then
 -         echo "Elasticsearch is healthy"
 -         break
 -     else
 -         echo "Elasticsearch is unhealthy: $exit_code $status"
 -         echo "$response"
 -         sleep 5
 -     fi
 - done
 - 
 - # Create new role with all privileges to all indices
 - # https://www.elastic.co/guide/en/elasticsearch/reference/current/security-privileges.html#privileges-list-indices
 - echo "Going to create Elasticsearch role own_indices with all privileges to all indices"
 - while true; do
 -     response=$(curl -s -v -w "\n%{http_code}" -u "elastic:${ELASTIC_PASSWORD}" -X POST http://es01:9200/_security/role/own_indices -H 'Content-Type: application/json' -d '{"indices": [{"names": ["*"], "privileges": ["all"]}]}')
 -     exit_code=$?
 -     status=$(echo "$response" | tail -n1)
 -     if [ $exit_code -eq 0 ] && [ "$status" = "200" ]; then
 -         echo "Elasticsearch role own_indices created"
 -         break
 -     else
 -         echo "Elasticsearch role own_indices failure: $exit_code $status"
 -         echo "$response"
 -         sleep 5
 -     fi
 - done
 - 
 - echo "Elasticsearch role own_indices:"
 - curl -u "elastic:${ELASTIC_PASSWORD}" -X GET "http://es01:9200/_security/role/own_indices"
 - echo ""
 - 
 - PAYLOAD="{\"password\": \"${KIBANA_PASSWORD}\", \"roles\": [\"kibana_admin\", \"kibana_system\", \"own_indices\"], \"full_name\": \"${KIBANA_USER}\", \"email\": \"${KIBANA_USER}@example.com\"}"
 - 
 - echo "Going to create Elasticsearch user ${KIBANA_USER}: ${PAYLOAD}"
 - 
 - # Create new user
 - while true; do
 -     response=$(curl -s -v -w "\n%{http_code}" -u "elastic:${ELASTIC_PASSWORD}" -X POST http://es01:9200/_security/user/${KIBANA_USER} -H "Content-Type: application/json" -d "${PAYLOAD}")
 -     exit_code=$?
 -     status=$(echo "$response" | tail -n1)
 -     if [ $exit_code -eq 0 ] && [ "$status" = "200" ]; then
 -         echo "Elasticsearch user ${KIBANA_USER} created"
 -         break
 -     else
 -         echo "Elasticsearch user ${KIBANA_USER} failure: $exit_code $status"
 -         echo "$response"
 -         sleep 5
 -     fi
 - done
 - 
 - echo "Elasticsearch user ${KIBANA_USER}:"
 - curl -u "elastic:${ELASTIC_PASSWORD}" -X GET "http://es01:9200/_security/user/${KIBANA_USER}"
 - echo ""
 - 
 - exit 0
 
 
  |