- #!/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
|