web-dev-qa-db-fra.com

Comment lister toutes les variables de relation et les déboguer de manière interactive?

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.

3
mfisch

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.

1
Juan Negron

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.

1
mcarifio

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).

0
med

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.

0
ppetraki