#!/bin/bash set -x # trace : "${REALM:=TEST.CLICKHOUSE.TECH}" : "${DOMAIN_REALM:=test.clickhouse.com}" : "${KERB_MASTER_KEY:=masterkey}" : "${KERB_ADMIN_USER:=admin}" : "${KERB_ADMIN_PASS:=admin}" create_config() { : "${KDC_ADDRESS:=$(hostname -f)}" cat>/etc/krb5.conf</var/kerberos/krb5kdc/kdc.conf< /var/kerberos/krb5kdc/kadm5.acl } create_keytabs() { rm /tmp/keytab/*.keytab kadmin.local -q "addprinc -randkey kuser@${REALM}" kadmin.local -q "ktadd -norandkey -k /tmp/keytab/kuser.keytab kuser@${REALM}" kadmin.local -q "addprinc -randkey HTTP/instance1@${REALM}" kadmin.local -q "ktadd -norandkey -k /tmp/keytab/clickhouse1.keytab HTTP/instance1@${REALM}" kadmin.local -q "addprinc -randkey HTTP/instance2@${REALM}" kadmin.local -q "ktadd -norandkey -k /tmp/keytab/clickhouse2.keytab HTTP/instance2@${REALM}" kadmin.local -q "addprinc -randkey HTTP/instance3@${REALM}" kadmin.local -q "ktadd -norandkey -k /tmp/keytab/clickhouse3.keytab HTTP/instance3@${REALM}" kadmin.local -q "addprinc -randkey HTTP/client@${REALM}" kadmin.local -q "ktadd -norandkey -k /tmp/keytab/client.keytab HTTP/client@${REALM}" chmod g+r /tmp/keytab/kuser.keytab chmod g+r /tmp/keytab/clickhouse1.keytab chmod g+r /tmp/keytab/clickhouse2.keytab chmod g+r /tmp/keytab/clickhouse3.keytab chmod g+r /tmp/keytab/client.keytab } main() { if [ ! -f /kerberos_initialized ]; then create_config create_db create_admin_user start_kdc touch /kerberos_initialized fi if [ ! -f /var/kerberos/krb5kdc/principal ]; then while true; do sleep 1000; done else start_kdc create_keytabs tail -F /var/log/kerberos/krb5kdc.log fi } [[ "$0" == "${BASH_SOURCE[0]}" ]] && main "$@"