Я пишу талисман, требующий базы данных mysql, и, посмотрев на другие талисманы, обнаружил, что именно так (ниже) я получаю информацию о базе данных:
user=`relation-get user`
password=`relation-get password`
mysqlhost=`relation-get private-address`
Но я только что нашел что после прочтения примера очарования wordpress есть способ показать все переменные отношений, которые я могу использовать?
Кроме того, во время отладки моего сценария db-отношение-изменения я захотел подключиться по ssh к своему хосту и в интерактивном режиме запустите эти команды, например Ratio-Get User , но это не сработало. Я прибегнул к необходимости перезапустить все и использовать журнал juju, чтобы распечатать их. Это потратило много времени. Есть ли способ распечатать эти отношения, либо из моего окна разработчика, либо из экземпляра, управляющего моим очарованием? (Ниже приведено описание того, что происходит, когда я пытался в интерактивном режиме запустить относительное получение):
ubuntu@mfisch-local-tracks-0:~$ relation-get user
usage: relation-get [-h] [-o OUTPUT] [-s SOCKET] [--client-id CLIENT_ID]
[--format FORMAT] [--log-file FILE]
[--log-level CRITICAL|DEBUG|INFO|ERROR|WARNING]
[-r RELATION ID]
[settings_name] [unit_name]
No JUJU_AGENT_SOCKET/-s option found
Я пытался juju debug-hooks tracks/0 -e local
, что привело меня в оболочку, и получение отношения все равно не удалось.
Я столкнулся с вариантом этого с config-get на модуле juju. Я обнаружил, что если я установлю значение конфигурации с компьютера, выполняющего развертывание, то я больше не получаю сообщение об ошибке JUJU_AGENT_SOCKET:
juju bootstrap
juju deploy local:wordress # local:$charm
juju get wordpress # $charm, gets config.yaml
juju set wordpress name=value # set any $charm name
juju debug-hooks wordpress/0 # $charm/$int
$charm-$int: config-get # get config.yaml
Без выполнения «набора juju» на компьютере, выполняющем развертывание, config-get вернет ошибка JUJU_AGENT_SOCKET. После этого вы получите все текущие значения.
Не ответ, а обходной путь. Когда я знаю больше об отношениях, возможно, вариант тоже с этим работает.
Попробуйте это:
juju ssh servicename/instance_id sudo apt-get install juju-jitsu juju ssh servicename/instance_id sudo grep -R JUJU_ENV_UUID /etc # take result and export ubuntu@ip-10-204-237-189:~$ jitsu run-as-hook lamp/0 config-get database-user juju-user
также,
# I attached collectd to this instance jitsu run-as-hook lamp/0 relation-ids collectd-server $ echo $? 0
Это ничего не вернуло, потому что я еще не связал это, обратите внимание, что оно тоже не взорвалось. Надеюсь, это поможет.
Способ интерактивной отладки вашего обаяния заключается в использовании отладочных хуков ( https://jujucharms.com/docs/stable/developer-debugging ):
Например: [ 115]
juju deploy wordpress
(допустим, что приведенная выше команда развертывает wordpress / 0)
juju debug-hooks wordpress/0
Это откроет сеанс tmux, где ловушки можно запускать вручную. Он также настраивает среду так, чтобы можно было запускать отношение- * (отношение-получение, отношение-список и т. Д.)
Попробуйте запустить relation-get
... оно должно дать вам все доступные переменные для этого особое очарование / отношение.
ПРИМЕЧАНИЕ. На самом деле вы должны вызвать срабатывание крючка после запуска отладочных крючков джуджу. Итак, добавьте / измените отношения на этом этапе. (Я обычно просто удаляю-отношение, а затем добавляю его обратно.) Это создаст дополнительные специфичные для ловушки окна в tmux, которые имеют контекст установки JUJU_ и будут отвечать на команды установки-установки-отношения.
Когда вы выполняете juju debug-hooks service/#
, он выполняет juju ssh в сеансе tmux. Однако, это первое окно сеанса tmux (которое похоже на экран) не имеет информации о сеансе JUJU. (Вы можете продемонстрировать это, выполнив set|grep JUJU
, и вы не увидите никаких возвращенных настроек.) Изначально в TMUX будет только окно 0: ~.
Как только отношение добавляется (из другого окна / терминала) через что-то вроде:
juju add-relation wordpress mysql
ДОПОЛНИТЕЛЬНОЕ окно tmux должно быть создано и стать активным. Имя отлаживаемого хука будет встроено в заголовок TMUX (внизу экрана), что-то вроде:
1: db-relation-changed
Теперь вы можете запустить относительное получение или еще лучше:
[ 112](это для обаяния rsetter, связанного с rgetter, а не wordpress / mysql)
Затем вы можете отлаживать (включая выполнение ловушек, которые обычно запускаются, как вы должны быть в родительском каталоге шарм, поэтому зацепки / HOOKNAME)