Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse en una cuenta gratuita, consulte Introducción a Oracle Cloud Infrastructure Free Tier.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar el laboratorio, sustituya estos valores por otros específicos del entorno en la nube.
Despliegue de una instancia informática y una VCN con Pulumi en Oracle Cloud Infrastructure
Introducción
En este tutorial, desplegaremos la instancia informática y las redes virtuales en la nube (VCN) con Pulumi. Con la simplicidad de Pulumi y la sólida infraestructura de Oracle Cloud Infrastructure (OCI), aprenderás a automatizar los procesos de despliegue sin esfuerzo. Aprenderá a desplegar y gestionar recursos de OCI con facilidad, desbloqueando nuevas posibilidades en el despliegue en la nube.
Objetivo
- Despliegue recursos de instancia informática y VCN mediante la herramienta Infraestructura Pulumi como código (IaC) en OCI.
Requisitos
- Instalar y configurar Pulumi, proveedores de OCI y definir las variables de entorno de OCI. Para obtener más información, consulte Instalación y configuración de la infraestructura Pulumi como código en Oracle Cloud Infrastructure.
Tarea 1: Crear una VCN
Despliegue una VCN con Pulumi.
-
Cree un nuevo directorio para el proyecto Pulumi.
-
Abra el terminal o el símbolo del sistema.
-
Navegue al directorio donde desea crear su proyecto Pulumi. Puede utilizar el comando
cd
para cambiar directorios. -
Cree un nuevo directorio para el proyecto.
Por ejemplo:
mkdir my-oci-project cd my-oci-project
-
-
Ejecute el siguiente comando para crear un nuevo proyecto Pulumi con la plantilla de OCI Python. Aquí hacemos rae usando python como el lenguaje de programación para pulumi, pero puedes usar cualquiera de los lenguajes de programación compatibles de tu elección.
pulumi new oci-python
-
Pulumi te pedirá que configures tu proyecto. Introduzca la información necesaria, como el nombre del proyecto, la descripción del proyecto y el nombre de pila, y haga clic en Intro.
Por ejemplo:
Project name: my-oci-project Project description: This is an example of OCI Compute and VCN deployment Stack name: Dev
-
Copie y personalice el código.
-
Pulumi creará un archivo Python básico denominado
__main__.py
en el directorio del proyecto. -
Abra este archivo con un editor de texto o IDE VS Code.
-
Escriba su código de infraestructura de OCI mediante el SDK de Python de Pulumi y defina su VCN, subredes, grupos de seguridad, etc. Por ejemplo, copie el código Python proporcionado en un nuevo archivo denominado
__main__.py
y personalice el código sustituyendo los valores de marcador de posición por los ID de compartimento de OCI y los nombres mostrados reales. Estos cambios garantizan que los recursos se creen en el compartimento correcto y que tengan nombres 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")
Este código aprovisiona una VCN en OCI junto con sus recursos asociados. Crea un gateway de Internet, le asocia una tabla de rutas para el enrutamiento y configura una lista de seguridad para controlar el tráfico de red. Además, crea una subred pública y privada en la VCN, cada una con configuraciones de red específicas como bloques CIDR y etiquetas DNS. Garantiza que la subred privada prohíba el acceso a Internet y la asignación de IP pública a las instancias, lo que mejora la seguridad de la red.
-
-
Despliegue un código de VCN.
-
Ejecute el siguiente comando para desplegar un recurso de VCN.
pulumi up
-
Pulumi detectará los recursos definidos en el código y le solicitará que confirme el despliegue. Revise los cambios y, cuando se le solicite, introduzca
yes
para continuar.
-
-
Una vez completado el despliegue, verifique que la VCN y otros recursos se hayan aprovisionado en OCI. Puede comprobar la consola de OCI o utilizar la interfaz de línea de comandos (CLI de OCI) de Oracle Cloud Infrastructure para mostrar los recursos del compartimento.
Tarea 2: Crear una instancia informática
Vamos a ampliar el despliegue de OCI agregando instancias de OCI Compute a su VCN existente mediante Pulumi.
-
Para acceder al proyecto Pulumi, vaya al directorio que contiene el proyecto Pulumi y abra el archivo
__main__.py
. -
Copie el siguiente código y péguelo en el archivo
__main__.py
para actualizarlo después del código de despliegue de la 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"])
Sustituya
ocid1.compartment.oc1.xxxxxxx
por el ID de compartimento,VM.Standard.E4.Flex
por la unidad de instancia deseada,ocid1.image.oc1.iad.xxxxxxx
por el ID de imagen deseado yYOUR_SSH_PUBLIC_KEY
por la clave pública SSH. -
Guarde los cambios en
__main__.py
y despliegue la pila actualizada mediante la interfaz de línea de comandos Pulumi.pulumi up
-
Después del despliegue, verifique que la instancia informática se ha aprovisionado correctamente en la VCN. Puede comprobar la consola de OCI o utilizar la CLI de OCI para mostrar la instancia en el compartimento.
-
Ahora puede acceder a la instancia de OCI Compute a través de SSH. Asegúrese de que tiene configuradas las reglas y los grupos de seguridad necesarios para el acceso.
Enlaces relacionados
Confirmaciones
- Autores: Akarsha I K (arquitecto de nube), Maninder Flora (arquitecto de nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de aprendizaje gratuito en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en Oracle Learning Explorer.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Deploy Compute Instance and VCN using Pulumi in Oracle Cloud Infrastructure
F99039-01
May 2024