Os desenvolvedores e as equipes de DevOps geralmente utilizam Infraestrutura como código (IaC) ferramentas e scripts para gerenciar suas implementações de software e infraestrutura de forma repetitiva e consistente. Com as ferramentas de IaC, os usuários podem automatizar o ciclo de vida das implementações, incluindo provisionamento, configuração, implementação e destruição de recursos. Hashicorp Terraform é uma ferramenta de IaC muito popular.
Temos o prazer de anunciar a disponibilidade geral da versão 1.0 do Provedor do Couchbase Capella Terraformque permitirá que os usuários gerenciem programaticamente as implementações do Couchbase Capella. Essa versão substitui a versão v0.2 do provedor Capella que agora está obsoleto e não terá mais suporte em breve.
Nesta postagem, apresentamos um exemplo rápido do provedor Capella Terraform.
Histórico
No início deste ano, anunciamos o lançamento de nossa nova versão do API de gerenciamento da Capella - uma versão renovada da API pública do Capella que permite aos usuários controlar programaticamente os recursos do Couchbase Capella por meio da interface RESTful.
O provedor do Couchbase Capella Terraform v1.0 utiliza a API de gerenciamento do Capella. Dessa forma, o conjunto de recursos do Capella que pode ser gerenciado por meio do provedor depende da API subjacente. À medida que a API evolui para oferecer suporte a novos pontos de extremidade. O provedor Terraform será estendido de forma correspondente para dar suporte ao gerenciamento dos recursos correspondentes expostos por meio dos pontos de extremidade.
Passo a passo do provedor
Neste exemplo, demonstraremos o uso do provedor do Capella Terraform para implantar um projeto do Capella, um cluster e provisionar um bucket.
O Repositório do GitHub tem um conjunto extenso de exemplos para gerenciar cada um dos recursos suportados, incluindo usuários, projetos, clusters, buckets, credenciais de banco de dados, CIDRs permitidos, App Services, backup/restauração e muito mais.
Pré-requisitos
-
- Terraform >= 1.5.2
- Ir >= 1,20
- Uma conta paga da Capella.
Observação que a versão atual do provedor não é compatível com as avaliações gratuitas da Capella. O suporte para avaliações estará disponível quando a API de gerenciamento subjacente da Capella suportar a orquestração de implantações de avaliação.
Autenticação e autorização
Todas as operações do provedor do Capella Terraform são autenticadas e autorizadas por meio da chave da API do Capella Management. Em um ambiente de produção, você usará algo como Cofre da HashiCorp ou um gerenciador de segredos oferecido por um provedor de serviços em nuvem, como Gerenciador de segredos da AWS para gerenciar suas chaves de API. A referência ao gerenciador de segredos seria especificada como entrada para o provedor Terraform.
Para fins desta demonstração, definiremos as credenciais em um arquivo de variáveis de ambiente local:
- Crie um arquivo chamado variables.tf e adicione as seguintes definições de variáveis. Usaremos essas variáveis em nosso arquivo de configuração.
1 2 3 4 5 6 7 |
variável "organization_id" { descrição = "ID da Organização Capella" } variável "auth_token" { descrição = "Chave da API de autenticação" } |
2. Crie um arquivo chamado terraform.template.tfvars e adicione as seguintes linhas. Aqui, especificamos os valores das principais variáveis associadas à implantação
1 2 |
auth_token = "" organization_id = "" |
-
- auth_token: Você pode criar a chave da API por meio de IU da Capella ou por meio do API de gerenciamento. Dependendo do escopo dos recursos gerenciados pelo provedor, você deve criar uma chave de API no nível da organização ou do projeto com o conjunto correto de funções.
- organization_id: Você pode obter isso na API de gerenciamento da organização ou no URL do navegador da interface do usuário do Capella (procure o parâmetro "oid")
https://cloud.couchbase.com/databases?oid=0783f698-ac58–4018–84a3-xxxxxxxxxxxxx
Configuração para implantação de amostra
Conforme mencionado anteriormente, o Repositório do GitHub do provedor tem um conjunto extenso de modelos de configuração. Nesta postagem, estou usando um exemplo simples para demonstrar o uso do provedor para criar um perfil, implantar um cluster e um bucket dentro do cluster.
-
- Crie um arquivo chamado capella.tf e adicione a seguinte configuração. A configuração faz o seguinte
- Cria um projeto dentro da organização especificada
- Cria um cluster dentro do projeto
- Cria um bucket dentro do cluster
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
terraformação { provedores necessários { couchbase-capela = { fonte = "registry.terraform.io/couchbasecloud/couchbase-capella" } } } # Configurar o Couchbase Capela Provedor usando predefinido variáveis provedor "couchbase-capella" { authentication_token = var.autenticação_token } # Criar exemplo projeto recurso recurso "couchbase-capella_project" "new_project" { organization_id = var.organização_id nome = "Projeto de demonstração do Terraform" descrição = "Um projeto Capella que hospedará um cluster Capella" } # Lojas o projeto nome em e saída variável. # Pode ser visualizado usando `projeto de saída do formato` comando saída "projeto" { valor = couchbase-capella_project.novo_projeto.nome } # Criar agrupamento recurso recurso "couchbase-capella_cluster" "new_cluster" { organization_id = var.organização_id projeto_id = couchbase-capella_project.novo_projeto.id nome = "Cluster de demonstração do Terraform" descrição = "Cluster de teste criado com o Terraform" provedor de nuvem = { tipo = "aws" região = "us-east-1" cidr = "192.168.10.0/23" } servidor couchbase = { versão = "7.2" } grupos_de_serviços = [ { nó = { computar = { CPU = 4 ram = 16 } disco = { armazenamento = 50 tipo = "io2" iops = 5000 } } num_of_nodes = 3 serviços = ["dados", "índice", "query" (consulta)] } ] disponibilidade = { "tipo" : "multi" } suporte = { plano = "desenvolvedor profissional" fuso horário = "PT" } } # Lojas o agrupamento detalhes em e saída variável. # Pode ser visualizado usando `terraform output cluster` comando saída "cluster" { valor = couchbase-capella_cluster.novo_agrupamento } # Criar balde em agrupamento recurso "couchbase-capella_bucket" "new_bucket" { nome = "terraform_bucket" organização_id = var.organização_id projeto_id = couchbase-capella_project.novo_projeto.id agrupamento_id = couchbase-capella_cluster.novo_cluster.id tipo = "couchbase" armazenamento_backend = "couchstore" memory_allocation_in_mb = 100 bucket_conflict_resolution = "seqno" durabilidade_nível = "nenhum" réplicas = 1 descarga = falso time_to_live_in_segundos = 0 despejo_política = "fullEviction" } # Lojas o balde nome em e saída variável. # Pode ser visualizado usando `balde de saída de formato` comando saída "bucket" (balde) { valor = couchbase-capella_bucket.new_bucket.nome } |
Implantar e gerenciar recursos
Use o padrão Comandos do Terraform para inicializar e implantar os recursos
1. Inicialize o provedor do Terraform
O Terraform deve ser inicializado na primeira vez que você usar o provedor:
1 |
terraformação inicial |
2. Revise o plano do Terraform
Use o seguinte comando para revisar os recursos que serão implantados:
1 |
terraformação plano -var-arquivo terraformação.modelo.tfvars |
3. Executar o plano do Terraform
Implante os recursos do Couchbase Capella usando o seguinte comando:
1 |
terraformação aplicar -var-arquivo terraformação.modelo.tfvars |
Você deverá ver uma saída semelhante à seguinte. A implantação dos recursos levará alguns minutos:
1 2 3 4 5 6 7 8 9 10 11 12 |
capella_project.novo_projeto: Criação de... capella_project.novo_projeto: Criação completo após 0s [id=c9151819-2f75-41dd-b944-7e33d12163ea] capella_cluster.novo_cluster: Criação de... capella_cluster.novo_cluster: Ainda assim criando... [10s decorrido] capella_cluster.novo_cluster: Ainda assim criando... [30s decorrido] ....... capella_cluster.novo_cluster: Ainda assim criando... [2m50s decorrido] capella_cluster.novo_cluster: Ainda assim criando... [3m0s decorrido] capella_cluster.novo_cluster: Criação completo após 3m1s [id=29ebb043-xxxx-xxxx-xxxx-xxxxxxxxxxxxxx] capella_bucket.new_bucket: Criação de... capella_bucket.new_bucket: Criação completo após 0s [id=dGVycmFmb3JtXXXXXXXXXXXX=] Aplicar completo! Recursos: 3 adicionado, 0 alterado, 0 destruído. |
4. Obter o estado atual dos recursos
1 |
terraformação estado lista |
Você deverá ver uma saída semelhante à seguinte, que mostra os três recursos que foram criados:
1 2 3 |
couchbase-capella_bucket.new_bucket couchbase-capella_cluster.novo_cluster couchbase-capella_project.novo_projeto |
5. Obter o estado detalhado de qualquer recurso implantado
1 |
terraformação estado show couchbase-capella_project.novo_projeto |
Você deverá ver uma saída semelhante à seguinte, que mostra os três recursos que foram criados:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# capella_project.novo_projeto: recurso "couchbase-capella_project" "new_project" { auditoria = { criado_em = "2023-11-19 22:59:59.695367442 +0000 UTC" criado_por = "WFXyD6xRlAyCwKcpLGs6pKVScBGK299c" modified_at = "2023-11-19 22:59:59.695380869 +0000 UTC" modificado_por = "WFXyD6xRlAyCwKcpLGs6pKVScBGK299c" versão = 1 } descrição = "Um projeto Capella que hospedará um cluster Capella" etag = "Versão: 1" id = "5ab4f4b5-756c-4f12-97ec-xxxxxyyyyyzzzz" nome = "Projeto de demonstração do Terraform" organization_id = "8b05f96d-45ba-zzzz-xxxx-fa55555555" } |
6. Destruir os recursos
Execute o seguinte comando para destruir os recursos:
1 |
terraformação destruir -var-arquivo terraformação.modelo.tfvars |
Você deverá ver uma saída semelhante à seguinte. Levará alguns minutos para destruir os recursos.
1 2 3 4 5 6 7 8 9 10 11 |
capella_bucket.new_bucket: Destruição... [id=dGVycmFmb3JtX2J1Y2tldA==] capella_bucket.new_bucket: Destruição completo após 1s capella_cluster.novo_cluster: Destruição... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b] capella_cluster.novo_cluster: Ainda assim destruidoras... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b, 10s decorrido] ..... capella_cluster.novo_cluster: Ainda assim destruidoras... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b, 50s decorrido] .... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b, 3m20s decorrido] capella_cluster.novo_cluster: Destruição completo após 3m26s capella_project.novo_projeto: Destruição... [id=5ab4f4b5-756c-4f12-97ec-8e2427c7c1ab] capella_project.novo_projeto: Destruição completo após 1s |
Recursos e próximas etapas
A versão 1.0 do provedor substitui a v0.0.2 do provedor Capella, que está obsoleta e será removida em breve. Portanto, se você estiver usando o provedor antigo, deve planejar a migração para o novo provedor.
Aqui estão os links diretos para alguns recursos úteis:
Se você tiver dúvidas ou comentários, deixe um comentário abaixo. Os Fóruns do Couchbase ou Discórdia do Couchbase Os canais são outro bom lugar para entrar em contato com perguntas.
É possível criar um endpoint de serviço de aplicativo por meio do TF junto com a função de validação para a coleção desejada?
Olá, Jan. Hoje, temos APIs de gerenciamento que permitirão que você implemente e gerencie pontos de extremidade de aplicativos de forma programática. https://docs.couchbase.com/cloud/management-api-reference/index.html#tag/App-Endpoints. Terraform está em nosso radar. Fique ligado!