Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Déployer une instance de calcul et un VCN à l'aide de Pulumi dans Oracle Cloud Infrastructure
Présentation
Dans ce tutoriel, nous allons déployer une instance de calcul et des réseaux en nuage virtuels (VCN) à l'aide de Pulumi. Avec 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, ouvrant de nouvelles possibilités pour le déploiement en nuage.
Objectif
- Déployez des ressources d'instance de calcul et de VCN à l'aide de l'outil d'infrastructure Pulumi en tant que code (IaC) dans OCI.
Préalables
- Installez et configurez Pulumi, fournisseurs OCI et définissez les variables d'environnement d'OCI. Pour plus d'informations, voir Installer et configurer Pulumi Infrastructure en tant que code sur Oracle Cloud Infrastructure.
Tâche 1 : Créer un réseau VCN
Déployez un VCN à l'aide de Pulumi.
-
Créez un nouveau répertoire pour le projet Pulumi.
-
Ouvrez le terminal ou l'invite de commande.
-
Naviguez jusqu'au répertoire où vous souhaitez créer votre projet Pulumi. Vous pouvez utiliser la commande
cd
pour modifier des répertoires. -
Créez un nouveau répertoire pour votre projet.
Par exemple :
mkdir my-oci-project cd my-oci-project
-
-
Exécutez la commande suivante pour créer un nouveau projet Pulumi à l'aide du modèle Python pour OCI. Ici, nous utilisons python comme langue de programmation pour pulumi, mais vous pouvez utiliser n'importe quel langage de programmation pris 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, la description du projet et le nom de la pile, puis cliquez sur Entrée.
Par 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 IDE VS Code.
-
Écrivez votre code d'infrastructure OCI à l'aide de la trousse 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 de paramètre fictif par vos ID compartiment OCI et noms d'affichage réels. Ces modifications garantissent que vos ressources sont créées dans le compartiment approprié et ont 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 les ressources qui lui sont associées. Elle crée une passerelle Internet, lui associe 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 un sous-réseau public et 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'adresse IP publique aux instances, améliorant ainsi la sécurité du réseau.
-
-
Déployer un code de VCN.
-
Exécutez la commande suivante pour déployer une ressource de 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, à l'invite, 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 vérifier la console OCI ou utiliser l'interface de ligne de commande d'Oracle Cloud Infrastructure pour lister les ressources de votre compartiment.
Tâche 2 : Créer une instance du service de calcul
Développons le déploiement OCI en ajoutant des instances de calcul OCI à votre VCN existant à l'aide de Pulumi.
-
Pour accéder au projet Pulumi, naviguez jusqu'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
à mettre à jour après le code de déploiement du 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 votre ID compartiment,VM.Standard.E4.Flex
par la forme d'instance souhaitée,ocid1.image.oc1.iad.xxxxxxx
par l'ID image souhaité etYOUR_SSH_PUBLIC_KEY
par votre 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 vérifier la console OCI ou utiliser l'interface de ligne de commande OCI pour lister l'instance dans votre compartiment.
-
Vous pouvez maintenant accéder à l'instance de calcul OCI au moyen de 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 en nuage), Maninder Flora (architecte en nuage)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez 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
F99040-01
May 2024