Melihat Manifes

Setiap deployment memiliki manifes yang sesuai. Manifes adalah properti hanya-baca yang mendeskripsikan semua resource dalam deployment Anda dan dibuat secara otomatis dengan setiap deployment baru. Manifes tidak dapat diubah setelah dibuat. Manifes tidak sama dengan file konfigurasi, tetapi dibuat berdasarkan file konfigurasi.

Sebelum memulai

Struktur manifes

Manifes menyediakan tiga tampilan deployment:

  • Konfigurasi awal
  • Konfigurasi yang dievaluasi sepenuhnya setelah semua template dan impor diperluas
  • Tata letak deployment, yang menjelaskan semua resource untuk deployment dalam struktur hierarki.

Konfigurasi asli

Konfigurasi asli adalah konfigurasi yang Anda berikan ke deployment, sebelum perluasan template apa pun. Konfigurasi awal ditunjukkan oleh properti 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

Konfigurasi yang diperluas

Konfigurasi yang diperluas adalah deskripsi lengkap tentang deployment Anda, termasuk semua resource dan propertinya, setelah memproses semua template Anda. Ini adalah status akhir konfigurasi Anda.

Bagian konfigurasi yang diperluas dari manifes Anda ditunjukkan oleh properti 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 http.server 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

Template yang diimpor

Properti imports dalam manifes Anda menampilkan konten template apa pun yang Anda impor untuk konfigurasi ini. Bagian impor manifes Anda ditunjukkan oleh bagian 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 http.server 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

Tata Letak

Tata letak adalah garis besar deployment Anda dan resource-nya, serta menampilkan nama dan jenis resource.

Gunakan tata letak untuk memvisualisasikan struktur deployment Anda, properti template tampilan yang ditetapkan selama deployment awal, dan informasi lainnya tentang konfigurasi Anda sebelum diperluas.

Dalam manifes, Anda dapat melihat tata letak di properti 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

Mengidentifikasi manifes

Anda dapat mengidentifikasi manifes berdasarkan ID uniknya, dalam format manifest-TIMESTAMP. Contoh:

manifest-1436393348324

Biasanya, Anda bisa mendapatkan ID manifes dengan mendapatkan informasi tentang deployment yang sesuai, atau dengan mencantumkan manifes untuk deployment.

gcloud

Dengan Google Cloud CLI, gunakan sub-perintah deployments describe:

gcloud deployment-manager deployments describe example-deployment

gcloud menampilkan respons yang mirip dengan berikut ini:

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

Di API, buat permintaan GET, dengan memberikan nama deployment dalam permintaan:

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

Anda akan melihat respons seperti berikut:

{
 "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"
}

Melihat manifes

Anda dapat melihat manifes dengan membuat permintaan get() ke resource Manifes atau melalui Konsol Google Cloud atau gcloud.

Konsol

Untuk melihat manifes deployment di Google Cloud Console:

  1. Buka halaman Deployment di Konsol Google Cloud.
  2. Dari daftar, klik deployment yang ingin Anda lihat.
  3. Di detail deployment, klik Ringkasan.

gcloud

Dengan Google Cloud CLI, lihat manifes lengkap menggunakan perintah manifests describe. Perintah tersebut mencantumkan manifes lengkap dan tata letak:

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

gcloud menampilkan respons yang mirip dengan berikut ini:

 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 http.server 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

Di API, berikan nama deployment dan nama manifes dalam permintaan GET:

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

Anda akan melihat respons seperti berikut:

{
 "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 http.server 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"
}