Usar vários modelos

Neste passo, vai explorar um modelo que importa outros modelos.

Depois de incorporar estes modelos, a sua configuração só precisa de chamar um único modelo para criar uma implementação com todos estes recursos.

Abrir o modelo para uma rede

Abra o modelo com o nome 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

Este modelo importa outros modelos para todos os recursos na implementação: vm-template.py, vm-template-2.py para máquinas virtuais (VMs), network-template.py para uma rede e firewall-template.py para uma regra 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}

Ver a configuração

Abra o ficheiro de configuração da implementação:

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

Repare que a configuração não chamou diretamente os outros modelos. No entanto, os outros modelos são importados porque compute-engine-template.py depende dos outros modelos.

# 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

Guardar a configuração e implementá-la

Execute este comando para implementar a configuração:

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

Para ver a implementação, execute o seguinte comando:

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

Olhando para o futuro: propriedades dos modelos e variáveis de ambiente

Em seguida, vai substituir algumas partes codificadas dos modelos por padrões reutilizáveis, como o modelo personalizado e as variáveis de ambiente.

Eliminar a implementação

Recomendamos que elimine a implementação para evitar custos. Não precisa desta implementação para o passo seguinte. Execute o seguinte comando para eliminar a implementação:

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