juju charme relação ganchos não estão funcionando?

2

Oi eu desenvolvi charme de servidor de dois encantos e charme de aplicativo.Eu preciso adicionar relação entre eles ee deseja obter o endereço IP do servidor para o charme do aplicativo.Tenho adicionado arquivos de gancho de relação-unida e relação-alterada para o charme do servidor e aplicação charme.Então eu posso construir relações entre eles.Agora eu tenho problema minha relação-juntou-se e relação-alterado arquivos de gancho não estão funcionando.Em apenas executando config-changed, instalar e iniciar os arquivos de ganchos.Esta é a maneira que eu segui.

por Sajith Vijesekara 06.08.2014 / 11:18

1 resposta

7
O que você deve ter em mente sobre as relações de juju é que nós não nos ligamos a nenhuma especificação oficial. Não estamos forçando você a implementar uma RFC para trocar informações entre os serviços.

Com isso dito, vamos dissecar sua pergunta em particular aqui.

Em termos de servidor e aplicativo, vamos usar o gitlab-ci e o gitlab-ci-runner como nosso modelo de servidor / aplicativo. Com gitlab-ci sendo o servidor e gitlab-ci-runner como o aplicativo. Nosso modelo de implantação é um para muitos, com 1 servidor e muitos aplicativos. (podemos ter muitos servidores, mas eu quero manter o exemplo conciso)

Metadados do Gitlab-CI

Primeiro definimos o relacionamento nos metadados do gitlab-ci.

provides:
  ci-job:
    interface: ci-worker

Esta declaração única diz ao juju que temos uma relação ci-job, usando a interface ci-worker. Com essa definição de relacionamento, temos quatro estados possíveis que podemos consumir para fazer alterações.

ci-job-joined, ci-job-changed, ci-job-quebrado, ci-job-departed

A convenção para isto, é relação-nome - evento - então avançando, nós temos aqueles 4 ganchos de evento possíveis ligados a um nome de relação. Eles executam na seguinte sequência:

  1. relation-joined
  2. relação-alterada
  3. relação-quebrado
  4. relação-partiu

O ingresso é para "pré-trabalho" e é um local para você fazer qualquer trabalho necessário para preparar o serviço para receber o relacionamento (fazendo backup de um banco de dados SQLite local existente, por exemplo).

Alterado é executado sempre que uma alteração é detectada no relacionamento. Isso às vezes é acionado quando o recurso remoto tem uma atualização de configuração e pode não refletir necessariamente uma alteração necessária em seu serviço - portanto, tenha 100% de certeza de que ele é idempotente.

Broken é executado quando você quebra o relacionamento pela primeira vez. É quando você deseja fazer backups de dados e reconfiguração para remover a configuração remota.

Partida é qualquer trabalho de finalização final para remover o relacionamento. Como reinstalar o backup do SQLite para operação e gravar a configuração correta.

Existem vários encantos que exercitam esses ganchos na loja de charme. Eu sugeriria olhar para o conteúdo do anzol de alguns dos encantos. MongoDB , MediaWiki , Ghost

Metadados do Gitlab-CI-Worker

O serviço de terminal oposto terá uma história muito semelhante ao serviço listado acima, mas em vez de fornecer, usaremos uma instrução requer para fazer o relacionamento. Isso é muito mais do que uma configuração Tab A, Slot B - você define o que pode conversar com essas definições.

requires:
  ci-job:
    interface: ci-worker

E nossos ganchos parecerão basicamente os mesmos: ci-job-joined, ci-job-alterado, ci-job-broken, ci-job-afastado

O conteúdo do código do gancho depende inteiramente de você.

Enviando o IP da unidade

Existem convenções enviadas com juju - dependendo do idioma que você está usando para escrever o charme. Certifique-se de ler os documentos sobre relação-get, relation-set e unit-get

unit-get destina-se a ler as variáveis do nível do sistema. Por exemplo: unit-get public-address

relation-set é o que você gostaria de usar no host que envia as informações. Na instância da configuração do gitlab-ci, nós relation-set publicip=$(unit-get public-address)

relation-get é como consumimos os dados enviados pela rede no serviço de recebimento. relation-get publicip

Espero que isso ajude!

    
por lazyPower 07.08.2014 / 16:44