Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Distribuisci l'istanza di computazione e la VCN utilizzando Pulumi in Oracle Cloud Infrastructure
Introduzione
In questa esercitazione verranno distribuite l'istanza di computazione e le reti cloud virtuali (VCN) utilizzando Pulumi. Con la semplicità di Pulumi e l'infrastruttura solida di Oracle Cloud Infrastructure (OCI), imparerai ad automatizzare facilmente i processi di implementazione. Imparerai come distribuire e gestire le risorse OCI con facilità, sbloccando nuove possibilità nella distribuzione cloud.
Obiettivo
- Implementa l'istanza di computazione e le risorse VCN utilizzando Pulumi Infrastructure come strumento di codice (IaC) in OCI.
Prerequisiti
- Installa e configura Pulumi, i provider OCI e imposta le variabili di ambiente di OCI. Per ulteriori informazioni, vedere Installa e configura l'infrastruttura Pulumi come codice su Oracle Cloud Infrastructure.
Task 1: Creare una VCN
Distribuisci una VCN utilizzando Pulumi.
-
Crea una nuova cartella per il progetto Pulumi.
-
Aprire il terminale o il prompt dei comandi.
-
Accedere alla cartella in cui si desidera creare il progetto Pulumi. È possibile utilizzare il comando
cd
per spostarsi nella directory. -
Creare una nuova directory per il progetto.
Ad esempio:
mkdir my-oci-project cd my-oci-project
-
-
Eseguire il comando riportato di seguito per creare un nuovo progetto Pulumi utilizzando il modello Python OCI. Qui si rae utilizzando python come il langauge di programmazione per pulumi, ma è possibile utilizzare uno qualsiasi dei linguaggi di programmazione supportati di vostra scelta.
pulumi new oci-python
-
Pulumi ti chiederà di configurare il tuo progetto. Immettere le informazioni necessarie, ad esempio il nome del progetto, la descrizione del progetto e il nome dello stack, quindi fare clic su Invio.
Ad esempio:
Project name: my-oci-project Project description: This is an example of OCI Compute and VCN deployment Stack name: Dev
-
Copiare e personalizzare il codice.
-
Pulumi creerà un file Python di base denominato
__main__.py
nella directory del progetto. -
Aprire questo file utilizzando un editor di testo o IDE VS Code.
-
Scrivere il codice dell'infrastruttura OCI utilizzando l'SDK Python di Pulumi e definire la VCN, le subnet, i gruppi di sicurezza e così via. Ad esempio, copiare il codice Python fornito in un nuovo file denominato
__main__.py
e personalizzare il codice sostituendo i valori dei segnaposto con gli ID e i nomi visualizzati effettivi del compartimento OCI. Queste modifiche garantiscono che le risorse vengano create nel compartimento corretto e abbiano nomi significativi."""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")
Questo codice esegue il provisioning di una VCN in OCI insieme alle risorse associate. Crea un gateway Internet, allega una tabella di instradamento per l'instradamento e imposta una lista di sicurezza per il controllo del traffico di rete. Inoltre, crea una subnet pubblica e privata all'interno della VCN, ognuna con configurazioni di rete specifiche come i blocchi CIDR e le etichette DNS. Garantisce che la subnet privata proibisca l'accesso a Internet e l'assegnazione IP pubblica alle istanze, migliorando la sicurezza della rete.
-
-
Distribuire un codice VCN.
-
Eseguire il comando riportato di seguito per distribuire una risorsa VCN.
pulumi up
-
Pulumi rileverà le risorse definite nel tuo codice e ti chiederà di confermare la distribuzione. Rivedere le modifiche e, quando richiesto, immettere
yes
per continuare.
-
-
Una volta completata la distribuzione, verifica che il provisioning della VCN e di altre risorse sia stato eseguito in OCI. Puoi controllare la console OCI o utilizzare l'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI) per elencare le risorse nel tuo compartimento.
Task 2: creare un'istanza di calcolo
Espandiamo la distribuzione OCI aggiungendo istanze di OCI Compute alla VCN esistente utilizzando Pulumi.
-
Per accedere al progetto Pulumi, vai alla directory contenente il tuo progetto Pulumi e apri il file
__main__.py
. -
Copiare il codice seguente e incollarlo nel file
__main__.py
da aggiornare dopo il codice di distribuzione della VCN esistente.# 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"])
Sostituire
ocid1.compartment.oc1.xxxxxxx
con l'ID compartimento,VM.Standard.E4.Flex
con la forma dell'istanza desiderata,ocid1.image.oc1.iad.xxxxxxx
con l'ID immagine desiderato eYOUR_SSH_PUBLIC_KEY
con la chiave pubblica SSH. -
Salvare le modifiche in
__main__.py
e distribuire lo stack aggiornato utilizzando l'interfaccia della riga di comando Pulumi.pulumi up
-
Dopo la distribuzione, verificare che il provisioning dell'istanza di computazione sia stato eseguito correttamente all'interno della VCN. È possibile controllare la console OCI o utilizzare l'interfaccia CLI OCI per elencare l'istanza nel compartimento.
-
Ora puoi accedere all'istanza di OCI Compute tramite SSH. Assicurarsi di disporre dei gruppi e delle regole di sicurezza necessari configurati per l'accesso.
Collegamenti correlati
Conferma
- Autori - Akarsha I K (Cloud Architect), Maninder Flora (Cloud Architect)
Altre risorse di apprendimento
Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.
Per la documentazione del prodotto, visitare Oracle Help Center.
Deploy Compute Instance and VCN using Pulumi in Oracle Cloud Infrastructure
F99042-01
May 2024