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 ogni risorsa che vuoi creare e le rispettive proprietà della risorsa. Una configurazione deve contiene 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, 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 Tipi di risorse supportate documentazione.
  • properties: i parametri per questo tipo di risorsa. Devono corrispondere 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 parte di configurazione di base che è stato astratto 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ù flessibile rispetto ai singoli file di configurazione e intende supportare e la facilità di portabilità tra i diversi deployment.

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 restituisce per le risorse la stessa sintassi YAML definita sopra di configurazione del deployment.

Per creare un modello semplice, leggi Creazione di un modello di base.

Le configurazioni sono definite completamente espanse o non espanse. Un'immagine completamente espansa che descrive tutte le risorse e le proprietà del deployment, inclusi eventuali contenuti di file modello importati. Ad esempio, fornisce 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 conterrà i contenuti di tutti i tuoi modelli, come in questo caso:

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 da 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: consulta la sezione Tipi di seguito per ulteriori informazioni sui tipi.

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 verranno create come parte e deployment continuo.

Ad esempio, per creare un'istanza VM di Compute Engine, specifica tipo di base come questo nella tua 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 Tipi e proprietà di risorse supportate documentazione.

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 tipi di base aggiuntivi aggiungendo un fornitore di tipi se i tipi di proprietà di Google da soli non soddisfano per soddisfare le tue esigenze. La creazione di un provider di 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 Creazione, lettura, aggiornamento ed eliminazione (CRUD) verranno esposte come tipi che puoi utilizzare nel 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 di base nei modelli o nelle configurazioni, utilizza uno dei le 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 di cui eseguire il deployment.

Tipi compositi

Un tipo composito contiene uno o più modelli che sono 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 carico di rete gruppo di istanze gestite bilanciato. Un bilanciatore del carico di rete richiede le risorse Google Cloud e alcune configurazioni tra le risorse, puoi impostare queste risorse in una configurazione una sola volta e registrare il tipo con con Deployment Manager. In seguito, tu e gli altri utenti con accesso al progetto chiamare quel tipo ed eseguirne il deployment nelle configurazioni future.

Per chiamare un tipo composito nella tua 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 file manifest è un oggetto di sola lettura che contiene la configurazione originale specificato, inclusi eventuali modelli importati, e contiene inoltre la dimensione creato da Deployment Manager. Ogni volta che aggiorni un deployment, Deployment Manager genera un nuovo file manifest per riflettere il nuovo stato e deployment continuo. Durante la risoluzione di un problema con un deployment, è utile per visualizzare il file manifest.

Per ulteriori informazioni, vedi Visualizzazione di 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, vedi Creazione di un deployment.

Passaggi successivi