Para provisionar recursos no Alibaba Cloud, Amazon Web Services (AWS) e Microsoft Azure a partir de um único fluxo de trabalho, utilize o Resource Orchestration Service (ROS) com modelos do Terraform. Defina todos os recursos e seus relacionamentos de dependência em um único modelo e gerencie sua infraestrutura multicloud sem alternar entre provedores.
Cenário
Caso deseje criar e gerenciar recursos de plataformas de nuvem de terceiros, como AWS e Microsoft Azure, diretamente no Alibaba Cloud, defina esses recursos externos e configure as relações de dependência em um modelo do Terraform. Essa abordagem facilita o gerenciamento unificado de recursos em diferentes plataformas de nuvem.
Estrutura do modelo do Terraform
Todo workspace do Terraform possui arquivos de configuração em seu diretório raiz, que o Terraform considera como o módulo raiz. É possível organizar recursos relacionados em módulos filhos armazenados em subdiretórios (por exemplo, modules/vpc/). O módulo raiz invoca os módulos filhos por meio de blocos module, e os módulos filhos expõem valores de volta ao módulo raiz através de blocos output.
Para obter mais informações sobre a estrutura dos modelos do Terraform, consulte Estrutura dos modelos do Terraform.
Criar um modelo do Terraform
O procedimento a seguir cria um modelo do Terraform no ROS. O exemplo provisiona um vSwitch em uma virtual private cloud (VPC), utilizando um módulo filho para separar a definição da VPC da configuração raiz.
Faça login no console do ROS./@cmd
No painel de navegação à esquerda, escolha Templates > My Templates. /@cmd
Na página My Templates, clique em Create Template./@cmd
Defina o parâmetro Template Type como Terraform Template./@cmd
-
Crie os arquivos do modelo do Terraform./@cmd
O exemplo abaixo cria um vSwitch em uma VPC. O módulo filho (
modules/vpc/main.tf) define a VPC, enquanto o arquivomain.tfraiz chama esse módulo e cria o vSwitch usando o ID da VPC transmitido por meio de um output.Estrutura final de diretórios:
. ├── main.tf (root module — creates the vSwitch) └── modules/ └── vpc/ └── main.tf (child module — creates the VPC)-
Crie o arquivo
modules/vpc/main.tfpara definir a VPC.No canto superior direito da seção Directory, clique em + e selecione Create Folder.
Na caixa de diálogo Create Folder, insira
modulese clique em OK. Uma pasta chamadamodulesserá criada na seção Directory.Passe o mouse sobre a pasta
modules, clique em + à direita e selecione Create Folder.Na caixa de diálogo Create Folder, insira
vpce clique em OK. Uma pasta chamadavpcserá criada dentro demodules.Passe o mouse sobre a pasta
vpc, clique em + à direita e selecione Create File.Na caixa de diálogo Create File, insira
main.tfe clique em OK. Um arquivo chamadomain.tfserá criado na pastavpc.-
Clique em
main.tfe insira o código a seguir no editor de código:modules/vpc/main.tf# Create a VPC resource "alicloud_vpc" "vpc" { name = "tf_test" cidr_block = "172.16.0.0/12" } # Expose the VPC ID so the root module can reference it output "vpc_id" { value = "${alicloud_vpc.vpc.id}" }O bloco
resourcecria a VPC. Já o blocooutputtransmite o ID da VPC para qualquer módulo que invoque este.
-
Edite o arquivo
main.tfraiz para chamar o módulo da VPC e criar o vSwitch.Clique em
main.tfno diretório raiz.-
Insira o código a seguir no editor de código:
main.tf# Call the VPC child module module "my_vpc" { source = "./modules/vpc" } # Create a vSwitch in the VPC using the output from the child module resource "alicloud_vswitch" "vsw" { vpc_id = "${module.my_vpc.vpc_id}" cidr_block = "172.16.0.0/21" availability_zone = "cn-shanghai-b" } # Expose the vSwitch ID for use by other resources output "vsw_id" { value = "${alicloud_vswitch.vsw.id}" }O bloco
modulechama o módulo filho da VPC e disponibiliza seus outputs comomodule.my_vpc.*. O blocoresourcedo vSwitch referenciamodule.my_vpc.vpc_idpara utilizar a VPC criada pelo módulo filho. É dessa forma que se expressam as relações de dependência entre módulos.
-
No canto inferior esquerdo da página Create Template, escolha ./@cmd
Na caixa de diálogo Save as My Template, configure os parâmetros Template Name, Template Description, Resource Group e Tag./@cmd
Clique em OK./@cmd