Consulter un fichier manifeste

Chaque déploiement est associé à un fichier manifeste. Un fichier manifeste est une propriété en lecture seule qui décrit toutes les ressources de votre déploiement. Il est créé automatiquement avec chaque nouveau déploiement. Un fichier manifeste ne peut pas être modifié après sa création. Il diffère du fichier de configuration, mais il en est dérivé.

Avant de commencer

Structure du fichier manifeste

Un fichier manifeste fournit trois vues d'un déploiement :

  • La configuration initiale
  • La configuration entièrement évaluée après l'expansion de l'ensemble des modèles et des importations
  • La disposition du déploiement décrivant toutes les ressources du déploiement de manière hiérarchique

Configuration d'origine

La configuration d'origine correspond à la configuration que vous avez fournie au déploiement, avant l'expansion des modèles. La configuration initiale est indiquée par la propriété config :

config: |
      imports:
      - path: vm-template.jinja
      - path: network-template.jinja
      - path: firewall-template.jinja
      - path: compute-engine-template.jinja

      resources:
      - name: compute-engine-setup
        type: compute-engine-template.jinja
    

Configuration développée

La configuration développée est une description complète du déploiement, comprenant toutes les ressources et leurs propriétés, après traitement de tous vos modèles. Il s'agit de l'état final de la configuration.

La partie de la configuration développée du fichier manifeste est indiquée par la propriété expandedConfig :

    expandedConfig: |
      resources:
      - name: datadisk-example-config-with-templates
        properties:
          sizeGb: 100
          type: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/diskTypes/pd-standard
          zone: us-central1-a
        type: compute.v1.disk
      - name: vm-example-config-with-templates
        properties:
          disks:
          - autoDelete: true
            boot: true
            deviceName: boot
            initializeParams:
              diskName: disk-example-config-with-templates
              sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619
            type: PERSISTENT
          - autoDelete: true
            deviceName: datadisk-example-config-with-templates
            source: $(ref.datadisk-example-config-with-templates.selfLink)
            type: PERSISTENT
          machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro
          metadata:
            items:
            - key: startup-script
              value: |
                #!/bin/bash
                python -m SimpleHTTPServer 8080
          networkInterfaces:
          - accessConfigs:
            - name: External NAT
              type: ONE_TO_ONE_NAT
            network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default
          zone: us-central1-a
        type: compute.v1.instance
    

Modèles importés

La propriété imports du fichier manifeste répertorie le contenu des modèles que vous avez importés pour cette configuration. La partie des importations est indiquée par la section imports :

    imports:
    - content: |
        resources:
        - name: {{ env["name"] }}          type: compute.v1.instance
          properties:
            disks:
            - autoDelete: true
              type: PERSISTENT
              boot: true
              deviceName: boot
              initializeParams:
                sourceImage:  https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619
            machineType: https://www.googleapis.com/compute/v1/projects/{{ env["project"] }}/zones/{{ properties["zone"] }}/machineTypes/{{ properties["machineType"] }}            networkInterfaces:
            - network: $(ref.{{ properties["network"] }}.selfLink)
              accessConfigs:
              - name: External NAT
                type: ONE_TO_ONE_NAT
            zone: {{ properties["zone"] }}            metadata:
              items:
              - key: startup-script
                value: |
                  #!/bin/bash
                  INSTANCE=$(curl http://metadata.google.internal/computeMetadata/v1/instance/hostname -H "Metadata-Flavor: Google")
                  echo "<html><header><title>Hello from Deployment Manager!</title></header>
                  <body><h2>Hello from $INSTANCE</h2>
                  <p>Deployment Manager bids you good day!</p>
                  </body>
                  </html>" > index.html
                  python -m SimpleHTTPServer 80
      name: vm-template.jinja
    - content: |
        resources:
        - name: {{ env["name"] }}          type: compute.v1.network
          properties:
            IPv4Range: 10.0.0.1/16
      name: network-template.jinja
    - content: |
        resources:
        - name: {{ env["name"]}}          type: compute.v1.firewall
          properties:
            network: $(ref.{{ properties["network"] }}.selfLink)
            sourceRanges: ["0.0.0.0/0"]
            allowed:
            - IPProtocol: TCP
              ports: ["80"]
      name: firewall-template.jinja
    - content: |
        {% set  NETWORK_NAME = "a-new-network" %}

        resources:
        - name: the-first-vm
          type: vm-template.jinja
          properties:
            machineType: f1-micro
            zone: us-central1-f
            network: {{ NETWORK_NAME }}        - name: the-second-vm
          type: vm-template.jinja
          properties:
            machineType: g1-small
            zone: us-central1-f
            network: {{ NETWORK_NAME }}        - name: {{ NETWORK_NAME }}          type: network-template.jinja
        - name: {{ NETWORK_NAME }}-firewall
          type: firewall-template.jinja
          properties:
            network: {{ NETWORK_NAME }}      name: compute-engine-template.jinja
    

Disposition

La disposition est un aperçu du déploiement et de ses ressources, affichant les noms et types de ressources.

Elle vous permet de visualiser la structure de votre déploiement, ainsi que de consulter les propriétés de modèle définies lors du déploiement initial et d'autres informations concernant votre configuration avant son expansion.

Dans votre fichier manifeste, vous pouvez voir la disposition dans la propriété layout :

layout: |
      resources:
      - name: compute-engine-setup
        resources:
        - name: the-first-vm
          properties:
            machineType: f1-micro
            network: a-new-network
            zone: us-central1-f
          resources:
          - name: the-first-vm
            type: compute.v1.instance
          type: vm-template.jinja
        - name: the-second-vm
          properties:
            machineType: g1-small
            network: a-new-network
            zone: us-central1-f
          resources:
          - name: the-second-vm
            type: compute.v1.instance
          type: vm-template.jinja
        - name: a-new-network
          resources:
          - name: a-new-network
            type: compute.v1.network
          type: network-template.jinja
        - name: a-new-network-firewall
          properties:
            network: a-new-network
          resources:
          - name: a-new-network-firewall
            type: compute.v1.firewall
          type: firewall-template.jinja
        type: compute-engine-template.jinja
    

Identifier un fichier manifeste

Vous pouvez identifier un fichier manifeste à l'aide de son identifiant unique, au format manifest-TIMESTAMP. Exemple :

manifest-1436393348324
    

Vous pouvez généralement obtenir l'ID du fichier manifeste en affichant des informations sur le déploiement correspondant ou en répertoriant les fichiers manifestes d'un déploiement.

gcloud

Avec l'outil de ligne de commande gcloud, utilisez la sous-commande deployments describe :

gcloud deployment-manager deployments describe example-deployment
    

gcloud renvoie un résultat semblable à celui-ci :

    id: '7428522736135856060'
    manifest: https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments/example-deployment/manifests/manifest-1436393348324
    name: example-deployment
    resources:
    NAME    TYPE      ID     STATE   ERRORS
    ...
    

API

Dans l'API, effectuez une requête GET en indiquant le nom du déploiement :

GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments/example-deployment-with-config
    

Vous devriez obtenir un résultat semblable à celui-ci :

    {
     "id": "5899501332770090517",
     "creationTimestamp": "2015-03-30T15:40:58.809-07:00",
     "name": "example-deployment-with-config",
     "fingerprint": "",
     "manifest": "https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-deployment-with-config/manifests/manifest-1427755258810-2b3498d9-530b-4f8e-b014-0342d3c9c66b",
     "state": "DEPLOYED"
    }

Afficher un fichier manifeste

Vous pouvez afficher un fichier manifeste en envoyant une requête get() à une ressource "Manifest", ou via Google Cloud Console ou gcloud.

Console

Pour afficher un fichier manifeste d'un déploiement dans Google Cloud Console, procédez comme suit :

  1. Accédez à la page Déploiements de Cloud Console.
  2. Dans la liste, cliquez sur le déploiement que vous souhaitez afficher.
  3. Dans les détails du déploiement, cliquez sur Aperçu.

gcloud

Avec l'outil de ligne de commande gcloud, affichez le fichier manifeste complet à l'aide de la commande manifests describe. La commande présente le fichier manifeste complet, ainsi que sa disposition :

gcloud deployment-manager manifests describe manifest-1436393348324 \
        --deployment example-config-with-templates
    

gcloud renvoie un résultat semblable à celui-ci :

     config: |
       imports: ["vm_template.jinja"]

resources:

  • name: vm-instance type: vm_template.jinja properties: zone: us-central1-a project: myproject creationTimestamp: '2015-03-30T15:40:58.815-07:00' evaluatedConfig: | resources:
  • name: datadisk-example-config-with-templates properties: sizeGb: 100 type: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/diskTypes/pd-standard zone: us-central1-a type: compute.v1.disk
  • name: vm-example-config-with-templates properties: disks:
    • autoDelete: true boot: true deviceName: boot initializeParams: diskName: disk-example-config-with-templates sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619 type: PERSISTENT
    • autoDelete: true deviceName: datadisk-example-config-with-templates source: $(ref.datadisk-example-config-with-templates.selfLink) type: PERSISTENT machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro metadata: items:
      • key: startup-script value: | #!/bin/bash python -m SimpleHTTPServer 8080 networkInterfaces:
    • accessConfigs:
      • name: External NAT type: ONE_TO_ONE_NAT network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default zone: us-central1-a type: compute.v1.instance id: '7174699452487462421' layout: | resources:
  • name: vm-instance type: vm_template.jinja properties: project: myproject zone: us-central1-a resources:
    • name: datadisk-example-config-with-templates type: compute.v1.disk
    • name: vm-example-config-with-templates type: compute.v1.instance name: manifest-1427755258810-2b3498d9-530b-4f8e-b014-0342d3c9c66b selfLink: https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-config-with-templates/manifests/manifest-1436393348324

API

Dans l'API, indiquez le nom du déploiement et le nom du fichier manifeste dans une requête GET :

 GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments/example-deployment/manifests/manifest-1436393348324
    

Vous devriez obtenir un résultat semblable à celui-ci :

    {
     "id": "7174699452487462421",
     "selfLink": "https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/example-config-with-templates/manifests/manifest-1436393348324",
     "creationTimestamp": "2015-03-30T15:40:58.815-07:00",
     "name": "manifest-1427755258810-2b3498d9-530b-4f8e-b014-0342d3c9c66b",
     "config": "imports: [\"vm_template.jinja\"]\n\nresources:\n- name: vm-instance\n  type: vm_template.jinja\n  properties:\n    zone: us-central1-a\n    project: myproject\n",
     "evaluatedConfig": "resources:\n- name: datadisk-example-config-with-templates\n  properties:\n    sizeGb: 100\n    type: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/diskTypes/pd-standard\n    zone: us-central1-a\n  type: compute.v1.disk\n- name: vm-example-config-with-templates\n  properties:\n    disks:\n    - autoDelete: true\n      boot: true\n      deviceName: boot\n      initializeParams:\n        diskName: disk-example-config-with-templates\n        sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20140619\n      type: PERSISTENT\n    - autoDelete: true\n      deviceName: datadisk-example-config-with-templates\n      source: $(ref.datadisk-example-config-with-templates.selfLink)\n      type: PERSISTENT\n    machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/f1-micro\n    metadata:\n      items:\n      - key: startup-script\n        value: |\n          #!/bin/bash\n          python -m SimpleHTTPServer 8080\n    networkInterfaces:\n    - accessConfigs:\n      - name: External NAT\n        type: ONE_TO_ONE_NAT\n      network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\n    zone: us-central1-a\n  type: compute.v1.instance\n",
     "layout": "resources:\n- name: vm-instance\n  properties:\n    project: myproject\n    zone: us-central1-a\n  resources:\n  - name: datadisk-example-config-with-templates\n    type: compute.v1.disk\n  - name: vm-example-config-with-templates\n    type: compute.v1.instance\n  type: vm_template.jinja\n"
    }