elasticsearch 7x как служба gitlab не допускает точку в имени переменной

#elasticsearch #gitlab #gitlab-ci

#elasticsearch #gitlab #gitlab-ci

Вопрос:

Я пытаюсь запустить elasticsearch 7.0.1 в моем конвейере gitlab, вот фрагмент конфигурации:

 test:
  stage: test
  services:
    - name: docker.elastic.co/elasticsearch/elasticsearch:7.0.1
      alias: elastic
  variables:
    cluster.initial_master_nodes: elastic
    node.name: elastic
 

Но когда я запускаю его, я получаю следующее сообщение об ошибке:

 /bin/bash: line 82: export: `cluster.initial_master_nodes=elastic': not a valid identifier
 

Похоже, что Gitlab использует bash для экспорта переменных, но bash не допускает точек в именах. Я пытался экранировать с помощью двойного подчеркивания, но не сработало. Есть предложения?

Ответ №1:

Имена переменных с точкой действительно недопустимы в sh и bash.

В официальной документации есть решение (работает с версии 7.15):

 Change the setting name to uppercase
Prefix it with ES_SETTING_
Escape any underscores (_) by duplicating them
Convert all periods (.) to underscores (_)
 

Попробуйте использовать имена переменных (обратите внимание на двойные подчеркивания).:

 ES_SETTING_CLUSTER_INITIAL__MASTER__NODES: elastic
ES_SETTING_NODE_NAME: elastic
 

Комментарии:

1. вы пропустили экранирование подчеркиваний с помощью двойного подчеркивания (я отредактировал его в ответе). Спасибо.