J'écris un charme qui nécessite une base de données mysql. En regardant d'autres charmes, j'ai découvert que (voici ci-dessous) comment obtenir les informations sur la base de données:
user=`relation-get user`
password=`relation-get password`
mysqlhost=`relation-get private-address`
Mais je viens de constater qu’en lisant l’exemple wordpress charm, existe-t-il un moyen de montrer toutes les variables de relation que je peux utiliser?
En outre, lors du débogage de mon script db-relation-modified, je voulais ssh dans mon hôte et exécuter de manière interactive ces commandes, par exemple relation-get user, mais cela ne fonctionnait pas. J'ai eu recours à tout redémarrer et à utiliser Juju Log pour les imprimer. Cela a perdu beaucoup de temps. Est-il possible d'imprimer ces relations, soit à partir de ma boîte de dev, soit à partir de l'instance qui exécute mon charme? (Voici ce qui se passe lorsque j'ai essayé d'exécuter interactivement relation-get):
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
J'ai essayé juju debug-hooks tracks/0 -e local
, qui m'a fait tomber dans un shell et la relation s'est toujours échouée.
Un moyen de déboguer votre charme de manière interactive consiste à utiliser des crochets de débogage ( https://jujucharms.com/docs/stable/developer-debugging ):
Par exemple:
juju deploy wordpress
(Disons que la commande ci-dessus déploie wordpress/0)
juju debug-hooks wordpress/0
Cela ouvrira une session tmux où les hooks pourront être exécutés manuellement. Il configure également l'environnement pour que relation- * puisse être exécuté (relation-get, relation-liste, etc.)
Essayez de lancer relation-get
... il devrait vous donner toutes les variables disponibles pour ce charme/cette relation.
REMARQUE: vous devez réellement déclencher un crochet une fois que vous avez démarré les crochets de débogage juju. Donc, ajoutez/modifiez une relation à ce stade. (En règle générale, je supprime simplement relation, puis je l'ajoute de nouveau.) Cela créera des fenêtres supplémentaires spécifiques au hook dans tmux qui ont un contexte de réglage JUJU_ et qui répondront aux commandes relation-get relation-set.
J'ai rencontré une variante de ceci avec config-get sur l'unité juju. Je constate que si je définis une valeur de configuration à partir de la machine à déployer, le message d'erreur JUJU_AGENT_SOCKET ne s'affiche plus:
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
Sans effectuer un "ensemble de juju" sur la machine à déployer, config-get renverra l'erreur JUJU_AGENT_SOCKET. Ensuite, vous obtenez toutes les valeurs actuelles.
Pas une réponse, mais une solution de contournement. Quand j'en saurai plus sur les relations, une variante fonctionnera peut-être aussi avec cela.
Lorsque vous exécutez juju debug-hooks service/#
, il crée un juju ssh dans une session tmux. Cependant, cette première fenêtre de la session tmux (qui ressemble à l'écran) ne contient aucune information de session JUJU. (Vous pouvez en faire la démonstration en exécutant set|grep JUJU
et vous ne devriez pas voir les paramètres renvoyés.) Initialement, il n'y aura qu'une fenêtre 0: ~ dans TMUX.
Une fois qu'une relation est ajoutée (à partir d'une autre fenêtre/terminal) via quelque chose comme:
juju add-relation wordpress mysql
une fenêtre supplémentaire tmux doit être créée et devenir active. Le nom du hook en cours de débogage sera intégré au titre de TMUX (en bas de l'écran), quelque chose comme:
1: db-relation-changed
Vous pouvez maintenant lancer relation-get ou mieux encore:
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
(ceci pour le charme de rsetter lié à rgetter, pas wordpress/mysql)
Vous pouvez ensuite déboguer (en exécutant les hooks normalement lancés car vous devriez être dans le répertoire parent du charme, donc hooks/HOOKNAME).
Essaye ça:
juju ssh nom_service/instance_id Sudo apt-get install juju-jitsu juju ssh nom_service/instance_id Sudo grep -R JUJU_ENV_UUID /etc[.____.hn# tirez le résultat et exportez ubuntu @ ip-10-204-237-189: ~ $ jitsu lampe exécutable/0 config-get utilisateur de base de données utilisateur-juju
aussi,
# J'ai joint collectd à cette instance Jitsu lampe exécutée en tant que hook/0 relation-identifiants collectd-serveur $ Echo $? 0
Il n'a rien retourné parce que je ne l'avais pas encore raconté, sachez qu'il n'a pas explosé non plus. J'espère que cela t'aides.