Como faço para listar todas as variáveis de relação e depurá-las interativamente?

3

Eu estou escrevendo um charme que requer um banco de dados mysql, eu encontrei de olhar para outros charms que este (abaixo) é como eu recebo as informações sobre o banco de dados:

user='relation-get user'
password='relation-get password'
mysqlhost='relation-get private-address' 

Mas acabei de descobrir que, ao ler o exemplo do encanto wordpress, existe uma maneira de mostrar todas as variáveis de relação que eu posso usar?

Além disso, enquanto depurava meu script db-relation-changed, eu queria ssh em meu host e executar esses comandos interativamente, por exemplo relação-get user , mas não funcionou. Eu recorri a ter que reiniciar tudo e usar juju log para imprimi-los. Isso desperdiçou muito tempo. Existe uma maneira de imprimir essas relações, seja da minha caixa de desenvolvimento ou da instância executando o meu charme? (Abaixo está o que acontece quando eu tentei interativamente executar relação-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

Eu tentei juju debug-hooks tracks/0 -e local , que me colocou em um shell e relação-get ainda falhou.

    
por mfisch 24.11.2012 / 20:15

4 respostas

1

Eu encontrei uma variante disso com o config-get na unidade juju. Eu acho que se eu definir um valor de configuração da máquina implementadora, não receberei mais a mensagem de erro 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

Sem fazer um 'juju set' na máquina do deployer, o config-get retornará o erro JUJU_AGENT_SOCKET. Depois, você obtém todos os valores atuais.

Não é uma resposta, mas uma solução alternativa. Quando eu sei mais sobre as relações, talvez um variante funciona com isso também.

    
por mcarifio 16.12.2012 / 21:56
1

Uma maneira de depurar interativamente seu charme é usar os hooks de depuração ( link ):

Por exemplo:

juju deploy wordpress

(Digamos que o comando acima implemente o wordpress / 0)

juju debug-hooks wordpress/0

Isso abrirá uma sessão do tmux onde os ganchos podem ser executados manualmente. Também configura o ambiente para que as relações- * possam ser executadas (relação-get, relação-lista, etc.)

Tente executar relation-get ... ele deve fornecer todas as variáveis disponíveis para esse charme / relação específico.

OBSERVAÇÃO: você realmente precisa fazer com que um gancho seja disparado depois de iniciar os ganchos de depuração do juju. Então, adicione / modifique um relacionamento neste momento. (Eu costumo apenas remover-relacionamento e, em seguida, adicioná-lo de volta.) Isso criará janelas adicionais específicas do gancho dentro do tmux que têm contexto de configuração JUJU_ e responderão aos comandos relation-get relation-set.

    
por Juan Negron 24.11.2012 / 22:35
0

Tente isto:

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

também,

# I attached collectd to this instance
jitsu run-as-hook lamp/0 relation-ids collectd-server
$ echo $?
0

Ele não retornou nada porque eu ainda não havia relatado note que ele não explodiu também. Espero que isso ajude.

    
por ppetraki 04.02.2013 / 21:20
0

Quando você executa juju debug-hooks service/# , ele faz um juju ssh em uma sessão do tmux. No entanto, essa primeira janela da sessão do tmux (que é como a tela) não possui informações sobre a sessão do JUJU. (Você pode demonstrar isso executando set|grep JUJU e você não deve ver nenhuma configuração retornada.) Haverá apenas uma janela 0: ~ dentro do TMUX inicialmente.

Quando uma relação é adicionada (a partir de outra janela / terminal) por meio de algo como:

juju add-relation wordpress mysql

uma janela tmux ADICIONAL deve ser criada e tornar-se ativa. O nome do hook sendo depurado será embutido no título do TMUX (na parte inferior da tela), algo como:

1: db-relation-changed

Agora você pode executar o relacionamento-get ou melhor ainda:

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

(isto para o charset rsetter relacionado a rgetter, não ao wordpress / mysql)

Você pode então depurar (incluindo a execução dos ganchos que normalmente seriam lançados como você deve estar no diretório pai do encanto, então hooks / HOOKNAME)

    
por med 17.02.2013 / 02:44

Tags