Provisionar uma instância do Databases for PostgreSQL com Terraform

Neste tutorial, você aprenderá como usar o Terraform para provisionar uma instância do Databases for PostgreSQL.

Visão geral das ferramentas disponíveis

Antes de iniciar o processo de fornecimento de um banco de dados com o Terraform, é necessário ter uma conta do IBM Cloud.

Neste tutorial, você provisiona seu banco de dados usando o Terraform, que permite que você crie, mude e melhore a infraestrutura de modo seguro e previsível. Ele é uma ferramenta de software livre que codifica as APIs em arquivos de configuração declarativos que podem ser compartilhados entre membros da equipe, tratados como código, editados, revisados e com versão definida. É uma infraestrutura como código. Você anota como sua infraestrutura deve se parecer e o Terraform criará, atualizará, removerá os recursos em nuvem conforme necessário. Para obter mais informações, consulte Entenda os conceitos básicos do Terraform.

Para suportar uma abordagem multinuvem, o Terraform funciona com os provedores. Um provedor é responsável por entender as interações da API e expor recursos. O IBM Cloud® tem seu provedor para Terraform, permitindo que usuários do IBM Cloud® gerenciem recursos com Terraform. Embora o Terraform seja categorizado como infraestrutura como código, ele não é limitado a recursos de Infraestrutura como Serviço. Para obter mais informações, consulte ibm_database.

Instalar o Terraform

  1. Siga as etapas em Instalar o Terra form para instalar o Terraform.

Configurar o plug-in do provedor IBM Cloud®

  1. Criar ou recuperar uma chave de API do IBM Cloud®. A chave de API é usada para autenticar-se com a plataforma IBM Cloud® e determinar suas permissões para serviços IBM Cloud®.

  2. Crie um diretório de projetos Terraform no IBM Cloud Databases. O diretório mantém todos os seus arquivos de configuração que você cria como parte deste tutorial. O diretório neste tutorial é denominado tf-postgres, mas é possível usar qualquer nome para o diretório.

    mkdir tf-postgres && cd tf-postgres
    
  3. Em seu diretório de projetos, crie um arquivo de definição de variáveis que seja nomeado terraform.tfvars e especifique a chave de API do IBM Cloud que você recuperou. Além disso, especifique a região na qual deseja que seus recursos do IBM Cloud sejam criados. Se nenhuma região for especificada, o plug-in do Provedor IBM Cloud® criará automaticamente seus recursos na região de us-south. As variáveis que são definidas no arquivo terraform.tfvars são carregadas automaticamente pelo Terraform quando o plug-in do Provedor IBM Cloud é inicializado e é possível referenciá-las em todo arquivo de configuração do Terraform que você usa.

    Como o arquivo de definições de variáveis contém informações confidenciais, não envie por push este arquivo para um sistema de controle de versão. O objetivo é que este arquivo esteja apenas em seu sistema local.

    Exemplo de arquivo terraform.tfvars

      ibmcloud_api_key = "<IBMCLOUD_API_KEY>"
      region = "us-east"
    

    A região us-east é fornecida como exemplo, não um requisito. Utilize a região que funciona melhor para a sua implementação de instância.

  4. Crie um arquivo de configuração do provedor que seja denominado provider.tf. Use este arquivo para configurar o plug-in do Provedor IBM Cloud com a chave de API do IBM Cloud a partir do seu arquivo terraform.tfvars. O plug-in usa essa chave para acessar o IBM Cloud e para funcionar com o seu serviço do IBM Cloud. Para acessar um valor de variável a partir do arquivo terraform.tfvars, deve-se primeiro declarar a variável no arquivo provider.tf e, em seguida, referenciar a variável usando a sintaxe var.<variable_name>.

    Exemplo de arquivo provider.tf

    terraform {
      required_providers {
        ibm = {
          source  = "IBM-Cloud/ibm"
          version = ">= 1.28.0"
        }
      }
    }
    
    variable "ibmcloud_api_key" {}
    variable "region" {}
    
    provider "ibm" {
      ibmcloud_api_key = var.ibmcloud_api_key
      region           = var.region
    }
    

Provisione uma instância Databases for PostgreSQL

Crie um arquivo de configuração do Terraform que seja denominado postgres.tf.

Exemplo de arquivo postgres.tf

```terraform {: codeblock}
resource "ibm_resource_group" "resource_group" {
  name = "tutorialRG"
}

resource "ibm_database" "postgresql_db" {
  resource_group_id = ibm_resource_group.resource_group.id
  name              = "terraform_postgres"
  service           = "databases-for-postgresql"
  plan              = "standard"
  location          = "us-east"
  service_endpoints = "public"
  adminpassword     = "password123456789"

  group {
    group_id = "member"
    host_flavor {
      id = "multitenant"
    }
    cpu {
      allocation_count = 2
    }
    memory {
      allocation_mb = 4096
    }
    disk {
      allocation_mb = 5120
    }
  }
}

data "ibm_database_connection" "icd_conn" {
  deployment_id = ibm_database.postgresql_db.id
  user_type     = "database"
  user_id       = "admin"
  endpoint_type = "public"
}

output "Postgresql" {
  value = data.ibm_database_connection.icd_conn
}
```
  • resource_group_id- O valor do grupo de recursos que você declara.
  • Nome - o nome do serviço pode ser qualquer sequência de caracteres e é o nome que é usado na web e na CLI para identificar a nova implementação.
  • Serviço - para o Databases for PostgreSQL, o ID do serviço é databases-for-postgresql. Escolha o ID de serviço correto para sua implementação.
  • Plano - este tutorial usa um plano Standard. Para obter mais informações, consulte IBM Cloud® Preços.
  • Local - escolha uma região adequada para a sua instância de implementação.
  • ponto de extremidade do serviço- The service endpoints of your deployment. public is used in the tutorial, however it is recommended that only private endpoints are used in production.
  • adminpassword- O serviço Databases for PostgreSQL é provisionado com um usuário administrador, para que você possa gerenciar o PostgreSQL usando sua ferramenta de linha de comando, psql. Para obter mais informações, consulte Configurando a senha do administrador.
  • grupo- os grupos de dimensionamento representam os vários recursos alocados a uma implantação. Para ver um exemplo de configuração e implementação de um banco de dados que usa atributos group, consulte Exemplo de instância de banco de dados usando atributos de grupo.
  • valores do grupo- os valores de memória, disco e CPU baseiam-se nos requisitos mínimos para provisionar uma instância de computação compartilhada Databases for PostgreSQL.
  • output- Quando o processo de terraformação for concluído, as informações de conexão do novo banco de dados serão exibidas no terminal.

Como alternativa, você pode usar o Terraform IBM Modules(TIM)para Databases for PostgreSQL, que é a abordagem recomendada para ambientes de produção. Diferentemente do recurso bruto, esse módulo oferece os seguintes recursos:

  • Documentação abrangente com arquivos README e exemplos
  • Vários cenários de implantação usando diferentes exemplos
  • Controle de versões para atualizações seguras e gerenciamento de dependências mais fácil
  • Configurações prontas para empresas que são seguras, dimensionáveis e compatíveis

Para criar um arquivo de configuração do Terraform com o nome postgres.tf:

Exemplo de arquivo postgres.tf

resource "ibm_resource_group" "resource_group" {
      name = "Default"
}

module "postgresql_db" {
  source            = "terraform-ibm-modules/icd-postgresql/ibm"
  version           = "latest" # Replace "latest" with a release version to lock into a specific release
  resource_group_id = ibm_resource_group.resource_group.id
  name              = "my-instance"
  region            = "us-south"
}

Teste a sua configuração

Agora que você configurou o plug-in do Provedor IBM Cloud® para o seu recurso, você pode usar o Terraform no IBM Cloud® para inicializar, executar, planejar e aplicar comandos para provisionar o recurso. Os comandos a seguir são necessários:

Comandos de provisionamento da Terrarform
Descrição do comando Comando
terraform init O comando terraform init é usado para inicializar um diretório ativo contendo arquivos de configuração do Terraform.
terraform fmt O comando terraform fmt é usado para gravar novamente arquivos de configuração do Terraform em um formato e estilo canônicos.
terraform validate O comando terraform validate valida os arquivos de configuração em um diretório
terraform apply O comando terraform apply executa as ações que são propostas em um plano do Terraform.

Para obter mais informações, consulte Fornecimento de recursos do IBM Cloud®.

Para visualizar modelos do Terraform de amostra com os arquivos de configuração completos do Terraform a serem testados, consulte os Modelos de amostra.

Para uma visão geral dos recursos e origens de dados do Terraform que você pode utilizar, consulte o Índice do Terraform sobre recursos e origens de dados do IBM Cloud®.