Usa varias plantillas

En este paso, explorarás una plantilla que importa otras plantillas.

Después de incorporar estas plantillas, tu configuración solo necesita llamar a una plantilla única para crear una implementación con todos estos recursos.

Abre la plantilla para una red

Abre la plantilla llamada compute-engine-template.py:

cd deploymentmanager-samples/examples/v2/step_by_step_guide/step6_use_multiple_templates/python

nano compute-engine-template.py  # use your preferred text editor

Esta plantilla importa otras plantillas para todos los recursos en la implementación: vm-template.py, vm-template-2.py para máquinas virtuales, network-template.py para una red y firewall-template.py para una regla de firewall.

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Creates the Compute Engine."""

def GenerateConfig(context):
  """Creates the Compute Engine with network and firewall."""

  resources = [{
      'name': 'vm-1',
      'type': 'vm-template.py'
  }, {
      'name': 'vm-2',
      'type': 'vm-template-2.py'
  }, {
      'name': 'network-1',
      'type': 'network-template.py'
  }, {
      'name': 'firewall-1',
      'type': 'firewall-template.py'
  }]
  return {'resources': resources}

Visualiza la configuración

Abre el archivo de configuración para la implementación:

cd deploymentmanager-samples/examples/v2/step_by_step_guide/step6_use_multiple_templates/python

nano config-with-many-templates.yaml  # use your preferred text editor

Ten en cuenta que la configuración no llamó de forma directa a las otras plantillas. Sin embargo, las otras plantillas se importan porque compute-engine-template.py depende de las otras plantillas.

# Copyright 2016 Google Inc. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

imports:
- path: vm-template.py
- path: vm-template-2.py
- path: network-template.py
- path: firewall-template.py
- path: compute-engine-template.py

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

Guarda la configuración y, luego, impleméntala

Ejecuta este comando para implementar la configuración:

gcloud deployment-manager deployments create deployment-with-many-templates \
  --config config-with-many-templates.yaml

Ejecuta el siguiente comando para ver la implementación:

gcloud deployment-manager deployments describe deployment-with-many-templates

De cara al futuro: propiedades de la plantilla y variables de entorno

A continuación, reemplazarás algunas partes codificadas de las plantillas con patrones que puedes volver a usar como plantillas personalizadas y variables de entorno.

Borrar tu implementación

Te recomendamos borrar la implementación para evitar cambios. No necesitas esta implementación para el siguiente paso. Ejecuta el siguiente comando para borrar la implementación:

gcloud deployment-manager deployments delete deployment-with-many-templates