Esta página descreve como criar um tipo composto com o Deployment Manager. Após criar um tipo composto, você pode chamá-lo na configuração e criar implantações.
Um tipo composto é formado por um ou mais modelos configurados para trabalhar em conjunto e que foram adicionados permanentemente ao Deployment Manager. Uma vez adicionado, você pode usar o tipo composto da mesma forma como usaria um tipo pertencente ao Google. Para saber mais sobre tipos, leia Visão geral de tipos.
Por exemplo, suponha que você criou um conjunto de modelos que implantam um grupo de instâncias de rede gerenciadas com balanceamento de carga. Você pode adicionar esses modelos ao Deployment Manager como um tipo e, depois, usá-lo em configurações futuras da mesma forma como usaria outros tipos.
Talvez também seja do seu interesse o Compartilhamento de tipos entre projetos.
Antes de começar
- Para usar os exemplos de linha de comando deste guia, instale a ferramenta de linha de comando "gcloud".
- Para usar os exemplos de API deste guia, configure o acesso de API.
- Use a API v2beta para os exemplos de API deste guia.
Componentes do tipo composto
Para criar um tipo composto, é necessário ter um modelo de nível superior em linguagem Jinja ou Python. É possível optar por ter um grupo de arquivos de suporte que, em algum momento, serão convertidos em tipos básicos. Os tipos compostos podem ser constituídos de recursos que também são outros tipos compostos. O Deployment Manager expandirá esses tipos recursivamente durante a implantação.
Um tipo composto é constituído de:
- um modelo de nível superior: o modelo Jinja ou Python de nível superior executado durante a expansão, quando o tipo é chamado.
- um esquema: o arquivo de esquema JSON com as informações sobre o modelo de nível superior e quaisquer subimportações definidas.
- arquivos importados: todos os arquivos extras necessários para a execução, como arquivos auxiliares, submodelos e esquemas relevantes para os submodelos, se aplicável. Isso é opcional. O tipo composto também pode conter somente um único modelo de nível superior.
Como criar um tipo composto
Para criar um tipo composto, registre o modelo de nível superior de uma configuração, bem como as importações e esquema associados. Crie um tipo composto usando gcloud
ou a API.
Talvez você também tenha interesse no exemplo que descreve como criar e chamar um tipo composto.
gcloud
Para executar o comando, é necessário estar no diretório em que estão armazenados o modelo de nível superior e os submodelos que fazem parte do tipo composto.
Usando a CLI gcloud, faça uma solicitação types create
e especifique
modelo de nível superior e o nome do tipo desejado para chamar o tipo composto.
Execute o comando abaixo no diretório local em que estão os arquivos do modelo.
$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]
onde:
[TYPE_NAME]
é como você pretende nomear o tipo;[TOP_LEVEL_TEMPLATE]
é o caminho relativo para o modelo de nível superior que descreve o tipo.
API
Na API, faça uma solicitação POST
contendo os campos composite
e name
. No campo composite
, defina:
- o esquema de nível superior
- os conteúdos dos modelos importados
- os conteúdos do modelo de nível superior
O corpo da solicitação da API tem a estrutura a seguir:
POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes
{
"composite": {
"files": {
"schema": "[CONTENTS_OF_SCHEMA]",
"imports": [
{
"name": "[TEMPLATE_FILE]",
"content": "[CONTENTS_OF_TEMPLATE_FILE]"
},
{
"name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
"content": "[CONTENTS_OF_TEMPLATES]"
}
],
"template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
"templateFileType": "[FILE_TYPE]"
}
},
"name": "[TYPE_NAME]"
}
Para ver um exemplo de como criar essas solicitações, consulte Como criar um tipo composto de grupo de instâncias gerenciadas com escalonamento automático.
Para mais informações, consulte a documentação do método insert
.
Como implantar um tipo composto
Os tipos são recursos por projeto. Eles podem ser acessados de acordo com as permissões descritas no documento Controle de acesso. Ou seja:
- Os editores e visualizadores de um projeto, bem como os editores de tipos podem criar e usar os tipos disponíveis nesse projeto.
- Os visualizadores de tipos podem conseguir uma lista dos tipos e usar aqueles disponíveis para o projeto.
Também é possível adicionar outro projeto como visualizador de tipos, a fim de que ele possa acessar os tipos. Leia Compartilhamento de tipos entre projetos.
Após registrar o tipo composto, você pode implantá-lo do mesmo modo como chamaria os tipos gerenciados pelo Google:
types: [PROJECT_ID]/composite:[TYPE_NAME]
Por exemplo:
resources:
- name: my example-resource
type: example-project/composite:autoscaled-igm
properties:
...
Como implantar um tipo composto diretamente com a ferramenta de linha de comando
O Deployment Manager oferece a capacidade de implantar um tipo composto diretamente com a Google Cloud CLI. Em vez de criar um arquivo de configuração de nível superior, a CLI gcloud gera automaticamente essa configuração para você.
Por exemplo, o comando a seguir implanta um tipo composto chamado autoscaled-igm
:
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm
A definição de propriedades do seu tipo composto também pode ser feita por meio da sinalização --properties
:
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm \
--properties zone:us-central1-a
Lembre-se:
Todos os valores são analisados como valores de YAML. Por exemplo,
version: 3
é transmitido como um número inteiro. Se você quiser especificá-lo como uma string, coloque aspas simples com escape em volta do valor,version: \'3\'
.Os valores booleanos não diferenciam maiúsculas de minúsculas, por isso,
TRUE
,true
eTrue
são tratados da mesma maneira.É necessário transmitir todas as propriedades obrigatórias definidas pelo tipo composto. Não é possível fornecer apenas um subconjunto de propriedades. Se algumas propriedades tiverem valores padrão, será possível omiti-las da linha de comando.
Para especificar várias propriedades, forneça pares de chave-valor separados por vírgulas. A ordem na qual os pares são especificados não é importante. Por exemplo:
gcloud deployment-manager deployments create my-igm \ --composite-type example-project/composite:autoscaled-igm \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8
Após executar esse comando, o Deployment Manager cria uma implantação usando o tipo composto que você forneceu. Confirme que a implantação foi criada usando o console do Google Cloud ou a CLI gcloud. Para mais informações sobre como visualizar a implantação, leia Como ver um manifesto.
Exemplo: criar um tipo composto
O Deployment Manager oferece muitos exemplos de configuração da Repositório do GitHub do Deployment Manager para usar como tipos compostos. Neste exemplo, você adicionará um tipo composto que implantará um serviço de balanceamento de carga de alta disponibilidade em várias zonas de uma única região. Para mais informações, veja o exemplo completo.
Neste exemplo, o arquivo de configuração de nível superior é o arquivo ha-service.py. Todos os submodelos são importados nos arquivos de esquema.
- Faça o download dos arquivos Python e de esquema do diretório do GitHub. Omita todos os arquivos em subdiretórios e arquivos de diagrama.
No diretório local em que você fez download de todos os arquivos, execute o seguinte comando para criar um novo tipo composto chamado
ha-service-example
:gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
Consiga uma lista de tipos para confirmar que o tipo foi realmente criado:
gcloud beta deployment-manager types list --provider composite
Descreva o tipo novo:
gcloud beta deployment-manager types describe ha-service-example --provider composite
Crie uma configuração que implante o tipo. Substitua
[PROJECT_ID]
pelo ID do projeto.resources: - name: ha-service-example type: [PROJECT_ID]/composite:ha-service-example properties: dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic zones: - us-central1-b - us-central1-a
Salve a configuração como
example-config.yaml
. Observe que não foi necessário importar qualquer modelo na configuração.Implante o tipo composto novo:
gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
A API retorna uma lista de recursos criados a partir do tipo:
Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done. Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully. NAME TYPE STATE ERRORS INTENT ha-service-deployment-lb-fr compute.v1.forwardingRule COMPLETED [] ha-service-deployment-lb-hc compute.v1.httpHealthCheck COMPLETED [] ha-service-deployment-lb-tp compute.v1.targetPool COMPLETED [] ha-service-deployment-service-us-central1-a-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-a-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-a-it compute.v1.instanceTemplate COMPLETED [] ha-service-deployment-service-us-central1-b-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-b-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-b-it compute.v1.instanceTemplate COMPLETED []
Parabéns, você criou seu primeiro tipo composto!
Próximas etapas
- Compartilhar tipos com outros projetos.
- Excluir um tipo.
- Criar uma configuração.
- Criar uma implantação.
- Crie um tipo base usando um provedor de tipos.