Я уже довольно давно работаю с Custom Ambari Services. Мне удалось установить несколько различных пользовательских компонентов. Я создал несколько пакетов управления и считаю, что имею большой опыт работы с сторонними сервисами в Ambari.
Всякий раз, когда я устанавливаю настраиваемую службу, я получаю пользовательское KeyError, например Elasticsearch:
Traceback (most recent call last):
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py", line 38, in <module>
BeforeAnyHook().execute()
File "/usr/lib/ambari-agent/lib/resource_management/libraries/script/script.py", line 352, in execute
method(env)
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py", line 31, in hook
setup_users()
File "/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/shared_initialization.py", line 50, in setup_users
groups = params.user_to_groups_dict[user],
KeyError: u'elasticsearch'
Error: Error: Unable to run the custom hook script ['/usr/bin/python', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY/scripts/hook.py', 'ANY', '/var/lib/ambari-agent/data/command-15.json', '/var/lib/ambari-agent/cache/stack-hooks/before-ANY', '/var/lib/ambari-agent/data/structured-out-15.json', 'INFO', '/var/lib/ambari-agent/tmp', 'PROTOCOL_TLSv1_2', '']
Известный способ обхода - выполнить команду python для отключения управления пользователями / группами:
python /var/lib/ambari-server/resources/scripts/configs.py -u admin -p admin -n [CLUSTER_NAME] -l [CLUSTER_FQDN] -t 8080 -a set -c cluster-env -k ignore_groupsusers_create -v true
Однако это оставляет кластер в нежелательном состоянии, если вы хотите снова установить собственные службы. Если я выполню команду python, чтобы снова включить управление пользователями / группами, следующая установка собственной службы снова завершится ошибкой из-за ошибки объекта ключа стороннего пользователя.
Существует ли таблица базы данных, содержащая список или объект ключевого значения пользователей и групп, которыми управляет ambari? Удовлетворение исходной ошибки кажется единственным готовым решением.
Я сам попытался найти объект значения ключа, я также попытался создать группы пользователей, я даже попытался изменить код агента / сервера, выполняющий установку. Далее я попробую еще раз, но подумал, может быть, это будет хороший первый пост для SO.