Как мне перечислить все переменные отношения и отладить их в интерактивном режиме?
Я пишу талисман, который требует базы данных mysql, и, посмотрев на другие талисманы, я обнаружил, что именно так (ниже) я получаю информацию о базе данных:
user=`relation-get user`
password=`relation-get password`
mysqlhost=`relation-get private-address`
Но я только что обнаружил, что, прочитав пример очарования WordPress, можно ли показать все переменные отношения, которые я могу использовать?
Кроме того, во время отладки моего сценария db-отношение-изменено я хотел подключиться к своему хосту по ssh и запустить эти команды в интерактивном режиме, например, для получения отношения с пользователем, но это не сработало. Я прибегнул к необходимости перезапустить все и использовать журнал 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, который бросил меня в раковину и связь-получить все еще не удалось.
4 ответа
Способ интерактивного отладки вашего обаяния заключается в использовании отладочных хуков ( https://jujucharms.com/docs/stable/developer-debugging):
Например:
juju deploy wordpress
(Допустим, приведенная выше команда развертывает WordPress/0)
juju debug-hooks wordpress/0
Это откроет сеанс tmux, где хуки можно запускать вручную. Он также настраивает среду, чтобы можно было запускать отношение- * (отношение-получение, отношение-список и т. Д.)
Попробуйте запустить relation-get... он должен дать вам все доступные переменные для этого конкретного очарования / отношения.
ПРИМЕЧАНИЕ. На самом деле вы должны вызвать срабатывание крючка после запуска отладочных крючков juju. Итак, добавьте / измените отношения на этом этапе. (Я обычно просто удаляю-отношение, а затем добавляю его обратно.) Это создаст дополнительные специфичные для ловушки окна в tmux, которые ДЕЙСТВИТЕЛЬНО имеют контекст установки JUJU_ и будут отвечать на команды установки отношения.
Я столкнулся с вариантом этого с 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 debug-hooks service/#, это делает Juju SSH в сеансе Tmux. Однако, это первое окно сеанса tmux (которое похоже на экран) не имеет информации о сеансе JUJU. (Вы можете продемонстрировать это, выполнив set|grep JUJU и вы не должны видеть никаких возвращенных настроек.) Изначально в TMUX будет только окно 0: ~.
Как только отношение добавляется (из другого окна / терминала) через что-то вроде:
juju add-relation wordpress mysql
ДОПОЛНИТЕЛЬНОЕ окно tmux должно быть создано и стать активным. Имя отлаживаемого хука будет встроено в заголовок TMUX (внизу экрана), что-то вроде:
1: db-relation-changed
Теперь вы можете запустить отношение-получить или еще лучше:
set|grep JUJU
JUJU_AGENT_SOCKET=/var/lib/juju/units/rsetter-1/.juju.hookcli.sock
JUJU_CLIENT_ID=constant
JUJU_DEBUG=/tmp/tmp.ZiobnuyhQh
JUJU_ENV_UUID=b4123455644323333333336d6f8383d
JUJU_PYTHONPATH=:/usr/lib/python2.7/dist-packages:/usr/lib/python2.7:/usr/lib/python2.7/plat-linux2:/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/lib-old:/usr/lib/python2.7/lib-dynload:/usr/local/lib/python2.7/dist-packages:/usr/lib/pymodules/python2.7
JUJU_RELATION=rtest
JUJU_RELATION_ID=rtest:12
JUJU_REMOTE_UNIT=rgetter/1
JUJU_UNIT_NAME=rsetter/1
_JUJU_CHARM_FORMAT=1
(это для обаяния rsetter, связанного с rgetter, а не wordpress / mysql)
Затем вы можете отлаживать (включая выполнение ловушек, которые обычно запускаются, как вы должны быть в родительском каталоге charm, поэтому hooks/HOOKNAME)
Попробуй это:
Juju SSH имя_сервера / instance_id sudo apt-get установить джиу-джитсу имя службы Jush SSH /instance_id sudo grep -R JUJU_ENV_UUID / и т. д. # взять результат и экспортировать ubuntu@ip-10-204-237-189:~$ jitsu run-as-hook индикатор /0 config-get database-user Амулет-пользователь
также,
# Я прикрепил коллекцию к этому экземпляру лампа jitsu run-as-hook $ echo $? 0
Это ничего не возвращало, потому что я еще не связал это, заметьте, что оно тоже не взорвалось. Надеюсь это поможет.