Согласно stable / postgresql рулевой диаграммы, initdbScripts
- это словарь имен сценариев инициализации, которые являются многострочными переменными:
## initdb scripts
## Specify dictionnary of scripts to be run at first boot
## Alternatively, you can put your scripts under the files/docker-entrypoint-initdb.d directory
##
# initdbScripts:
# my_init_script.sh:|
# #!/bin/sh
# echo "Do something."
Давайте предположим, что у нас есть следующий init.sql
скрипт:
CREATE USER helm;
CREATE DATABASE helm;
GRANT ALL PRIVILEGES ON DATABASE helm TO helm;
Когда мы собираемся ввести многострочный текст в значения, нам нужно иметь дело с отступом в YAML.
Для приведенного выше конкретного случая это:
helm install stable/postgresql -n testpg \
--set global.postgresql.postgresqlDatabase=testpg \
--set global.postgresql.postgresqlUsername=testpg \
--set global.postgresql.postgresqlPassword=testpg \
--set global.postgresql.servicePort=5432 \
--set initdbScripts."init\.sql"="CREATE USER helm;
CREATE DATABASE helm;
GRANT ALL PRIVILEGES ON DATABASE docker TO helm;" \
--set service.type=LoadBalancer
В вышеприведенном примере есть некоторые пояснения:
- Если имя скрипта имеет
.
, его следует экранировать, например "init\.sql"
.
- Содержимое скрипта в двойных кавычках, потому что это многострочная строковая переменная.