Concetti fondamentali di Deployment Manager

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 esempio my-vm, project-data-disk, the-test-network.
  • type: il tipo di risorsa di cui viene eseguito il deployment, ad esempio compute.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 esempio zone: asia-east1-a, boot: true.

Ecco una configurazione di esempio:

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 il giorno crei un modello, puoi riutilizzarlo in vari deployment in base alle esigenze. Analogamente, se ti capita di riscrivere configurazioni che condividono proprietà, 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. Deployment Manager interpreterà ogni modello in modo ricorsivo e incorporerà i risultati all'interno il 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, leggi Creazione di 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, devi fornire un Tipo per quella risorsa. Consulta: per ulteriori informazioni 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 dei tipi di base gestiti da Google che possono essere usate immediatamente. Puoi trovare un elenco di questi tipi nella documentazione relativa a Proprietà e tipi di risorse supportati.

Tipi di base e fornitori di tipi

Un tipo di base crea una singola risorsa primitiva. Ad esempio, Di proprietà di Google i tipi di base includono compute.v1.instance, storage.v1.bucket e sqladmin.v1beta4.database, tutti serviti dal rispettivo server di computing API Engine V1, API Cloud Storage V1 e API Admin Cloud SQL v1beta4.

I tipi di base sono supportati da un'API RESTful che supporta le possibilità di creazione, lettura, aggiornamento e le operazioni 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 dei tipi espone tutte le risorse di un'API come base tipi che puoi utilizzare. Per creare un provider di tipi, devi fornire un Documento descrittore API, che può essere una specifica OpenAPI o un Google Discovery, modifica eventuali mappature di input necessarie per l'API e registra il tipo con Deployment Manager. Una volta creato, e gli altri utenti con accesso al tuo progetto possono usare i tipi forniti dalla o il provider di servizi di terze parti.

Quando aggiungi un provider di tipi, tutte le risorse fornite dall'API e supportate da un'interfaccia RESTful con operazioni di creazione, lettura, aggiornamento ed eliminazione (CRUD) verranno esposte come tipi che puoi utilizzare nel tuo deployment.

La creazione di un provider di tipo personalizzato è uno scenario avanzato e Google consiglia è bene eseguire questa operazione solo se si conosce bene l'API che si desidera per l'integrazione.

Per scoprire come creare un provider dei 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 dei tipi, usa:

    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 dei tipi di base quando viene eseguito il deployment 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 la soluzione sia facilmente riutilizzabile, 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 composto 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 la sezione Visualizzare un manifest.

Deployment

Un deployment è una raccolta di risorse di cui viene eseguito il deployment e che vengono gestite utilizzando una configurazione.

Per ulteriori informazioni, consulta la sezione Creare un deployment.

Passaggi successivi