2021-04-16 18:40:39 +02:00
|
|
|
#!/bin/bash
|
2022-09-29 11:14:32 +01:00
|
|
|
: ${PARTITIONS:=1}
|
2021-04-16 18:40:39 +02:00
|
|
|
: ${REPLICATION_FACTOR:=1}
|
|
|
|
|
|
|
|
: ${KAFKA_PROPERTIES_SECURITY_PROTOCOL:=PLAINTEXT}
|
|
|
|
|
2021-05-11 15:41:42 -07:00
|
|
|
: ${DATAHUB_ANALYTICS_ENABLED:=true}
|
|
|
|
|
2022-12-27 12:35:48 -06:00
|
|
|
: ${KAFKA_HEAP_OPTS:=-Xmx64M}
|
|
|
|
|
2021-04-19 15:39:38 -07:00
|
|
|
CONNECTION_PROPERTIES_PATH=/tmp/connection.properties
|
2021-04-16 17:51:43 -07:00
|
|
|
|
2022-12-15 20:09:29 -06:00
|
|
|
function wait_ex {
|
|
|
|
# this waits for all jobs and returns the exit code of the last failing job
|
|
|
|
ecode=0
|
|
|
|
while true; do
|
|
|
|
[ -z "$(jobs)" ] && break
|
|
|
|
wait -n
|
|
|
|
err="$?"
|
|
|
|
[ "$err" != "0" ] && ecode="$err"
|
|
|
|
done
|
|
|
|
return $ecode
|
|
|
|
}
|
|
|
|
|
2021-04-16 17:51:43 -07:00
|
|
|
echo "bootstrap.servers=$KAFKA_BOOTSTRAP_SERVER" > $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "security.protocol=$KAFKA_PROPERTIES_SECURITY_PROTOCOL" >> $CONNECTION_PROPERTIES_PATH
|
2021-04-16 18:40:39 +02:00
|
|
|
|
2022-07-14 02:17:23 +05:30
|
|
|
## Add support for SASL_PLAINTEXT
|
|
|
|
if [[ $KAFKA_PROPERTIES_SECURITY_PROTOCOL == "SASL_PLAINTEXT" ]]; then
|
|
|
|
echo "sasl.jaas.config=$KAFKA_PROPERTIES_SASL_JAAS_CONFIG" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "sasl.kerberos.service.name=$KAFKA_PROPERTIES_SASL_KERBEROS_SERVICE_NAME" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
|
|
|
|
2022-08-23 00:01:10 +01:00
|
|
|
## Add support for SASL_SSL
|
|
|
|
if [[ $KAFKA_PROPERTIES_SECURITY_PROTOCOL == "SASL_SSL" ]]; then
|
|
|
|
echo "sasl.jaas.config=$KAFKA_PROPERTIES_SASL_JAAS_CONFIG" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "sasl.mechanism=$KAFKA_PROPERTIES_SASL_MECHANISM" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
|
|
|
|
2021-04-16 18:40:39 +02:00
|
|
|
if [[ $KAFKA_PROPERTIES_SECURITY_PROTOCOL == "SSL" ]]; then
|
2022-05-16 16:51:19 -04:00
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_KEYSTORE_LOCATION ]]; then
|
|
|
|
echo "ssl.keystore.location=$KAFKA_PROPERTIES_SSL_KEYSTORE_LOCATION" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "ssl.keystore.password=$KAFKA_PROPERTIES_SSL_KEYSTORE_PASSWORD" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "ssl.key.password=$KAFKA_PROPERTIES_SSL_KEY_PASSWORD" >> $CONNECTION_PROPERTIES_PATH
|
2022-06-14 10:29:24 -07:00
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_KEYSTORE_TYPE ]]; then
|
|
|
|
echo "ssl.keystore.type=$KAFKA_PROPERTIES_SSL_KEYSTORE_TYPE" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
2022-05-16 16:51:19 -04:00
|
|
|
fi
|
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_TRUSTSTORE_LOCATION ]]; then
|
|
|
|
echo "ssl.truststore.location=$KAFKA_PROPERTIES_SSL_TRUSTSTORE_LOCATION" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
echo "ssl.truststore.password=$KAFKA_PROPERTIES_SSL_TRUSTSTORE_PASSWORD" >> $CONNECTION_PROPERTIES_PATH
|
2022-06-14 10:29:24 -07:00
|
|
|
if [[ -n $KAFKA_PROPERTIES_SSL_TRUSTSTORE_TYPE ]]; then
|
|
|
|
echo "ssl.truststore.type=$KAFKA_PROPERTIES_SSL_TRUSTSTORE_TYPE" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
2022-05-16 16:51:19 -04:00
|
|
|
fi
|
2021-04-16 17:51:43 -07:00
|
|
|
echo "ssl.endpoint.identification.algorithm=$KAFKA_PROPERTIES_SSL_ENDPOINT_IDENTIFICATION_ALGORITHM" >> $CONNECTION_PROPERTIES_PATH
|
2021-04-16 18:40:39 +02:00
|
|
|
fi
|
|
|
|
|
2022-11-22 16:37:24 -05:00
|
|
|
# Add support for SASL_CLIENT_CALLBACK_HANDLER_CLASS
|
|
|
|
if [[ -n "$KAFKA_PROPERTIES_SASL_CLIENT_CALLBACK_HANDLER_CLASS" ]]; then
|
|
|
|
echo "sasl.client.callback.handler.class=$KAFKA_PROPERTIES_SASL_CLIENT_CALLBACK_HANDLER_CLASS" >> $CONNECTION_PROPERTIES_PATH
|
|
|
|
fi
|
|
|
|
|
2022-12-16 13:39:18 -06:00
|
|
|
cub kafka-ready -c $CONNECTION_PROPERTIES_PATH -b $KAFKA_BOOTSTRAP_SERVER 1 180
|
2022-12-27 12:35:48 -06:00
|
|
|
|
2022-12-15 20:09:29 -06:00
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $METADATA_AUDIT_EVENT_NAME &
|
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $METADATA_CHANGE_EVENT_NAME &
|
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $FAILED_METADATA_CHANGE_EVENT_NAME &
|
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $METADATA_CHANGE_LOG_VERSIONED_TOPIC &
|
2022-12-27 12:35:48 -06:00
|
|
|
echo "Waiting for topic creation group 1."
|
|
|
|
result=$(wait_ex)
|
|
|
|
rc=$?
|
|
|
|
if [ $rc -ne 0 ]; then exit $rc; fi
|
|
|
|
echo "Finished topic creation group 1."
|
2022-03-29 18:32:04 -07:00
|
|
|
|
2021-07-30 17:41:03 -07:00
|
|
|
# Set retention to 90 days
|
2022-12-15 20:09:29 -06:00
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --config retention.ms=7776000000 --topic $METADATA_CHANGE_LOG_TIMESERIES_TOPIC &
|
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $METADATA_CHANGE_PROPOSAL_TOPIC &
|
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $FAILED_METADATA_CHANGE_PROPOSAL_TOPIC &
|
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $PLATFORM_EVENT_TOPIC_NAME &
|
2022-12-27 12:35:48 -06:00
|
|
|
echo "Waiting for topic creation group 2."
|
|
|
|
result=$(wait_ex)
|
|
|
|
rc=$?
|
|
|
|
if [ $rc -ne 0 ]; then exit $rc; fi
|
|
|
|
echo "Finished topic creation group 2."
|
2021-07-30 17:41:03 -07:00
|
|
|
|
2021-05-11 15:41:42 -07:00
|
|
|
# Create topic for datahub usage event
|
|
|
|
if [[ $DATAHUB_ANALYTICS_ENABLED == true ]]; then
|
2022-12-27 12:35:48 -06:00
|
|
|
kafka-topics.sh --create --if-not-exists --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --partitions $PARTITIONS --replication-factor $REPLICATION_FACTOR --topic $DATAHUB_USAGE_EVENT_NAME
|
2021-05-11 15:41:42 -07:00
|
|
|
fi
|
2022-07-17 18:59:09 -07:00
|
|
|
|
2022-07-18 13:25:17 -07:00
|
|
|
kafka-configs.sh --command-config $CONNECTION_PROPERTIES_PATH --bootstrap-server $KAFKA_BOOTSTRAP_SERVER --entity-type topics --entity-name _schemas --alter --add-config cleanup.policy=compact
|