为何我的 juju 关系钩子无法运行?

为何我的 juju 关系钩子无法运行?

我正在尝试创建一个可以连接到 rabbitmq 的 charm。我编写了一个 amqp-relation-joined 和一个 amqp-relation-changed。当我运行 时,这两个脚本都不会执行juju add-relation $mycharm rabbitmq-server。在日志中,我看到

...
==> <$HOME>/.juju/local/log/unit-rabbitmq-server-0.log <==
2014-03-04 20:43:48 DEBUG juju.worker.uniter.filter filter.go:523 no new charm event
2014-03-04 20:43:48 DEBUG juju.worker.uniter.filter filter.go:338 got relations change

==> <$HOME>/.juju/local/log/unit-flask-0.log <==
2014-03-04 20:43:48 DEBUG juju.worker.uniter.filter filter.go:523 no new charm event
2014-03-04 20:43:48 DEBUG juju.worker.uniter.filter filter.go:338 got relations 
...

我希望看到我的钩子产生某种输出,因为我正在记录一些东西。

amqp-relation-joined

echo "DOING AMQP STUFF"
juju-log "$JUJU_REMOTE_UNIT modified its settings"
juju-log "Relation settings:"
relation-get
juju-log "Relation members:"
relation-list
touch /var/i_was_here

amqp-relation-changed

echo "DOING AMQP STUFF"
juju-log "$JUJU_REMOTE_UNIT modified its settings"
juju-log "Relation settings:"
relation-get
juju-log "Relation members:"
relation-list
touch /var/i_was_also_here

当我 ssh 进入机器时,我没有/var/i_was_here看到/var/i_was_also_here

我在本地模式下在 Ubuntu 12.04 上运行 juju。

编辑:

metadata.yml 是

name: flask
summary: Flask is a lightweight "microframework" that is often used for simple apis
maintainer: Ubuntu <[email protected]>
description: |
  ...
categories:
  - misc
subordinate: false
provides:
  api:
    interface: http
requires:
  amqp:
    interface: rabbitmq

我使用的 Charms 都集中到一个存储库中https://github.com/peterklipfel/firesuit/tree/master/charms

答案1

好的,我遇到的问题是我没有在钩子中将进程置于后台start。因此,钩子从未完成,并且基本上冻结了该服务的状态。我以为它正在工作,因为我设置的 api 会响应。冻结它的进程是一个前台 uwsgi 进程。

但是,debug-hooks由于节点被冻结,因此没有运行。我没有意识到 tmux 会话打开了一个新的每个钩子都会有会话。因此初始会话将不是具有文档中所示的功能...当然,文档是这么说的,但我的大脑没有明白。

感谢所有的 juju 朋友帮助我度过难关。

答案2

我没有发现您发布的内容有什么问题。您应该检查以确保您的钩子是可执行的,并查看命令debug hooks

https://jujucharms.com/docs/stable/developer-debugging

相关内容