annotate prod/install-docstore-app.sh @ 609:30a35d908d92

DS-56 create docstore local install script
author calmes@ssdt-ohio.org
date Wed, 02 Jul 2025 13:25:13 +0100
parents
children
rev   line source
609
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
1 #!/bin/bash
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
2 #
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
3 # read required env variables
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
4 BASEDIR="$PWD"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
5 source $BASEDIR/.env/ssdt-document-store-shared.properties
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
6 source $BASEDIR/.env/ssdt-document-store.properties
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
7
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
8 # define entityId based environment variables
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
9 ES_SETTING_CLUSTER_NAME=${entityId}-document-store
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
10 ES_SETTING_NODE_NAME=${entityId}-ds-01
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
11 DOCUMENTSTORE_ELASTIC_HOST=${entityId}-document
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
12 ELASTIC_NETWORK=${entityId}-document
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
13
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
14 # create backup directory if it does not exist
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
15 BACKUP_DIR="$BASEDIR/backup"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
16 if [ ! -d "$BACKUP_DIR" ]
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
17 then
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
18 mkdir "$BACKUP_DIR"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
19 fi
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
20
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
21 # create docker network if it does not exist
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
22 if [ -z $(docker network ls --filter name=^${ELASTIC_NETWORK}$ --format="{{ .Name }}") ]
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
23 then
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
24 docker network create "${ELASTIC_NETWORK}";
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
25 fi
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
26
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
27 # docker login
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
28 echo "Attempting to login to $artifactUrl"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
29 docker login $artifactUrl -u $artifactUser -p $artifactPassword
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
30 # docker pull image
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
31 echo "Attempting to pull $artifactUrl/document-store:$DS_VERSION"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
32 docker pull $artifactUrl/document-store:$DS_VERSION
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
33
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
34 # build docker run command based on environment variables provided
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
35 DOCKER_RUN="docker run --name=$ES_SETTING_NODE_NAME --restart=unless-stopped --log-driver local \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
36 --env-file $BASEDIR/.env/ssdt-document-store.properties \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
37 -e ELASTIC_PASSWORD=$ELASTIC_PASSWORD \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
38 --network=$ELASTIC_NETWORK \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
39 --ulimit memlock=-1:-1 \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
40 --ulimit nofile=65535:65535 \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
41 --group-add 0 \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
42 --mount type=bind,source=$BACKUP_DIR,destination=/usr/share/elasticsearch/backup/ \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
43 --mount type=volume,source=$entityId-document-data,destination=/usr/share/elasticsearch/data/ \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
44 --mount type=volume,source=$entityId-document-config,destination=/usr/share/elasticsearch/config/ \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
45 -p $DOCUMENTSTORE_ELASTIC_PORT:9200 \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
46 -p $DOCUMENTSTORE_TRANSPORT_PORT:9300 \
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
47 "
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
48 if [ -d "$BASEDIR/jvm.options.d" ]; then
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
49 DOCKER_RUN="$DOCKER_RUN --mount type=bind,source=$BASEDIR/jvm.options.d,destination=/usr/share/elasticsearch/config/jvm.options.d/ "
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
50 fi
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
51
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
52 #echo "Executing docker run command $DOCKER_RUN"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
53 DOCKER_RUN="$DOCKER_RUN -d docker-images.ssdt-ohio.org/document-store:${DS_VERSION:-latest}"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
54 $DOCKER_RUN
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
55
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
56 #wait for instance to start
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
57 attempt=0
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
58 while [ $attempt -le 15 ]; do
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
59 attempt=$(( attempt + 1 ))
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
60 echo "Waiting for server to be up (attempt: $attempt)..."
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
61 result=$(docker inspect --format='{{.State.Health.Status}}' "$ES_SETTING_NODE_NAME")
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
62 if [ "$result" = "healthy" ] ; then
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
63 echo "Elasticsearch is up, preparing to copy certificates and generated properties"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
64 break
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
65 fi
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
66 sleep 10
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
67 done
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
68
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
69 # copy elasticsearch certificate to basedir for further use if necessary
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
70 docker cp "$ES_SETTING_NODE_NAME":/usr/share/elasticsearch/config/certs/http_ca.crt "$BASEDIR"
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
71
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
72 # copy generated properites i.e. API keys etc to basedir for use in product integration
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
73 attempt=0
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
74 generated_contents=$(docker exec -it "$ES_SETTING_NODE_NAME" sed -rn 's/^DOCUMENTSTORE_ELASTIC_FINGERPRINT=([^\n]+)$/\1/p' /usr/share/elasticsearch/config/ssdt-document-store-generated.properties)
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
75 while [ "$generated_contents" == "" ] && [ $attempt -le 15 ]; do
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
76 attempt=$(( attempt + 1 ))
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
77 echo "Waiting for generated properties to be created (attempt: $attempt)..."
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
78 sleep 10
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
79 generated_contents=$(docker exec -it "$ES_SETTING_NODE_NAME" sed -rn 's/^DOCUMENTSTORE_ELASTIC_FINGERPRINT=([^\n]+)$/\1/p' /usr/share/elasticsearch/config/ssdt-document-store-generated.properties)
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
80 done
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
81 docker cp "$ES_SETTING_NODE_NAME":/usr/share/elasticsearch/config/ssdt-document-store-generated.properties "$BASEDIR"/.env
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
82
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
83
30a35d908d92 DS-56 create docstore local install script
calmes@ssdt-ohio.org
parents:
diff changeset
84 echo "Elasticsearch is up and running, certificate & generated properties copied"