Criando uma arquitetura implementável
Depois de percorrer as etapas para planejar e projetar sua arquitetura e decidir qual tipo de componente criar, é possível começar a criar o código automatizado que traz a arquitetura à vida. Este tópico orienta você na criação de uma arquitetura implementável composta de módulos.
Para criar uma arquitetura implantável, você deve definir os arquivos necessários, criar uma versão em GitHub, e, em seguida, integre-o a um catálogo privado para que você possa compartilhá-lo com outras pessoas dentro ou fora da sua organização.
Você tem algumas opções para criar uma arquitetura implementável:
- Crie sua própria arquitetura: Use as instruções a seguir para criar sua própria arquitetura implementável a partir do zero.
- Modificar o código existente: Baixe o código de uma arquitetura existente, modifique-o para atender às suas necessidades e crie uma nova arquitetura implementável com suas alterações.
- Arquiteturas empilhadas: Você também pode empilhar arquiteturas implementáveis em um projeto se essas arquiteturas já estiverem disponíveis em um catálogo.
Saiba mais sobre a estrutura de uma arquitetura implementável.
Uma arquitetura implementável, que esta documentação descreve, é composta por 1 ou mais módulos.. Uma arquitetura implementável é composta do seguinte no repositório de origem:
- Código do Terraform
- Seu repositório de origem inclui arquivos Terraform. Esses arquivos declaram a infraestrutura desejada (estado final) e dependem dos provedores do Terraform que executam as solicitações de API reais para criar, atualizar e excluir a infraestrutura. Alguns dos provedores mais comuns usados são o provedor do IBM Cloud® Terraform e o provedor da API Helm/Kubernetes/Rest.
- Scripts (opcional)
- Usada como uma diferença de parada para funções que podem não existir (Bash/Python) ou para tarefas operacionais ad hoc (Ansible). Para obter mais informações, consulte Criando scripts para arquiteturas implementáveis..
- Testes automatizados
- Testes de validação que são usados para implementar, verificar e destruir a infraestrutura. Para um exemplo, consulte o diretório
testsno repositório de amostra sample-deployable-architectures. - Documentação
- Um diagrama de arquitetura e arquivo leia-me precisam ser incluídos no repositório de origem.
- Arquivo manifest do catálogo
- Define como a arquitetura implementável é exposta no catálogo IBM Cloud. Além dos detalhes gerais do catálogo, como nome, descrição e recursos, ele inclui as definições de variação que apontam para a configuração subjacente do Terraform, declarações de conformidade que são verificadas durante a integração ao catálogo usando IBM Cloud® Security and Compliance Center Workload Protection e as permissões IAM necessárias para executar a arquitetura implantável. Para obter mais informações, consulte Editando localmente o manifesto do catálogo.
- Variações
- Uma arquitetura implementável pode incluir variações de capacidade ou complexidade.. Por exemplo, é possível criar uma variação de iniciação rápida com recursos básicos para uma implementação simples e de baixo custo e, em seguida, você pode
ter uma variação padrão com uma arquitetura mais complexa que seria usada na produção Cada uma dessas variações é uma arquitetura implementável, que é integrada e configurada para aparecer juntas em um catálogo. Essas variações são originadas
no mesmo repositório em diferentes diretórios ativos e são definidas no arquivo
ibm_catalog.json. Para obter mais informações, consulte Criação de uma variação.
Especificação de dependências e extensão de sua arquitetura
Se sua arquitetura implantável depender de outra, você poderá incluir informações sobre essa dependência ao integrar sua arquitetura implantável a um catálogo. Você também pode incluir arquiteturas opcionais para estender as suas próprias arquiteturas para diferentes casos de uso. O resultado é uma solução personalizável para os usuários, pois eles podem escolher as arquiteturas que desejam incluir junto com a sua. Para obter mais informações, vá para Estender uma arquitetura implementável durante a integração.
Você também pode fornecer informações sobre outras arquiteturas que deseja incluir com a sua no arquivo de manifesto do catálogo para sua arquitetura implementável antes de integrá-la.
Use a seção dependencies no arquivo de manifesto do catálogo para criar uma solução personalizável com arquiteturas opcionais e obrigatórias. Certifique-se de que dependency_version_2 esteja definido como true no arquivo de manifesto do catálogo. A maneira anterior de trabalhar com dependências no arquivo de manifesto do catálogo ainda é compatível. Com dependency_version_2 definido como false, você pode definir install_type como extension e fornecer informações sobre as dependências na seção dependencies. Se você fizer isso, cada arquitetura da lista de dependências deverá implantar a sua própria. Para obter mais informações e definir
esses valores, consulte Edição local do manifesto do catálogo.
Criando uma arquitetura implementável
É possível esperar concluir as tarefas de alto nível a seguir ao criar sua arquitetura implementável:
- Crie seu repositório de origem e inclua seu código.
- Crie seu arquivo manifest
ibm_catalog.jsonpara preparar a criação de um ladrilho no catálogo. - Crie uma liberação
- Integre seu código para criar um bloco de catálogo em um catálogo privado revisando e validando-o.
- Escolha onde deseja compartilhar ou publicar sua arquitetura implementável.
As instruções a seguir para criar uma arquitetura implementável usam um repositório de amostra pública para ensinar por exemplo.
Criando seu repositório de origem
Usando os requisitos que são definidos por sua organização, crie um repositório GitHub que possa ser usado para conter o código-fonte para sua arquitetura implementável. Para obter ajuda com a criação de um repositório, consulte a GitHub documentação. Se você já possui um repositório que deseja utilizar, pode pular esta etapa. Você pode optar por usar outra organização para hospedar seu código-fonte, como GitLab, mas para fins desta documentação, GitHub é usado.
Criando os arquivos do Terraform necessários
Revise as seções a seguir para entender quais arquivos base do Terraform são necessários em seu repositório de origem do GitHub para criar o arquivo .tgz que é necessário como parte da integração de sua arquitetura implementável
para um catálogo privado...
main.tf
O arquivo main.tf é onde você coloca o código que provisiona os recursos que deseja criar. É possível chamar um módulo do terraform-ibm-modules ou um módulo externo ou um recurso do provedor diretamente.
Veja exemplos:
outputs.tf
O arquivo outputs.tf contém valores de saída que podem ser incluídos na arquitetura implementável.
Veja exemplos:
provider.tf
O arquivo provider.tf contém a configuração do provedor, como o nome do provedor, a chave API e a região que o código espera.
Veja exemplos:
README.md
O arquivo leia-me contém informações de segundo plano e de uso sobre a arquitetura implementável, incluindo seções de requisitos, módulos, recursos, acesso necessário, entradas e saídas.
Se o repositório de origem estiver na organização terraform-ibm-modules, a maior parte do arquivo leia-me será gerada Então você não adiciona manualmente as informações como as entradas e saídas. Os nomes e descrições das variáveis
são gerados no arquivo readme a partir do variables.tf arquivo.
Veja exemplos:
variables.tf
O arquivo variables.tf inclui as variáveis necessárias e opcionais para a arquitetura implementável..
Veja exemplos:
version.tf
O arquivo version.tf armazena informações sobre a versão do Terraform e a versão do provedor necessárias para executar a arquitetura implementável.
Quaisquer provedores Terraform necessários para a arquitetura implementável devem ser bloqueados em uma versão exata em vez de usar um intervalo para assegurar resultados consistentes com a arquitetura implementável.
Veja exemplos:
Criando um arquivo de manifesto do catálogo
O manifest do catálogo é um arquivo na raiz de seu repositório chamado ibm_catalog.json. Este arquivo define os metadados necessários para criar um bloco em um catálogo, por exemplo, o nome, a descrição, os recursos, as definições
de variação que apontam para a configuração Terraform subjacente, as declarações de conformidade que serão verificadas durante a integração usando Workload Protection e as permissões IAM necessárias para implantar a arquitetura. Ele também
define as configurações que você deseja selecionar por padrão quando um usuário tenta implementar sua arquitetura a partir do catálogo. Para obter mais informações, consulte mapeando detalhes do catálogo para o arquivo de manifesto
Confira o exemplo do repositório de amostra que mostra uma variação de tipo fullstack e de extensão.
É possível criar seu arquivo manifest do catálogo usando dois métodos diferentes:
-
É possível criar esse arquivo do zero usando o modelo.
-
É possível iniciar o processo de integração com a amostra básica a seguir em seu repositório de origem e, em seguida, fazer download do arquivo de manifesto depois de fazer mudanças durante a integração no console para incluir o arquivo atualizado em seu repositório de origem
A seguir está um arquivo manifest básico que você pode incluir em seu repositório e editar para ajudar a começar com essa opção.
{ "products": [ { "flavors": [ { "architecture": {}, "compliance": {}, "install_type": "fullstack" } ], "label": "catalog-create-sample-da-0.0.1", "name": "catalog-create-sample-da-0.0.1", "offering_icon_url": "url", "product_kind": "solution", "provider_name": "Community", "short_description": "A simple deployable architecture.", "tags": [ "dev_ops" ], "version": "0.0.1" } ] }
Próximas etapas: integre sua arquitetura implementável em um catálogo privado
Com uma liberação Git criada que inclui os arquivos necessários em seu repositório de origem, é possível integrar uma versão de sua arquitetura implementável e todas as variações incluídas. A integração é o processo de criação de um ladrilho de catálogo em um catálogo privado revisando os detalhes do catálogo e validando uma implementação de teste e as solicitações de conformidade no IBM Cloud. Para o processo passo a passo, consulte Integrando arquiteturas implementáveis.