Aggiunta di un modello come tipo composito

In questa pagina viene descritto come creare un tipo composto con Deployment Manager. Dopo aver creato un tipo composto, puoi chiamarlo nella tua configurazione e creare deployment.

Un tipo composito è costituito da uno o più modelli configurati per l'utilizzo insieme e aggiunti in modo permanente a Deployment Manager. Dopo averlo aggiunto, puoi usare un tipo composito come faresti con un tipo di proprietà di Google. Per ulteriori informazioni sui tipi, consulta la Panoramica dei tipi.

Ad esempio, puoi creare un insieme di modelli che eseguono il deployment di un gruppo di istanze gestite con bilanciamento del carico di rete. Puoi aggiungere questi modelli come tipo composito a Deployment Manager e utilizzare il modello in configurazioni future come faresti con altri tipi.

Potrebbe interessarti anche l'articolo Condividere i tipi tra i progetti.

Prima di iniziare

Componenti di tipo composito

Per creare un tipo composito, devi avere un modello Jinja o Python di primo livello e, facoltativamente, un insieme di file di supporto che alla fine si risolvono in tipi di base. I tipi composti possono essere costituiti da risorse che sono a loro volta altri tipi composti. Deployment Manager espanderà in modo ricorsivo questi tipi durante il deployment.

Un tipo composto è costituito da:

  • Un modello di primo livello: il modello Jiinja o Python di primo livello eseguito durante l'espansione, quando viene chiamato il tipo.
  • Uno schema: il file Schema JSON che descrive le informazioni sul modello di primo livello e su eventuali importazioni secondarie definite.
  • File importati: eventuali file aggiuntivi necessari per l'esecuzione, come i file di supporto, i sub-templates e gli schemi pertinenti per i modelli secondari, se applicabile. ma è facoltativo. Il tipo composto può anche contenere solo un singolo modello di primo livello.

Creazione di un tipo composto

Puoi creare un tipo composto registrando il modello di primo livello di una configurazione e le importazioni e lo schema associati. Crea un tipo composito utilizzando gcloud o l'API.

Potrebbe interessarti anche l'esempio che descrive come creare e chiamare un tipo composto.

gcloud

Per eseguire questo comando, devi trovarti nella directory in cui hai archiviato il modello di primo livello e i sottomodelli che fanno parte di questo tipo composito.

Utilizzando gcloud CLI, effettua una richiesta types create e specifica il modello di primo livello e il nome del tipo desiderato da chiamare questo tipo composito. Esegui questo comando nella directory locale in cui si trovano i file del modello.

$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]

dove:

  • [TYPE_NAME] è il nome che vuoi chiamare questo tipo
  • [TOP_LEVEL_TEMPLATE] è il percorso relativo al modello di primo livello che descrive questo tipo.

API

Nell'API, effettua una richiesta POST che contenga i campi composite e name. Nel campo composite, definisci:

  • Lo schema di primo livello
  • Contenuti dei modelli importati
  • Contenuti del modello di primo livello

Il corpo della richiesta API ha la seguente struttura:

POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes

{
 "composite": {
  "files": {
   "schema": "[CONTENTS_OF_SCHEMA]",
   "imports": [
    {
     "name": "[TEMPLATE_FILE]",
     "content": "[CONTENTS_OF_TEMPLATE_FILE]"
    },
    {
     "name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
     "content": "[CONTENTS_OF_TEMPLATES]"
    }
   ],
   "template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
   "templateFileType": "[FILE_TYPE]"
  }
 },
 "name": "[TYPE_NAME]"
}

Per un esempio su come creare queste richieste, vedi Creazione di un tipo composito di gruppo di istanze gestite con scalabilità automatica. Per ulteriori informazioni, consulta la documentazione relativa al metodo insert.

Deployment di un tipo composito

I tipi sono risorse a livello di progetto e sono accessibili in base alle autorizzazioni descritte nella documentazione sul controllo degli accessi. Ossia:

  • Gli editor e i visualizzatori del progetto e gli editor dei tipi possono creare e utilizzare i tipi disponibili per il progetto.
  • I visualizzatori dei tipi possono visualizzare un elenco dei tipi e utilizzarne i tipi disponibili per il progetto.

Puoi anche aggiungere un altro progetto come visualizzatore dei tipi in modo che possa accedere ai tuoi tipi. Leggi l'articolo Condivisione dei tipi tra progetti.

Dopo aver registrato un tipo composito, puoi eseguirne il deployment nello stesso modo in cui chiami i tipi gestiti da Google:

types: [PROJECT_ID]/composite:[TYPE_NAME]

Ad esempio:

resources:
- name: my example-resource
  type: example-project/composite:autoscaled-igm
  properties:
  ...

Deployment di un tipo composito direttamente con lo strumento a riga di comando

Deployment Manager offre la possibilità di eseguire il deployment di un tipo composito direttamente con Google Cloud CLI. Anziché creare un file di configurazione di primo livello, gcloud CLI genererà automaticamente una configurazione di primo livello.

Ad esempio, il seguente comando esegue il deployment di un tipo composto chiamato autoscaled-igm:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm

Puoi anche impostare le proprietà del tipo composto utilizzando il flag --properties:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm \
    --properties zone:us-central1-a

Tieni presente quanto segue:

  • Tutti i valori vengono analizzati come valori YAML. Ad esempio, version: 3 viene passato come numero intero. Se vuoi specificarlo come stringa, inserisci il valore version: \'3\' tra virgolette singole con caratteri di escape.

  • I valori booleani non fanno distinzione tra maiuscole e minuscole, pertanto TRUE, true e True vengono trattati allo stesso modo.

  • Devi trasmettere tutte le proprietà obbligatorie definite dal tipo composto. Non puoi fornire solo un sottoinsieme delle proprietà. Se alcune proprietà hanno valori predefiniti, puoi omettere la proprietà dalla riga di comando.

Per specificare più proprietà, fornisci coppie chiave-valore separate da virgole. Non è importante nell'ordine in cui vengono specificate le coppie. Ad esempio:

gcloud deployment-manager deployments create my-igm \
    --composite-type example-project/composite:autoscaled-igm \
    --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8

Dopo aver eseguito questo comando, Deployment Manager crea un deployment utilizzando il tipo composito che hai fornito. Puoi confermare che il deployment è stato creato utilizzando la console Google Cloud o gcloud CLI. Per informazioni sulla visualizzazione di un deployment, consulta Visualizzare un manifest.

Esempio: creare un tipo composto

Deployment Manager offre molti esempi di configurazioni del repository GitHub di Deployment Manager che puoi utilizzare come tipi composti. Per questo esempio, aggiungerai un tipo composito che esegue il deployment di un servizio ad alta disponibilità con bilanciamento del carico in più zone all'interno di un'unica regione. Per ulteriori informazioni, vedi l'esempio completo.

In questo esempio, il file di configurazione di primo livello è il file ha-service.py. Tutti i modelli secondari vengono importati nei file di schema.

  1. Scarica i file Python e di schema dalla directory GitHub. Ometti eventuali file nella sottodirectory e tutti i file di diagramma.
  2. Nella directory locale in cui hai scaricato tutti i file, esegui questo comando per creare un nuovo tipo composito chiamato ha-service-example:

    gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
    
  3. Ottieni un elenco di tipi per confermare che il tipo è stato creato correttamente:

    gcloud beta deployment-manager types list --provider composite
    
  4. Descrivi il nuovo tipo:

    gcloud beta deployment-manager types describe ha-service-example --provider composite
    
  5. Crea una nuova configurazione che esegua il deployment del tipo. Sostituisci [PROJECT_ID] con l'ID progetto:

    resources:
    - name: ha-service-example
      type: [PROJECT_ID]/composite:ha-service-example
      properties:
        dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic
        zones:
        - us-central1-b
        - us-central1-a
    

    Salva la configurazione come example-config.yaml. Nota che non hai dovuto importare modelli nella tua configurazione.

  6. Esegui il deployment del nuovo tipo composito:

    gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
    

    L'API restituisce un elenco di risorse create dal tipo:

    Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done.
    Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully.
    NAME                                            TYPE                             STATE      ERRORS  INTENT
    ha-service-deployment-lb-fr                      compute.v1.forwardingRule        COMPLETED  []
    ha-service-deployment-lb-hc                      compute.v1.httpHealthCheck       COMPLETED  []
    ha-service-deployment-lb-tp                      compute.v1.targetPool            COMPLETED  []
    ha-service-deployment-service-us-central1-a-as   compute.v1.autoscaler            COMPLETED  []
    ha-service-deployment-service-us-central1-a-igm  compute.v1.instanceGroupManager  COMPLETED  []
    ha-service-deployment-service-us-central1-a-it   compute.v1.instanceTemplate      COMPLETED  []
    ha-service-deployment-service-us-central1-b-as   compute.v1.autoscaler            COMPLETED  []
    ha-service-deployment-service-us-central1-b-igm  compute.v1.instanceGroupManager  COMPLETED  []
    ha-service-deployment-service-us-central1-b-it   compute.v1.instanceTemplate      COMPLETED  []

Congratulazioni, hai creato il tuo primo tipo composito.

Passaggi successivi