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
- Siga as etapas em Instalar o Terra form para instalar o Terraform.
Configurar o plug-in do provedor IBM Cloud®
-
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®.
-
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 -
Em seu diretório de projetos, crie um arquivo de definição de variáveis que seja nomeado
terraform.tfvarse 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 arquivoterraform.tfvarssã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.tfvarsibmcloud_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. -
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 arquivoterraform.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 arquivoterraform.tfvars, deve-se primeiro declarar a variável no arquivoprovider.tfe, em seguida, referenciar a variável usando a sintaxevar.<variable_name>.Exemplo de arquivo
provider.tfterraform { 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.
publicis used in the tutorial, however it is recommended that onlyprivateendpoints 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:
| 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®.