Questo documento descrive come utilizzare modelli esterni in un deployment che sono ospitati su Internet anziché nella tua macchina locale.
Puoi archiviare i modelli su un host esterno ovunque su Internet e chiamarli dall'interno della configurazione. L'hosting esterno dei modelli presenta alcuni vantaggi rispetto all'archiviazione locale dei modelli:
- Condividi facilmente i modelli con gli altri
- Assicurati che le configurazioni utilizzino sempre il modello più aggiornato
- Gestisci automaticamente le importazioni e gli schemi pertinenti
Deployment Manager recupera sempre la versione più recente dei modelli esterni ogni volta che esegui nuovamente il deployment della configurazione. Se gestisci i modelli, anche i tuoi deployment saranno sempre aggiornati. Deployment Manager gestirà anche l'importazione di altri modelli dipendenti per te se vi viene fatto riferimento nel modello esterno.
Esempio
Questa configurazione importa un modello esterno:
resources:
- name: my-frontend
type: gs://my-frontend-templates/webserver-frontend.jinja
Prima di iniziare
- Se vuoi utilizzare gli esempi a riga di comando di questa guida, installa lo strumento a riga di comando "gcloud".
- Se vuoi utilizzare gli esempi di API descritti in questa guida, configura l'accesso alle API.
- Leggi la documentazione relativa alla configurazione.
- Leggi la documentazione relativa ai modelli.
Hosting di modelli esterni
Puoi ospitare modelli esterni in Google Cloud Storage o in una posizione accessibile pubblicamente, ad esempio GitHub. Se il file contiene un URL e hai accesso ai modelli, Deployment Manager sarà in grado di scaricarlo. Se il file utilizza uno schema per importare altri modelli, devi anche ospitare questi modelli nello stesso URL di base.
Su Google Cloud Storage
Per ospitare i modelli in Google Cloud Storage:
- Crea un bucket per i modelli o utilizza un bucket esistente.
- Carica i tuoi modelli e i relativi file dei modelli, come gli schemi, nel bucket.
- Se prevedi di utilizzare i modelli di un progetto della Google Cloud Platform diverso da quello a cui appartengono i modelli, imposta i controlli dell'accesso per consentire tale accesso.
L'hosting dei modelli in Google Cloud Storage ti consente di controllare chi può accedere ai modelli perché puoi impostare le opzioni di controllo dell'accesso dell'accesso sul rispettivo bucket Cloud Storage o sul modello specifico.
Al contrario, ospitare i modelli su altri URL accessibili pubblicamente richiede di renderli disponibili su larga scala.
Su un URL accessibile pubblicamente
In alternativa, puoi ospitare modelli esterni al di fuori di Google Cloud Storage, a condizione che siano accessibili pubblicamente. Ad esempio, puoi ospitare i modelli su GitHub e fare riferimento ai modelli utilizzando l'URL GitHub.
In particolare, per GitHub, devi fornire l'URL GitHub non elaborato in modo che Deployment Manager riceva il modello anziché la pagina HTML di GitHub. Ad esempio, un URL non elaborato ha il seguente aspetto:
https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja
Chiamata a un modello esterno
Chiama un modello esterno come faresti con un modello locale, ma fornisci come tipo l'URL completo del file del modello. Ad esempio:
resources:
- name: my-salt-cluster
type: gs://v2/saltstack/salt_cluster.jinja
Per un URL GitHub:
resources:
- name: my-salt-cluster
type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja
Se un modello esterno importa altri modelli o se è presente uno schema associato, puoi archiviare i file correlati nella stessa directory o sottodirectory e includere questi altri modelli con un URL relativo. Deployment Manager cercherà questi altri modelli utilizzando il percorso relativo basato sull'URL di base.
Ad esempio, se la tua configurazione fosse la seguente:
resources:
- name: my-salt-cluster
type: gs://v2/saltstack/salt_cluster.jinja
C'era un file di schema denominato salt_cluster.jinja.schema
che
importava questi file:
imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py
Deployment Manager scaricherà e importerà automaticamente tutti i file necessari per il modello.