Aggiunta di un modello come tipo composito

Questa pagina descrive come creare un tipo composito con Deployment Manager. Dopo aver creato un tipo composito, puoi richiamarlo nella configurazione e creare deployment.

Un tipo composito è costituito da uno o più modelli configurati per lavorare insieme che sono stati aggiunte in modo permanente a Deployment Manager. Una volta aggiunto, puoi utilizzare un tipo composito come faresti con un tipo di proprietà di Google. Per saperne di più sui tipi, leggi le Panoramica dei tipi.

Ad esempio, puoi creare un insieme di modelli che eseguono il deployment di un gruppo di istanze gestite bilanciato in base al carico di rete. Puoi aggiungere questi modelli come tipo composito Deployment Manager e può quindi utilizzare il modello nelle configurazioni future man mano che può utilizzare altri tipi.

Potrebbero interessarti anche Condivisione dei tipi tra progetti.

Prima di iniziare

Componenti di un tipo composito

Per creare un tipo composto, 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 compositi possono essere costituiti da risorse che sono a loro volta altri tipi compositi. Deployment Manager espanderà in modo ricorsivo questi tipi durante il deployment.

Un tipo composito è costituito da:

  • Un modello di primo livello: il modello di primo livello. Modello Jinja o Python eseguite durante l'espansione quando viene chiamato il tipo.
  • Uno schema: il file JSON Schema che descrive le informazioni sul modello di primo livello e su eventuali importazioni secondarie definite.
  • File importati: eventuali file aggiuntivi necessari per l'esecuzione, ad esempio file helper, modelli secondari, e gli schemi pertinenti per i modelli secondari, se applicabili. Questa opzione è facoltativa. in ogni caso. Il tipo composito può anche contenere un solo modello di primo livello.

Creazione di un tipo composto

Puoi creare un tipo composito registrando il modello di primo livello di una configurazione e le relative 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 composito.

gcloud

Devi trovarti nella directory in cui hai archiviato il modello di primo livello e i modelli secondari che fanno parte di questo tipo composito, al fine di questo comando.

Utilizzando l'interfaccia a riga di comando gcloud, effettua una richiesta types create e specifica il modello di primo livello e il nome del tipo desiderato per chiamare questo tipo composito. Esegui questo comando nella directory locale in cui si trovano i file dei modelli.

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

dove:

  • [TYPE_NAME] è il nome con cui 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 contenente i campi composite e name. Nel campo composite, definisci:

  • Lo schema di primo livello
  • I contenuti dei modelli importati
  • I contenuti del modello di primo livello

Il corpo della richiesta dell'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, consulta Creazione di un tipo composito gruppo di istanze gestite con scalabilità automatica. Per ulteriori informazioni, consulta la documentazione del metodo insert.

Deployment di un tipo composito

I tipi sono una risorsa per progetto e sono accessibili in base alle autorizzazioni descritte nella documentazione del Controllo degli accessi. Ossia:

  • Gli editor e gli spettatori dei progetti, nonché gli editor di tipi possono creare e utilizzare i tipi disponibili per il progetto.
  • I visualizzatori dei tipi possono visualizzare un elenco dei tipi e utilizzare quelli disponibili per il progetto.

Puoi anche aggiungere un altro progetto come visualizzatore di 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 dei 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 la CLI Google Cloud. Invece di creare una configurazione di primo livello gcloud CLI genererà automaticamente una configurazione di primo livello per te.

Ad esempio, il seguente comando esegue il deployment di un tipo composto denominato 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 l'--properties Segnala:

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

Tieni presente che:

  • Tutti i valori vengono analizzati come valori YAML. Ad esempio, version: 3 viene trasmesso sotto forma di numero intero. Se vuoi specificarla come stringa, inserisci il carattere di escape singolo. tra virgolette intorno al valore, version: \'3\'.

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

  • Devi trasferire tutte le proprietà obbligatorie definite dal tipo composto. Non puoi fornire solo un sottoinsieme di proprietà. Se alcune proprietà hanno impostazioni predefinite puoi omettere la proprietà dalla riga di comando.

Per specificare più proprietà, fornisci coppie chiave:valore separate da virgole. Non importa in quale ordine specifichi 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 fornito. Puoi verificare che il deployment sia stato creato utilizzando la console Google Cloud o l'interfaccia a riga di comando gcloud. Per informazioni su come visualizzare un deployment, consulta Visualizzare un manifest.

Esempio: creazione di un tipo composto

Deployment Manager offre molte configurazioni di esempio nel repository GitHub di Deployment Manager che puoi utilizzare come tipi compositi. Per questo esempio, aggiungerai tipo composito che esegue il deployment di un servizio ad alta disponibilità con bilanciamento del carico in più zone in una singola regione. Per ulteriori informazioni, consulta esempio completo.

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

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

    gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
    
  3. Recupera un elenco di tipi per verificare che siano stati creati correttamente:

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

    gcloud beta deployment-manager types describe ha-service-example --provider composite
    
  5. Crea una nuova configurazione che esegue il deployment del tipo. Sostituisci [PROJECT_ID] con il tuo 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 devi importare alcun modello 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