Я пишу сценарий BASH, способный развернуть и настроить весь кластер эластичного поиска. В настоящее время у меня есть два сценария установки и сценарий конфигурации, который обрабатывает все S SH logi c и конфигурацию безопасности.
Кажется, что все работает отлично, за исключением двух функций.
echo "Transmitting functions and arrays for remote execution!"
ssh -T "root@$kbip" <<-LIMITBREAK
eval `typeset -p kibConfigSer`
eval `typeset -p kibConfigChan`
eval `typeset -p esip`
`declare -f checkLocalKibanaConfig`; checkLocalKibanaConfig
`declare -f createDirectories`; createDirectories
LIMITBREAK
echo
echo "Transmitting functions and array for remote execution!"
ssh -T "root@$allnodes[x]" <<-LIMITBREAK
eval `typeset -p esConfig`
`declare -f checkLocalElasticConfig`; checkLocalElasticConfig
`declare -f createDirectories`; createDirectories
LIMITBREAK
Это HEREDOC, которые я использую для определения функций в удаленной оболочке. На данный момент первый заявленный работает нормально. Он может передать массив esConfig со всеми настройками конфигурации, и функция checkLocalElasticConfig определена и может получить доступ к строкам в массиве.
Однако, независимо от того, что я пытаюсь, второе объявление делает ничего. Logi c проверяет наличие каталога kibana directory / elasti c и успешно проверяет, что каталог certs отсутствует. Но когда он пытается выполнить команду mkdir ...
mkdir: Cannot create directory '/etc/directory/certs': No such file or directory
, я полностью ошеломлен. Я знаю, что et c существует, я знаю, что каталог существует, и сертификатов не существует, которые должна обрабатывать эта функция:
function createDirectories ()
{
#Checks if ElasticSearch is present
if [ -d "/etc/elasticsearch" ]
then
if [ -d "/etc/elasticsearch/certs" ]
then
echo "Directory /etc/elasticsearch/certs exists."
else
echo "/etc/elasticsearch/certs in ElasticSearch does not exist! Making directory!"
mkdir "/etc/elasticsearch/certs"
fi
fi
#Checks if Kibana is present
if [ -d "/etc/kibana" ]
then
if [ -d "/etc/kibana/certs" ]
then
echo "Directory /etc/kibana/certs exists."
else
echo "/etc/kibana/certs in Kibana does not exist! Making directory!"
mkdir "/etc/Kibana/certs"
fi
fi
}
.
Цель этого сценария состоит в том, что Функция createDirectory доступна для локального использования и при необходимости определяется для удаленного использования при настройке узлов кластера.
Есть идеи, что я делаю неправильно? Или что я мог бы сделать лучше?