Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeur pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. A la fin de l'exercice, remplacez ces valeurs par des valeurs propres à votre environnement cloud.
Déployez l'instance de calcul et le VCN à l'aide de Pulumi dans Oracle Cloud Infrastructure
Introduction
Dans ce tutoriel, nous allons déployer une instance de calcul et des réseaux cloud virtuels (VCN) à l'aide de Pulumi. Grâce à la simplicité de Pulumi et à l'infrastructure robuste d'Oracle Cloud Infrastructure (OCI), vous apprendrez à automatiser les processus de déploiement sans effort. Vous apprendrez à déployer et à gérer facilement des ressources OCI, en exploitant de nouvelles possibilités de déploiement dans le cloud.
Objectif
- Déployez des ressources d'instance de calcul et VCN à l'aide de l'outil Pulumi Infrastructure en tant que code (IaC) dans OCI.
Prérequis
- Installez et configurez Pulumi, fournisseurs OCI et définissez les variables d'environnement d'OCI. Pour plus d'informations, reportez-vous à Installation et configuration de Pulumi Infrastructure as Code sur Oracle Cloud Infrastructure.
Tâche 1 : créer un VCN
Déployez un VCN à l'aide de Pulumi.
-
Créez un répertoire pour le projet Pulumi.
-
Ouvrez le terminal ou l'invite de commande.
-
Accédez au répertoire dans lequel vous souhaitez créer votre projet Pulumi. Vous pouvez utiliser la commande
cd
pour changer de répertoire. -
Créez un répertoire pour votre projet.
Exemple :
mkdir my-oci-project cd my-oci-project
-
-
Exécutez la commande suivante pour créer un projet Pulumi à l'aide du modèle OCI Python. Ici, nous utilisons python comme langue de programmation pour pulumi, mais vous pouvez utiliser n'importe quelle langue de programmation prise en charge de votre choix.
pulumi new oci-python
-
Pulumi vous demandera de configurer votre projet. Entrez les informations nécessaires, telles que le nom du projet, sa description et le nom de la pile, puis cliquez sur Entrée.
Exemple :
Project name: my-oci-project Project description: This is an example of OCI Compute and VCN deployment Stack name: Dev
-
Copiez et personnalisez le code.
-
Pulumi créera un fichier Python de base nommé
__main__.py
dans votre répertoire de projet. -
Ouvrez ce fichier à l'aide d'un éditeur de texte ou d'un IDE VS Code.
-
Ecrivez votre code d'infrastructure OCI à l'aide du kit SDK Python de Pulumi et définissez votre VCN, vos sous-réseaux, vos groupes de sécurité, etc. Par exemple, copiez le code Python fourni dans un nouveau fichier nommé
__main__.py
et personnalisez le code en remplaçant les valeurs d'espace réservé par les ID de compartiment OCI et les noms d'affichage réels. Ces modifications garantissent que vos ressources sont créées dans le compartiment approprié et portent des noms significatifs."""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")
Ce code provisionne un VCN dans OCI avec ses ressources associées. Il crée une passerelle Internet, lui attache une table de routage pour le routage et configure une liste de sécurité pour le contrôle du trafic réseau. En outre, il crée à la fois un sous-réseau public et un sous-réseau privé dans le VCN, chacun avec des configurations réseau spécifiques telles que des blocs CIDR et des étiquettes DNS. Il garantit que le sous-réseau privé interdit l'accès Internet et l'affectation d'adresses IP publiques aux instances, ce qui améliore la sécurité du réseau.
-
-
Déployez un code VCN.
-
Exécutez la commande suivante pour déployer une ressource VCN.
pulumi up
-
Pulumi détectera les ressources définies dans votre code et vous invitera à confirmer le déploiement. Vérifiez les modifications et, lorsque vous y êtes invité, entrez
yes
pour continuer.
-
-
Une fois le déploiement terminé, vérifiez que votre VCN et d'autres ressources ont été provisionnés dans OCI. Vous pouvez consulter la console OCI ou utiliser l'interface de ligne de commande Oracle Cloud Infrastructure (interface de ligne de commande OCI) pour répertorier les ressources de votre compartiment.
Tâche 2 : créer une instance de calcul
Développons le déploiement OCI en ajoutant des instances OCI Compute à votre VCN existant à l'aide de Pulumi.
-
Pour accéder au projet Pulumi, accédez au répertoire contenant votre projet Pulumi et ouvrez le fichier
__main__.py
. -
Copiez le code suivant et collez-le dans le fichier
__main__.py
pour le mettre à jour après votre code de déploiement VCN existant.# 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"])
Remplacez
ocid1.compartment.oc1.xxxxxxx
par l'ID de compartiment,VM.Standard.E4.Flex
par la forme d'instance souhaitée,ocid1.image.oc1.iad.xxxxxxx
par l'ID d'image souhaité etYOUR_SSH_PUBLIC_KEY
par la clé publique SSH. -
Enregistrez vos modifications dans
__main__.py
et déployez votre pile mise à jour à l'aide de l'interface de ligne de commande Pulumi.pulumi up
-
Après le déploiement, vérifiez que votre instance de calcul a été provisionnée avec succès dans le VCN. Vous pouvez consulter la console OCI ou utiliser l'interface de ligne de commande OCI pour répertorier l'instance dans votre compartiment.
-
Vous pouvez désormais accéder à l'instance OCI Compute via SSH. Assurez-vous que les groupes de sécurité et les règles nécessaires sont configurés pour l'accès.
Liens connexes
Remerciements
- Auteurs - Akarsha I K (Architecte Cloud), Maninder Flora (Architecte Cloud)
Ressources de formation supplémentaires
Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Deploy Compute Instance and VCN using Pulumi in Oracle Cloud Infrastructure
F99041-01
May 2024