ganci di relazioni di fascino juju non sono in esecuzione?

2

Ciao ho sviluppato due charms server charm e application charm.Io ho bisogno di aggiungere una relazione tra loro e di voler ottenere l'indirizzo IP del server per l'incantesimo dell'applicazione. Ho aggiunto i file hook uniti e relazionati alla relazione per entrambi gli charm del server e il fascino dell'applicazione.Poi posso creare relazioni tra di loro.Ora ho un problema I miei file hook uniti e relazionati alle modifiche non sono in esecuzione. Solo con configurazione modificata, installa e avvia i file hooks.Questo è il modo in cui ho seguito. Come faccio ad aggiungere una relazione tra due charm per passare le informazioni tra di loro? qualcuno mi dica perché questi hook di relazioni non sono in esecuzione. E come il flusso funziona per i hook di relazione. Grazie Sajith

    
posta Sajith Vijesekara 06.08.2014 - 11:18

1 risposta

7

La cosa da tenere a mente sulle relazioni juju è che non ci leghiamo a nessuna specifica ufficiale. Non ti stiamo costringendo a implementare un RFC per scambiare informazioni tra i servizi.

Detto questo, lascia che analizzi la tua particolare domanda qui.

In termini di Server e Applicazione, utilizziamo gitlab-ci e gitlab-ci-runner come nostro modello di server / applicazione. Con gitlab-ci come server e gitlab-ci-runner come applicazione. il nostro modello di implementazione è uno a molti, con 1 server e molte applicazioni. (possiamo avere molti server, ma voglio mantenere l'esempio sintetico)

Metadati Gitlab-CI

Per prima cosa definiamo la relazione nei metadati gitlab-ci.

provides:
  ci-job:
    interface: ci-worker

Questa singola affermazione dice a juju che abbiamo una relazione ci-job, usando l'interfaccia ci-worker. Con questa definizione di relazione, abbiamo 4 stati possibili che possiamo consumare per apportare modifiche.

ci-job-joined, ci-job-changed, ci-job-broken, ci-job-departed

La convenzione per questo è nome-relazione - evento - così in avanti, abbiamo i 4 possibili hook dell'evento collegati a un nome di relazione. Eseguono nella seguente sequenza:

  1. relazione incollati
  2. relazione-cambiato
  3. relazione spezzato
  4. relazione-partito

Unita è per "pre-lavoro" ed è un posto in cui puoi svolgere qualsiasi lavoro necessario per preparare il servizio a ricevere la relazione (ad esempio, il backup di un database SQLite locale esistente).

Modificato viene eseguito ogni volta che viene rilevata una modifica nella relazione. Questo a volte viene attivato quando l'incantesimo remoto ha un aggiornamento di configurazione e potrebbe non riflettere necessariamente una modifica richiesta sul tuo servizio, quindi assicurati al 100% che sia idempotente.

Rotto viene eseguito quando si interrompe la relazione per la prima volta. Questo è il momento in cui si desidera eseguire backup dei dati e riconfigurazione per rimuovere la configurazione remota.

È partito un lavoro di conclusione finale per rimuovere la relazione. Come ripristinare il backup SQLite per il funzionamento e scrivere la configurazione corretta.

Ci sono molti ciondoli che esercitano questi ami nel negozio di charm. Suggerirei di guardare i contenuti del gancio di alcuni degli amuleti. MongoDB , MediaWiki , Ghost

Metadati Gitlab-CI-Worker

Il servizio di fronte opposto avrà una storia molto simile al servizio sopra elencato, ma invece di fornire, useremo una dichiarazione di richiesta per rendere la relazione. Si tratta di una configurazione Tab A, Slot B: puoi definire cosa puoi parlare di cosa con queste definizioni.

requires:
  ci-job:
    interface: ci-worker

E i nostri hook avranno praticamente lo stesso: ci-job-joined, ci-job-changed, ci-job-broken, ci-job-departed

Il contenuto del codice hook dipende interamente da te.

Invio dell'IP dell'unità

Ci sono convenzioni spedite con juju - a seconda della lingua che stai usando per scrivere l'incantesimo. Assicurati di leggere i documenti su relazione-get, relazione-set e unità-get

unit-get è inteso per leggere le variabili a livello di sistema. es .: unit-get public-address

relation-set è ciò che vorresti utilizzare sull'host che invia le informazioni. Nell'istanza del setup gitlab-ci, vorremmo relation-set publicip=$(unit-get public-address)

relation-get è il modo in cui consumiamo i dati inviati attraverso il filo sul servizio ricevente. % Co_de%

Spero che questo aiuti!

    
risposta data lazyPower 07.08.2014 - 16:44

Leggi altre domande sui tag