I seguenti componenti sono i concetti fondamentali di Deployment Manager.
Configurazione
Una configurazione descrive tutte le risorse necessarie per un singolo deployment.
Una configurazione è un file scritto con sintassi YAML che elenca ognuna delle risorse
che vuoi creare e le rispettive proprietà. Una configurazione deve contenere una sezione resources:
seguita dall'elenco di risorse da creare.
Ogni risorsa deve contenere tre componenti:
name
: una stringa definita dall'utente per identificare questa risorsa, ad esempiomy-vm
,project-data-disk
,the-test-network
.type
: il tipo di risorsa di cui viene eseguito il deployment, ad esempiocompute.v1.instance
,compute.v1.disk
. I tipi di risorse di base sono descritti ed elencati nella documentazione relativa ai tipi di risorse supportati.properties
: i parametri per questo tipo di risorsa. Devono corrispondere alle proprietà per il tipo, ad esempiozone: asia-east1-a
,boot: true
.
Ecco un esempio di configurazione:
resources:
- name: the-first-vm
type: compute.v1.instance
properties:
zone: us-central1-a
machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT
Modelli
Una configurazione può contenere modelli, che sono essenzialmente parti del file di configurazione che sono state riassunte in singoli componenti di base. Dopo aver creato un modello, puoi riutilizzarlo in vari deployment in base alle esigenze. Analogamente, se ti capita di dover riscrivere configurazioni che condividono proprietà molto simili, puoi astrarre le parti condivise in modelli. I modelli sono molto più flessibili dei singoli file di configurazione e sono progettati per supportare la portabilità tra i vari implementazioni.
Un file modello è scritto in Python o Jinja2. Il sistema Deployment Manager interpreterà ogni modello in modo ricorsivo e inserirà i risultati in linea nel file di configurazione. Di conseguenza, l'interpretazione di ogni modello genera la stessa sintassi YAML per le risorse di quella definita sopra per il file di configurazione stesso.
Per creare un modello semplice, consulta Creare un modello di base.
Le configurazioni sono descritte come completamente espanse o non espanse. Una configurazione completamente espansa descrive tutte le risorse e le proprietà del deployment, inclusi eventuali contenuti dei file di modello importati. Ad esempio, forniresti una configurazione non espansa che utilizza un modello come segue:
imports:
- path: vm_template.jinja
resources:
- name: vm-instance
type: vm_template.jinja
properties:
zone: us-central1-a
project: myproject
Una volta espanso, il file di configurazione conterrà i contenuti di tutti i modelli, come segue:
resources:
- name: the-first-vm
type: compute.v1.instance
properties:
zone: us-central1-a
machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
disks:
- deviceName: boot
type: PERSISTENT
boot: true
autoDelete: true
initializeParams:
sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20150423
networkInterfaces:
- network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
accessConfigs:
- name: External NAT
type: ONE_TO_ONE_NAT
Risorsa
Una risorsa rappresenta una singola risorsa API. Può essere una risorsa API fornita da un tipo di base gestito da Google o una risorsa API fornita da un provider di tipi. Ad esempio, un'istanza Compute Engine è una singola risorsa, un'istanza Cloud SQL è una singola risorsa e così via.
Per specificare una risorsa, fornisci un Tipo per la risorsa. Per saperne di più sui tipi, consulta la sezione Tipi di seguito.
Tipi
Per creare una risorsa in Deployment Manager, devi specificare un type
. Un tipo può rappresentare una singola risorsa API, nota come tipo di base, o un insieme di risorse, noto come tipo composito, che verrà creato nell'ambito del deployment.
Ad esempio, per creare un'istanza VM di Compute Engine, specifica il corrispondente tipo di base come segue nella configurazione:
resources:
- name: the-first-vm
type: compute.v1.instance # The type of resource to deploy
...
Deployment Manager offre un elenco di tipi di base gestiti da Google che puoi utilizzare immediatamente. Puoi trovare un elenco di questi tipi nella documentazione relativa a Proprietà e tipi di risorse supportati.
Tipi di base e provider di tipi
Un tipo di base crea una singola risorsa primitiva. Ad esempio, i tipi di base di proprietà di Google includono compute.v1.instance
, storage.v1.bucket
e sqladmin.v1beta4.database
, tutti forniti dalle rispettive API Compute Engine V1, Cloud Storage V1 e Cloud SQL API Admin v1beta4.
I tipi di base sono supportati da un'API RESTful che supporta le operazioni Create, Read, Update, and Delete (CRUD). Puoi anche creare altri tipi di base aggiungendo un provider di tipi se i tipi di proprietà di Google non soddisfano le tue esigenze. La creazione di un provider di tipi espone tutte le risorse di un'API come tipi di base che puoi utilizzare. Per creare un provider di tipi, devi fornire un documento descrittore dell'API, che può essere una specifica OpenAPI o un Google Discovery, aggiustare le eventuali mappature di input necessarie per l'API e registrare il tipo in Deployment Manager. Una volta creati, tu e gli altri utenti con accesso al progetto potete utilizzare i tipi forniti dal fornitore.
Quando aggiungi un provider di tipi, tutte le risorse fornite dall'API e supportate da un'interfaccia RESTful con operazioni Create, Read, Update and Delete (CRUD) verranno esposte come tipi che puoi utilizzare nel tuo deployment.
La creazione di un provider di tipi personalizzato è uno scenario avanzato e Google consiglia di procedere solo se hai dimestichezza con l'API che vuoi integrare.
Per scoprire come creare un provider di tipi, consulta Integrazione con Deployment Manager.
Quando chiami un tipo base nei modelli o nelle configurazioni, utilizza una delle seguenti sintassi a seconda del tipo.
Per i tipi di base gestiti da Google, utilizza:
type: [API].[VERSION].[RESOURCE]
Ad esempio,
compute.v1.instance
.Per i provider di tipi gestiti da Google (beta), utilizza:
type: gcp-types/[PROVIDER]:[RESOURCE]
Per un elenco dei provider di tipi supportati, consulta Provider di tipi Google Cloud supportati.
Per i tipi di base forniti da un provider di tipi, utilizza:
type: [PROJECT_ID]/[TYPE_PROVIDER]:[COLLECTION]
dove
[COLLECTION]
è il percorso della risorsa API da eseguire.
Tipi composti
Un tipo composito contiene uno o più modelli preconfigurati per funzionare insieme. Questi modelli si espandono in un insieme di tipi di base quando vengono implementati in un deployment. I tipi compositi sono essenzialmente modelli ospitati che puoi aggiungere a Deployment Manager. Puoi creare tipi compositi per soluzioni comuni in modo che siano facilmente riutilizzabili oppure creare configurazioni complesse che puoi riutilizzare in futuro.
Ad esempio, puoi creare un tipo composito che esegue il deployment di un gruppo di istanze gestite bilanciato in base al carico di rete. Un bilanciatore del carico di rete richiede più risorse Google Cloud e una certa configurazione tra le risorse, quindi puoi configurare queste risorse in una configurazione una volta e registrare il tipo con Deployment Manager. In seguito, tu e gli altri utenti con accesso al progetto potrete chiamare questo tipo e implementarlo nelle configurazioni future.
Per chiamare un tipo composito nella configurazione, utilizza:
type: [PROJECT_ID]/composite:[TYPE_NAME]
Ad esempio:
resources:
- name: my-composite-type
type: myproject/composite:example-composite-type
Per scoprire come creare un tipo composito, consulta Aggiunta di un tipo composito a Deployment Manager.
Manifest
Un manifest è un oggetto di sola lettura che contiene la configurazione originale fornita, inclusi eventuali modelli importati, nonché l'elenco delle risorse completamente espanso creato da Deployment Manager. Ogni volta che aggiorni un deployment, Deployment Manager genera un nuovo file manifest per riflettere il nuovo stato del deployment. Quando risolvi un problema relativo a un deployment, è utile visualizzare il manifest.
Per ulteriori informazioni, consulta Visualizzare un manifest.
Deployment
Un deployment è una raccolta di risorse di cui viene eseguito il deployment e la gestione insieme utilizzando una configurazione.
Per ulteriori informazioni, consulta la sezione Creare un deployment.
Passaggi successivi
- Consulta la guida rapida di Deployment Manager.
- Segui la guida passo passo.
- Scopri di più sulle configurazioni e su come eseguire implementazioni.