Observação:
- Este tutorial requer acesso ao Oracle Cloud. Para se inscrever em uma conta gratuita, consulte Conceitos básicos do Oracle Cloud Infrastructure Free Tier.
- Ele usa valores de exemplo para credenciais, tenancy e compartimentos do Oracle Cloud Infrastructure. Ao concluir seu laboratório, substitua esses valores por valores específicos do seu ambiente de nuvem.
Implantar Instância de Computação e VCN usando Pulumi no Oracle Cloud Infrastructure
Introdução
Neste tutorial, implantaremos instância de computação e Redes Virtuais na Nuvem (VCN) usando o Pulumi. Com a simplicidade da Pulumi e a infraestrutura robusta da Oracle Cloud Infrastructure (OCI), você aprenderá a automatizar os processos de implementação sem esforço. Você aprenderá a implementar e gerenciar recursos da OCI com facilidade, desbloqueando novas possibilidades na implementação na nuvem.
Objetivo
- Implante recursos da Compute Instance e da VCN usando a ferramenta Pulumi Infrastructure as code (IaC) na OCI.
Pré-requisitos
- Instale e configure Pulumi, provedores da OCI e defina as variáveis de ambiente da OCI. Para obter mais informações, consulte Instalar e Configurar a Infraestrutura Pulumi como Código no Oracle Cloud Infrastructure.
Tarefa 1: Criar uma VCN
Implante uma VCN usando Pulumi.
-
Crie um novo diretório para o projeto Pulumi.
-
Abra o terminal ou o prompt de comando.
-
Navegue até o diretório onde você deseja criar seu projeto Pulumi. Você pode usar o comando
cd
para alterar diretórios. -
Crie um novo diretório para seu projeto.
Por exemplo:
mkdir my-oci-project cd my-oci-project
-
-
Execute o comando a seguir para criar um novo projeto Pulumi usando o modelo OCI Python. Aqui nós usamos python como o idioma de programação para pulumi, mas você pode usar qualquer um dos idiomas de programação suportados de sua escolha.
pulumi new oci-python
-
Pulumi irá pedir-lhe para configurar o seu projeto. Especifique as informações necessárias, como o nome do projeto, a descrição do projeto e o nome da pilha, e clique em Inserir.
Por exemplo:
Project name: my-oci-project Project description: This is an example of OCI Compute and VCN deployment Stack name: Dev
-
Copie e personalize o código.
-
O Pulumi criará um arquivo Python básico chamado
__main__.py
no diretório do seu projeto. -
Abra esse arquivo usando um editor de texto ou um Código IDE VS.
-
Escreva seu código de infraestrutura da OCI usando o Python SDK da Pulumi e defina sua VCN, sub-redes, grupos de segurança e assim por diante. Por exemplo, copie o código Python fornecido em um novo arquivo chamado
__main__.py
e personalize o código substituindo os valores de espaço reservado pelos IDs de compartimento e nomes de exibição reais do OCI. Essas alterações garantem que seus recursos sejam criados no compartimento correto e tenham nomes significativos."""A OCI Python Pulumi program""" import pulumi import pulumi_oci as oci from pulumi_oci import core from pulumi_oci import identity # Create a New VCN test_vcn = oci.core.Vcn("test_vcn", compartment_id="ocid1.compartment.oc1...xx...xxx", cidr_block="10.0.0.0/16", display_name="ocinetwork", dns_label="ocinetwork" ) #Code block for InternetGateway test_internet_gateway = oci.core.InternetGateway("test_internet_gateway", compartment_id="ocid1.compartment.oc1...xx...xxx", vcn_id=test_vcn.id, enabled="true", display_name="internet_gateway") #Code block for route table and attach to IG test_route_table = oci.core.RouteTable("test_route_table", compartment_id="ocid1.compartment.oc1...xx...xxx", vcn_id=test_vcn.id, display_name="route_table_ig", route_rules=[oci.core.RouteTableRouteRuleArgs( network_entity_id=test_internet_gateway.id, destination="0.0.0.0/0", destination_type="CIDR_BLOCK", )]) #Code block for security list security_list_resource = oci.core.SecurityList("securityListResource", compartment_id="ocid1.compartment.oc1...xx...xxx", vcn_id=test_vcn.id, display_name="sc_list", egress_security_rules=[oci.core.SecurityListEgressSecurityRuleArgs( destination="0.0.0.0/0", protocol="all", destination_type="CIDR_BLOCK", stateless=False, )], ingress_security_rules=[ oci.core.SecurityListIngressSecurityRuleArgs( protocol="6", source="0.0.0.0/0", description="Sor SSH", tcp_options=oci.core.SecurityListIngressSecurityRuleTcpOptionsArgs( max=22, min=22, ), source_type="CIDR_BLOCK", stateless=False, ), oci.core.SecurityListIngressSecurityRuleArgs( protocol="1", source="0.0.0.0/0", description="ICMP", icmp_options=oci.core.SecurityListIngressSecurityRuleIcmpOptionsArgs( type=3, code=4, ), source_type="CIDR_BLOCK", stateless=False, ) ] ) # Create a Public Subnet test_public_subnet = oci.core.Subnet("test_public_subnet", cidr_block="10.0.0.0/24", compartment_id="ocid1.compartment.oc1...xx...xxx", vcn_id=test_vcn.id , display_name="public_subnet", dns_label="publicsubnet", prohibit_internet_ingress="False", prohibit_public_ip_on_vnic="False", route_table_id=test_route_table.id, security_list_ids=[security_list_resource.id]) # Create a Private Subnet test_Private_subnet = oci.core.Subnet("test_private_subnet", cidr_block="10.0.1.0/24", compartment_id="ocid1.compartment.oc1...xx...xxx", vcn_id=test_vcn.id , display_name="private_subnet", dns_label="privatesubnet", prohibit_internet_ingress="true", prohibit_public_ip_on_vnic="true")
Esse código provisiona uma VCN no OCI com seus recursos associados. Ele cria um gateway de internet, anexa uma tabela de roteamento a ele para roteamento e configura uma lista de segurança para controlar o tráfego de rede. Além disso, ele cria uma sub-rede pública e privada dentro da VCN, cada uma com configurações de rede específicas, como blocos CIDR e labels de DNS. Ele garante que a sub-rede privada proíba o acesso à internet e a atribuição de IP público às instâncias, aprimorando a segurança da rede.
-
-
Implante um código de VCN.
-
Execute o comando a seguir para implantar um recurso da VCN.
pulumi up
-
Pulumi irá detectar os recursos definidos no seu código e pedir-lhe para confirmar a implantação. Verifique as alterações e, quando solicitado, digite
yes
para continuar.
-
-
Quando a implantação estiver concluída, verifique se a sua VCN e outros recursos foram provisionados no OCI. Você pode verificar a Console do OCI ou usar a CLI (Interface de Linha de Comando) do Oracle Cloud Infrastructure para listar os recursos em seu compartimento.
Tarefa 2: Criar uma Instância de Computação
Vamos expandir a implantação do OCI adicionando instâncias do OCI Compute à sua VCN existente usando Pulumi.
-
Para acessar o projeto Pulumi, navegue até o diretório que contém seu projeto Pulumi e abra o arquivo
__main__.py
. -
Copie o código a seguir e cole-o no arquivo
__main__.py
para atualizar após o código de implantação da VCN existente.# Create a Compute Instance compartment_id = "ocid1.compartment.oc1..xxxxxx" test_availability_domains = oci.identity.get_availability_domains(compartment_id="ocid1.compartment.oc1.xxx") public_ssh_key = "Copy and Paste the Public SSH Key" instance = oci.core.Instance("my-vm-instance", # Replace with your desired availability domain. availability_domain=test_availability_domains.availability_domains[0].name, # Replace with your compartment ID. compartment_id="ocid1.compartment.oc1..xxxxxxxx", # Using VM.Standard.E4.Flex shape. shape="VM.Standard.E4.Flex", # Replace with your subnet ID. create_vnic_details=oci.core.InstanceCreateVnicDetailsArgs( assign_private_dns_record=True, assign_public_ip="true", display_name="pulumideminst", subnet_id=test_public_subnet.id, ), # Metadata for the instance, including SSH keys for access. metadata={ "ssh_authorized_keys": public_ssh_key #"ssh_authorized_keys": std.file_output(input=public_ssh_key).apply(lambda invoke: invoke.result) }, # Use an Oracle-provided image or your own custom image. source_details=oci.core.InstanceSourceDetailsArgs( source_type="image", # Replace with the image OCID. source_id="ocid1.image.oc1.iad.aaaaaaaalbjc2slze7i3rbpho3p4ict6u4k2l6r2r3igvvkopbfd4xt2wwla", ), # Specifying the OCPU and memory configurations. shape_config=oci.core.InstanceShapeConfigArgs( ocpus=2.0, # Number of OCPUs. memory_in_gbs=8.0, # Amount of RAM in GBs. ), # Additional arguments like display name, can be specified here. display_name="pulumidemo_instance",) # Exporting the public IP of the instance. pulumi.export('instance_public_ip', instance.public_ip), pulumi.export('create_shape', instance.shape) pulumi.export('create_vnic', instance.create_vnic_details) pulumi.export('create_vnic', instance.create_vnic_details["display_name"])
Substitua
ocid1.compartment.oc1.xxxxxxx
pelo ID do compartimento,VM.Standard.E4.Flex
pela forma da instância desejada,ocid1.image.oc1.iad.xxxxxxx
pelo ID da imagem desejada eYOUR_SSH_PUBLIC_KEY
pela chave pública SSH. -
Salve suas alterações em
__main__.py
e implante sua pilha atualizada usando a interface de linha de comando Pulumi.pulumi up
-
Após a implantação, verifique se sua instância de computação foi provisionada com sucesso dentro da VCN. Você pode verificar a Console do OCI ou usar a CLI do OCI para listar a instância em seu compartimento.
-
Agora você pode acessar a instância do OCI Compute via SSH. Certifique-se de ter os grupos de segurança e as regras necessários configurados para acesso.
Links Relacionados
Confirmação
- Autores - Akarsha I K (Arquiteto de Nuvem), Maninder Flora (Arquiteto de Nuvem)
Mais Recursos de Aprendizagem
Explore outros laboratórios em docs.oracle.com/learn ou acesse mais conteúdo de aprendizado gratuito no canal Oracle Learning YouTube. Além disso, visite education.oracle.com/learning-explorer para se tornar um Oracle Learning Explorer.
Para obter a documentação do produto, visite o Oracle Help Center.
Deploy Compute Instance and VCN using Pulumi in Oracle Cloud Infrastructure
F99045-01
May 2024