Я новичок в Джуджу и чарах, пробую простые вещи.
Я пишу брелок (скажем, клиент), которому нужен IP-адрес другого брелка (скажем, сервера) в своем хуке установки.
В принципе, мне нужен IP-адрес сервера и поместить его в файл конфигурации клиента. Но он не будет доступен в хуке установки клиента. Я добавил отношения клиента и сервера, и можно использовать $REMOTE-UNIT
, relation-set hostname=unit-get private-address public-address=unit-get public-address
и server_address=relation-get hostname
.
Тем не менее, это не похоже на работу. IP-адрес сервера должен быть доступен для клиента, пока в install hook
не так ли? Так как это одноразовый параметр конфигурации.
Так, если я понимаю правильно, Вы хотите установить приложение, для которого нужен IP сервера для установки правильно? То, что Вы в основном имеете, является клиентом, который "бесполезен" без отношений к серверу.
Амулет основан на событии. Когда событие инициировано, очереди Амулета все другие события для того очарования. Следующее даже запущено с момента, предыдущий сделан. relation
события будут только запущены после install
событие завершается. С технической точки зрения отношение между двумя очарованием может только быть добавлено после install
рычаг очарования заканчивается.
Если у Вас есть очарование, которое не может установить, если оно не имеет отношение (если оно не знает IP "сервера"), затем install
рычаг ничего не делает. Фактическая установка должна произойти в relation-joined
рычаг.
Так реализуйте это:
install
рычаг в основном ничего не делает [1]relation-joined
рычаг получает IP использование relation-get private-address
relation-joined
рычаг делает фактическую установку и конфигурацию клиента[1] или рычаг установки может привести в порядок установку до такой степени, что IP необходим, и затем остановитесь