Concetti fondamentali di Deployment Manager

I componenti seguenti rappresentano gli aspetti fondamentali di Deployment Manager.

Configurazione

Una configurazione descrive tutte le risorse necessarie per un singolo deployment. Una configurazione è un file scritto con la sintassi YAML che elenca ciascuna delle risorse che vuoi creare e le rispettive proprietà. Una configurazione deve contenere una sezione resources: seguita dall'elenco delle 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 e the-test-network.
  • type: il tipo della 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à del 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 è stato astratto in singoli componenti di base. Dopo aver creato un modello, puoi riutilizzarlo in vari deployment in base alle esigenze. Analogamente, se ti capita di 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 pensati per supportare una facile portabilità tra i deployment.

Un file di modello è scritto in Python o Jinja2. Il sistema Deployment Manager interpreterà ogni modello in modo ricorsivo e incorporerà i risultati all'interno del file di configurazione. Di conseguenza, l'interpretazione di ogni modello genera alla fine la stessa sintassi YAML per le risorse di quella definita sopra per il file di configurazione stesso.

Per creare un modello semplice, consulta la sezione 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 i contenuti dei file modello importati. Ad esempio, devi fornire una configurazione non espansa che utilizza un modello simile al seguente:

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 conterrebbe i contenuti di tutti i tuoi modelli, ad 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

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 dei tipi. Ad esempio, un'istanza Compute Engine è una risorsa singola, un'istanza di Cloud SQL è una risorsa singola e così via.

Per specificare una risorsa, devi fornire un tipo per quella 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 composto, che verrà creato nell'ambito del deployment.

Ad esempio, per creare un'istanza VM di Compute Engine, specifica il tipo di base corrispondente nella tua 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 gestito da Google che puoi utilizzare immediatamente. Puoi trovare un elenco di questi tipi nella documentazione Tipi di risorse e proprietà 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 gestiti dall'API Compute Engine V1, dall'API Cloud Storage V1 e dall'API Cloud SQL v1beta4 Admin.

I tipi di base sono supportati da un'API RESTful che supporta le operazioni CRUD (Create, Read, Update ed Delete). Puoi anche creare tipi di base aggiuntivi aggiungendo un provider di tipi se i tipi di proprietà di Google da soli 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 API, che può essere una specifica OpenAPI o Google Discovery, modificare eventuali mappature di input necessarie per l'API e registrare il tipo in Deployment Manager. Una volta creato, tu e gli altri utenti con accesso al progetto potete utilizzare i tipi forniti dal provider.

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 utilizzabili nel deployment.

La creazione di un provider di tipi personalizzato è uno scenario avanzato e Google ti consiglia di eseguire questa operazione solo se hai familiarità con l'API che vuoi integrare.

Per informazioni su come creare un provider di tipi, consulta Integrazione con Deployment Manager.

Quando chiami un tipo di base nei modelli o nelle configurazioni, utilizzi 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 di cui eseguire il deployment.

Tipi composti

Un tipo composto contiene uno o più modelli preconfigurati per l'interazione. Questi modelli si espandono in un insieme di tipi di base quando viene eseguito il deployment in un deployment. I tipi composti 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 con bilanciamento del carico di rete. Un bilanciatore del carico di rete richiede più risorse Google Cloud e alcune configurazioni tra risorse, quindi puoi impostare queste risorse in una configurazione una sola volta e registrare il tipo con Deployment Manager. In seguito, tu e gli altri utenti con accesso al tuo progetto potrete chiamare quel tipo ed eseguirne il deployment 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 informazioni su come creare un tipo composto, consulta Aggiungere un tipo composto a Deployment Manager.

Manifest

Un manifest è un oggetto di sola lettura che contiene la configurazione originale fornita, inclusi eventuali modelli importati, e contiene anche 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. Per risolvere 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 insieme, utilizzando una configurazione.

Per ulteriori informazioni, consulta la sezione Creazione di un deployment.

Passaggi successivi