Como armazenar modelos em um host externo

Este documento descreve como usar na implantação modelos externos que estejam hospedados em algum lugar na Internet, e não na máquina local.

Você pode armazenar modelos em um host externo em qualquer lugar da Internet e chamá-los de dentro da configuração. A hospedagem externa dos modelos tem determinadas vantagens em relação à hospedagem local dos modelos:

  • facilidade para compartilhar modelos com outras pessoas
  • verifica sempre se as configurações usam o modelo mais atualizado
  • gerenciamento automático de importações e esquemas relevantes

O Deployment Manager recupera a versão mais recente de modelos externos sempre que você reimplanta a configuração. Se você mantiver os modelos, as implantações sempre estarão atualizadas também. O Deployment Manager também lidará com a importação de outros modelos dependentes para você se forem referenciados no modelo externo.

Exemplo

Esta configuração importa um modelo externo:

resources:
- name: my-frontend
  type: gs://my-frontend-templates/webserver-frontend.jinja

Antes de começar

Hospedagem de modelos externos

Você pode hospedar modelos externos no Google Cloud Storage ou em um local de acesso público, como o GitHub. Desde que haja um URL para o arquivo e você tenha acesso aos modelos, o Deployment Manager poderá fazer o download dele. Caso o arquivo use um esquema para importar outros modelos, é preciso hospedar também esses modelos no mesmo URL base.

No Google Cloud Storage

Para hospedar modelos no Google Cloud Storage:

  1. Crie um bucket para os modelos ou use um atual.
  2. Faça o upload dos modelos e dos respectivos arquivos relacionados, por exemplo, esquemas, para o bucket.
  3. Caso você pretenda usar os modelos de um projeto do Google Cloud Platform diferente do projeto a que os modelos pertencem, defina controles de acesso para permitir esse acesso.

A hospedagem de modelos no Google Cloud Storage permite controlar quem tem acesso aos modelos porque você pode definir opções de controle de acesso no respectivo repositório do Cloud Storage ou no modelo específico.

Por outro lado, a hospedagem dos modelos em outros URLs de acesso público requer que você disponibilize amplamente os modelos.

Em um URL de acesso público

Você também pode hospedar modelos externos fora do Google Cloud Storage, desde que os modelos tenham acesso público. Por exemplo, você pode hospedar modelos no GitHub e referir-se a eles usando o URL do GitHub.

Especificamente para o GitHub, você precisa do URL bruto para que o Deployment Manager receba o modelo em vez da página HTML do GitHub. Por exemplo, um URL bruto é assim:

https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/jinja/vm_template.jinja

Chamada de um modelo externo

Chame um modelo externo como você faria com um local, mas forneça o URL completo dele conforme digita. Por exemplo:

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

Para um URL do GitHub:

resources:
- name: my-salt-cluster
  type: https://raw.githubusercontent.com/GoogleCloudPlatform/deploymentmanager-samples/master/examples/v2/single_vm/vm_template.jinja

Caso um modelo externo importe outros modelos ou haja um esquema complementar, você pode armazenar os arquivos relacionados no mesmo diretório ou no subdiretório relativo e incluir esses outros modelos com um URL relativo. O Deployment Manager vai procurá-los usando o caminho relativo baseado no URL base.

Por exemplo, caso a configuração seja assim:

resources:
- name: my-salt-cluster
  type: gs://v2/saltstack/salt_cluster.jinja

E haja um arquivo de esquema denominado salt_cluster.jinja.schema que importou esses arquivos:

imports:
- path: minion.py
- path: master.py
- path: examples/source/example.py

O Deployment Manager faz o download e importa automaticamente todos os arquivos necessários para o modelo.