Ce module fournit le bootstrap initial nécessaire pour fournir un nouveau réseau cloud virtuel (VCN) et d'autres services facultatifs dans Oracle Cloud Infrastructure (OCI).
Un VCN est la base fondamentale d'un réseau dans OCI. Ce module offre la possibilité de créer les ressources suivantes:
| Ressource | Créé par défaut? |
|---|---|
| VCN | Non (facultatif) |
| Passerelle Internet | Non (facultatif) |
| Passerelle nat | Non (facultatif) |
| Passerelle de service | Non (facultatif) |
| Passerelle de routage dynamique | Non (facultatif) |
| Bastion | Non (facultatif) |
En utilisant ce module, un réseau de cloud de base sera créé, y compris les chemins de communication fondamentaux de base (pour la plupart des cas d'utilisation, mais pas tous). Pour les situations où VPN-Connect, FastConnect ou VCN peering est nécessaire, ces services devront être construits sur le VCN déployé par ce module.
Plusieurs exemples entièrement fonctionnels ont été fournis dans le répertoire examples . Reportez-vous à README.md dans chaque exemple de répertoire pour les directions spécifiques à chaque exemple.
Pour commencer rapidement, pour le déploiement minimum, vous pouvez utiliser l'exemple suivant:
module "oci_network" {
source = "../../"
#source = "oracle-terraform-modules/default-vcn/oci"
default_compartment_id = "${var.compartment_id}"
}
Cela déploiera un VCN à l'aide des défauts de paramètres du module. Passez en revue cette lecture pour une description détaillée de ces paramètres.
Ce module de service de base est généralement utilisé lors du déploiement, sans aucun autre accès requis; Vous devrez peut-être accéder à un bastion, s'il a été demandé d'être créé dans le cadre de la solution.
Vous pouvez continuer à gérer l'environnement déployé à l'aide de Terraform (le meilleur), l'OCI CLI, la console OCI (UI), directement via l'API, etc.
| Attribut | Type de données | Requis | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|---|
| default_compartment_id | chaîne | Oui | aucun | chaîne du compartiment OCID | Il s'agit de l'OCID par défaut qui sera utilisé lors de la création d'objets (sauf dépassement pour un objet spécifique). Cela doit être l'OCID d'un compartiment préexistant (il ne créera pas le compartiment). |
| VCN_OPTIONS | carte | Non | voir ci-dessous | voir ci-dessous | Les paramètres facultatifs qui peuvent être utilisés pour personnaliser le VCN. |
| existant_vcn_id | chaîne | Non | nul | L'OCID de tout VCN préexistant | Si un nouveau VCN ne doit pas être créé, l'OCID d'un VCN existant doit être fourni ici. Toutes les ressources créées feront partie de ce VCN préexistant (si un VCN n'est pas fourni). |
Notez que lorsque le VCN est créé, les ressources par défaut (table de route, liste de sécurité et options DHCP) sont laissées telles quelles (non modifiées de quelque manière que ce soit). Souvent, ces ressources ne sont pas utilisées. Voir la documentation autour des ressources par défaut, des composants par défaut qui sont livrés avec votre VCN et les listes de sécurité par défaut pour plus d'informations.
vcn_options
L'attribut vcn_options est un attribut de carte facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). Il a les touches définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| display_name | chaîne | "VCN" | Tout nom acceptable pour l'API OCI. | Utilisé pour définir un nom spécifique pour votre VCN. |
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| défini_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises définies doivent être définies sur cette ressource, faites-le avec cet attribut. |
| freeform_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises Freeform doivent être définies sur cette ressource, faites-le avec cet attribut. |
| cière | chaîne | "10.0.0.0/16" | IPv4 CIDR | Spécifiez le CIDR IPv4 à utiliser pour le VCN. |
| activer_dns | bool | vrai | Vrai / faux | Si DNS doit être activé ou non sur le VCN. |
| DNS_LABEL | chaîne | "VCN" | Nom DNS valide. | Spécifiez l'étiquette DNS à utiliser pour le VCN. Si cette valeur est nul, DNS sera désactivé pour le VCN. |
Exemple
L'exemple suivant crée VCN avec un CIDR de 10.0.0.0/24, le nom d'affichage du test du module , l'étiquette DNS de TestVCN et utilisent le compartiment par défaut OCID (non illustré dans l'exemple ci-dessus).
module "oci_network" {
... /snip - shortened for brevity...
vcn_options = {
display_name = "Module test"
cidr = "10.0.0.0/24"
enable_dns = true
dns_label = "testvcn"
compartment_id = null
defined_tags = null
freeform_tags = null
}
}
| Attribut | Type de données | Requis | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|---|
| create_igw | bool | Non | FAUX | Vrai / faux | Que ce soit ou non un IGW doit être créé dans le VCN. |
| igw_options | carte | Non | voir ci-dessous | voir ci-dessous | Les paramètres facultatifs qui peuvent être utilisés pour personnaliser l'IGW. |
igw_options
L'attribut igw_options est un attribut de carte facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). Il a les touches définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| display_name | chaîne | "Igw" | Tout nom acceptable pour l'API OCI. | Utilisé pour définir un nom spécifique pour votre IGW. |
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| défini_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises définies doivent être définies sur cette ressource, faites-le avec cet attribut. |
| freeform_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises Freeform doivent être définies sur cette ressource, faites-le avec cet attribut. |
| activé | bool | vrai | Vrai / faux | Si l'IGW doit être activé ou non. |
Exemple
module "oci_network" {
... /snip - shortened for brevity...
igw_options = {
display_name = "my_igw"
compartment_id = null
defined_tags = null
freeform_tags = null
enabled = false
}
}
L'exemple ci-dessus créera un IGW (activé) dans le VCN avec un nom d'affichage de MY_IGW et utilise le compartiment par défaut OCID (non illustré dans l'exemple ci-dessus).
| Attribut | Type de données | Requis | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|---|
| create_natgw | bool | Non | FAUX | Vrai / faux | Que ce soit ou non un NATGW doit être créé dans le VCN. |
| natgw_options | carte | Non | voir ci-dessous | voir ci-dessous | Les paramètres facultatifs qui peuvent être utilisés pour personnaliser le NATGW. |
natgw_options
L'attribut natgw_options est un attribut MAP facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). Il a les touches définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| display_name | chaîne | "Natgw" | Tout nom acceptable pour l'API OCI. | Utilisé pour définir un nom spécifique pour votre IGW. |
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| défini_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises définies doivent être définies sur cette ressource, faites-le avec cet attribut. |
| freeform_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises Freeform doivent être définies sur cette ressource, faites-le avec cet attribut. |
| block_traffic | bool | FAUX | Vrai / faux | Que le NATGW soit ou non bloqué le trafic. |
Exemple
module "oci_network" {
... /snip - shortened for brevity...
natgw_options = {
display_name = "my_natgw"
compartment_id = null
defined_tags = null
freeform_tags = null
block_traffic = false
}
}
L'exemple ci-dessus créera un NATGW dans le VCN avec un nom d'affichage de MY_NATGW , il ne bloquera pas le trafic et utilisera le compartiment par défaut OCID (non illustré dans l'exemple ci-dessus).
| Attribut | Type de données | Requis | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|---|
| create_svcgw | bool | Non | FAUX | Vrai / faux | Si un SVCGW doit être créé ou non dans le VCN. |
| svcgw_options | carte | Non | voir ci-dessous | voir ci-dessous | Les paramètres facultatifs qui peuvent être utilisés pour personnaliser le SVCGW. |
svcgw_options
L'attribut svcgw_options est un attribut MAP facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). Il a les touches définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| display_name | chaîne | "svcgw" | Tout nom acceptable pour l'API OCI. | Utilisé pour définir un nom spécifique pour votre SVCGW. |
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| défini_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises définies doivent être définies sur cette ressource, faites-le avec cet attribut. |
| freeform_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises Freeform doivent être définies sur cette ressource, faites-le avec cet attribut. |
| services | liste (chaîne) | nul | Le (s) OCID (s) de tout service de passerelle OCI valide. | Fournir le service qui devrait être autorisé par la passerelle de service. Utilisez la sortie du module svcgw_services pour une liste de services dans la région (voir ci-dessous pour un exemple de cela). |
Exemple
module "oci_network" {
... /snip - shortened for brevity...
svcgw_options = {
display_name = "my_svcgw"
compartment_id = null
defined_tags = null
freeform_tags = null
services = [
module.oci_network.svcgw_services.0.id
]
}
}
L'exemple ci-dessus créera un SVCGW dans le VCN avec un nom d'affichage de MY_SVCGW , utilise le compartiment par défaut OCID (non illustré dans l'exemple ci-dessus) et utilisera le premier service dans la liste des services disponibles dans la région.
| Attribut | Type de données | Requis | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|---|
| create_drg | bool | Non | FAUX | Vrai / faux | Si un DRG doit être créé ou non dans le VCN. |
| DRG_OPTIONS | carte | Non | voir ci-dessous | voir ci-dessous | Les paramètres facultatifs qui peuvent être utilisés pour personnaliser le DRG. |
drg_options
L'attribut drg_options est un attribut de carte facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). Il a les touches définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| display_name | chaîne | "DRG" | Tout nom acceptable pour l'API OCI. | Utilisé pour définir un nom spécifique pour votre DRG. |
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| défini_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises définies doivent être définies sur cette ressource, faites-le avec cet attribut. |
| freeform_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises Freeform doivent être définies sur cette ressource, faites-le avec cet attribut. |
| Route_Table_id | chaîne | nul | L'OCID de toute table d'itinéraire OCI valide et préexistante. | Ceci est facultatif, mais dans les cas où une association de table d'itinéraire est souhaitée (avec le DRG), c'est l'endroit idéal pour établir cette association. |
Exemple
module "oci_network" {
... /snip - shortened for brevity...
drg_options = {
display_name = "my_drg"
compartment_id = null
defined_tags = null
freeform_tags = null
route_table_id = null
}
}
L'exemple ci-dessus créera un SVCGW dans le VCN avec un nom d'affichage de MY_DRG , utilise le compartiment par défaut OCID (non illustré dans l'exemple ci-dessus) et n'associera aucune table d'itinéraire au DRG.
L'attribut route_tables est un attribut MAP facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). La clé indique le nom d'affichage de la table d'itinéraire, tandis que la valeur est une carte qui définit les attributs. La valeur est une carte qui a les clés définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| défini_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises définies doivent être définies sur cette ressource, faites-le avec cet attribut. |
| freeform_tags | map (chaîne) | {} | Toute carte des noms de balises et des valeurs acceptables pour l'API OCI. | Si des balises Freeform doivent être définies sur cette ressource, faites-le avec cet attribut. |
| Route_rules | Liste (objet) - Voir ci-dessous | {} | Voir ci-dessous | C'est facultatif, mais c'est l'endroit où les règles de route sont configurées. |
route_rules
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| Next_hop_id | chaîne | aucun | OCID d'une prochaine ressource de houblon | C'est là que le prochain HOP est spécifié. |
| dst_type | chaîne | aucun | Cidr_block , service_cidr_block | Spécifiez quel type de destination est donné dans l'attribut DST . |
| DST | chaîne | aucun | Une destination OCI valide (CIDR ou service CIDR). | Spécifiez la destination (réseau distant) à utiliser pour cette règle d'itinéraire. |
Exemple
module "oci_network" {
... /snip - shortened for brevity...
route_tables = {
rt1 = {
display_name = "my_drg"
compartment_id = null
defined_tags = null
freeform_tags = null
route_rules = [
{
dst = "0.0.0.0/0"
dst_type = "CIDR_BLOCK"
next_hop_id = local.next_hop_ids["igw"]
}
]
}
}
}
L'exemple ci-dessus créera une table d'itinéraire dans le VCN avec un nom d'affichage de RT1 en utilisant le compartiment par défaut OCID (non illustré dans l'exemple ci-dessus), contenant une règle d'itinéraire (pointant un itinéraire par défaut vers la passerelle Internet).
L'attribut dhcp_options est un attribut MAP facultatif. Notez que si cet attribut est utilisé, toutes les clés / valeurs doivent être spécifiées (Terraform ne permet pas les touches / valeurs de carte par défaut ou en option). La clé indique le nom d'affichage de la table d'itinéraire, tandis que la valeur est une carte qui définit les attributs. La valeur est une carte qui a les clés définies suivantes (et les valeurs par défaut):
| Clé | Type de données | Valeur par défaut | Valeurs valides | Description |
|---|---|---|---|---|
| compartiment_id | chaîne | nul | Compartiment OCID | OCID du compartiment préexistant (si le compartiment par défaut ne doit pas être utilisé). Si cette valeur est nul, le compartiment par défaut OCID sera utilisé. |
| server_type | chaîne | "VCNLocalPluSinternet" | VCNLOCALPLUSINterneT , CustomDnsServer | L'une des valeurs autorisées par l'API OCI. |
| search_domain_name | chaîne | "$ {OCI_CORE_VCN.THIS.DNS_LABEL} .oraclevcn.com" Si local.vcn_with_dns est défini, null autrement | Fournissez un nom DNS valide à utiliser. | Cela sera donné comme le domaine à rechercher. |
| redirecteur_1_ip | chaîne | nul | Toute adresse IP valide | Ceci est utilisé lorsqu'un serveur DNS personnalisé est spécifié. |
| redirecteur_2_ip | chaîne | nul | Toute adresse IP valide | Ceci est utilisé lorsqu'un serveur DNS personnalisé est spécifié. |
| redirecteur_3_ip | chaîne | nul | Toute adresse IP valide | Ceci est utilisé lorsqu'un serveur DNS personnalisé est spécifié. |
Exemple
module "oci_network" {
... /snip - shortened for brevity...
dhcp_options = {
custom = {
compartment_id = null
server_type = local.dhcp_option_types["custom"]
forwarder_1_ip = "10.0.0.11"
forwarder_2_ip = "10.0.2.11"
forwarder_3_ip = null
search_domain_name = "test.local"
}
vcn = {
compartment_id = null
server_type = local.dhcp_option_types["vcn"]
forwarder_1_ip = null
forwarder_2_ip = null
forwarder_3_ip = null
search_domain_name = null
}
}
}
L'exemple ci-dessus créera deux options DHCP, une personnalisée nommée, qui a deux adresses IP utilisées et fait référence au type d'option DHCP personnalisé. L'option VCN DHCP est assez basique, indiquant simplement qu'il doit utiliser VCNLocalPluSinternet et le nom VCN .
Chaque ressource discrète créée par le module sera exportée, permettant l'accès à tous les attributs retournés pour la ressource.
| Ressource | Toujours retourné? | Description |
|---|---|---|
| publicités | Oui | La liste des annonces disponibles pour la région dans laquelle vous travaillez. |
| VCN | Non* | La ressource VCN qui a été créée par le module. |
| IGW | Non* | La ressource IGW créée par le module (si elle a été demandée / créée). |
| natgw | Non* | La ressource NATGW créée par le module (si elle a été demandée / créée). |
| svcgw | Non* | La ressource SVCGW créée par le module (si elle a été demandée / créée). |
| svcgw_services | Oui | Les services disponibles qui peuvent être utilisés. |
| DRG | Non* | Les ressources DRG et DrGattachment créées par le module (si elles ont été demandées / créées). Notez que le DRG est accessible via DRG.DRG et DRGATTACHMENT via DRG.DRG_ATTACHment. |
| Route_Tables | Non* | Les tableaux d'itinéraire créés / gérés par le module (s'il a été demandé / créé). Une carte est renvoyée, où la clé est le nom de la table d'itinéraire et la valeur est une liste complète de tous les attributs de ressources. |
| dhcp_options | Non* | Les options DHCP créées / gérées par le module (si elle a été demandée / créée). Une carte est renvoyée, où la clé est le nom de l'option DHCP et la valeur est une liste complète de tous les attributs de ressources. |
* RETOURNÉ UNIQUEMENT lorsque la ressource a été invitée à être créée.
Notez que vous pouvez toujours référencer les sorties (même si elles ne sont pas renvoyées) sans provoquer d'erreur dans Terraform (il doit être suffisamment intelligent pour ne pas lancer une erreur dans ces cas).
vcn_options , igw_options , etc.), vous devez les fournir tous. Les cartes n'ont pas de notion de valeur facultative (ou par défaut) pour les clés dans la carte, nécessitant que toutes les clés / valeurs soient passées (si une clé est passée, toutes les clés doivent être transmises).terraform destroy , alors terraform apply (au lieu de vous fier à terraform apply à gérer correctement les choses): Error: Cycle: module.oci_network.oci_core_nat_gateway.this[0], module.oci_network.output.natgw, module.oci_network.oci_core_service_gateway.this[0], module.oci_network.output.svcgw, module.oci_network.oci_core_service_gateway.this[0] (destroy), module.oci_network.oci_core_nat_gateway.this[0] (destroy), module.oci_network.oci_core_vcn.this[0] (destroy), module.oci_network.oci_core_drg_attachment.this[0], module.oci_network.oci_core_route_table.this[1] (destroy), module.oci_network.oci_core_drg_attachment.this[0] (destroy), module.oci_network.output.drg, local.next_hop_ids, module.oci_network.var.route_tables, module.oci_network.oci_core_route_table.this (prepare state), module.oci_network.oci_core_route_table.this[0] (destroy), module.oci_network.oci_core_internet_gateway.this[0] (destroy), module.oci_network.oci_core_internet_gateway.this[0], module.oci_network.output.igw
Voir les notes de publication pour les informations sur les notes de publication.
Ce module a été développé et testé en exécutant Terraform sur MacOS Mojave version 10.14.5
user-mac$ terraform --version
Terraform v0.12.3
+ provider.oci v3.31.0
Ce projet est open source. Oracle apprécie toutes les contributions faites par la communauté open source.
Copyright (C) 2020 Oracle et / ou ses affiliés.
Licencié sous la licence Universal Permisssive V 1.0 comme indiqué sur https://oss.oracle.com/licenses/upl.
Voir la licence pour plus de détails.