From 266d20f1949f34b7a4f44c983b89709219c31b45 Mon Sep 17 00:00:00 2001 From: Jose Martinez Date: Fri, 13 Mar 2026 14:01:53 +0100 Subject: [PATCH] Initial commit: meraki network configuration --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 7 +++ .terraform.lock.hcl | 25 +++++++++ modules/.DS_Store | Bin 0 -> 6148 bytes modules/meraki-site/main.tf | 41 ++++++++++++++ modules/meraki-site/outputs.tf | 17 ++++++ modules/meraki-site/variables.tf | 54 ++++++++++++++++++ sites/.DS_Store | Bin 0 -> 6148 bytes sites/bcn01/firewall.auto.tfvars | 33 +++++++++++ sites/bcn01/main.tf | 22 ++++++++ sites/bcn01/variables.tf | 46 ++++++++++++++++ sites/bcn01/vlans.auto.tfvars | 92 +++++++++++++++++++++++++++++++ 12 files changed, 337 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 .terraform.lock.hcl create mode 100644 modules/.DS_Store create mode 100644 modules/meraki-site/main.tf create mode 100644 modules/meraki-site/outputs.tf create mode 100644 modules/meraki-site/variables.tf create mode 100644 sites/.DS_Store create mode 100644 sites/bcn01/firewall.auto.tfvars create mode 100644 sites/bcn01/main.tf create mode 100644 sites/bcn01/variables.tf create mode 100644 sites/bcn01/vlans.auto.tfvars diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..974644a9f69bcca1da46687b7932d7815fbf6949 GIT binary patch literal 6148 zcmeHKJ5Iw;5S)b|BGIIzd{^KGR+OB83m`BBl93CO-WBKKXqo*8h#W*kgJz|D^WJ!O zpFD-v3&6IA{tnmxSkoQx?#t5rx%Sw@pkx7BSR^SMnv>P4( literal 0 HcmV?d00001 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..820c217 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +# Estado de Terraform - nunca en git +*.tfstate +*.tfstate.backup + +# Directorio de trabajo de Terraform (binarios del provider) +.terraform/ + diff --git a/.terraform.lock.hcl b/.terraform.lock.hcl new file mode 100644 index 0000000..ca0370f --- /dev/null +++ b/.terraform.lock.hcl @@ -0,0 +1,25 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/ciscodevnet/meraki" { + version = "1.9.0" + constraints = "~> 1.9.0" + hashes = [ + "h1:KmWz0JvCHdDd3AtuawxUwmW0VN3fooGw4CRaxiKHT5Y=", + "zh:0b9a7d32f331998a2a1531811667be44f799dfc03f6929f1414d2cab69f659f2", + "zh:179f791e2aa0ca6353541d90956548033b9ee0c880a096e48ce3ae3fe8a1862e", + "zh:2a1a32c6a8068c194e19859a7d88e0b95d0d9cbcf31444454b055ed62ace715a", + "zh:491812b74919d131f4ef3ba968d10b678275ed201428e2af7f53df40fd7e8cee", + "zh:4f5043f5165ee5199a61e4c15230d9f973ed0211a06600d75638f8369bac73fa", + "zh:5679d5a0d5dd370ff5d9321913f293f76be8f7ebc25e5cf1b45ceed9de803348", + "zh:58e1faba3d322bca68efb5cdac1ebe4e6d6f92834ebe5ccff8e491685620185c", + "zh:861b04ee4a498070cfb581488ddc3e90b25be895d35861c2a03a3b224d28e9b5", + "zh:890df766e9b839623b1f0437355032a3c006226a6c200cd911e15ee1a9014e9f", + "zh:92ee52e0dd3372e6dc2ed21bf5b21124b646c4c1037477e66eae87614d814036", + "zh:a3a851a3ce0c32b17506da0b9370f9d31df8e9d5ed4b422dc09ff5337d4b4192", + "zh:cdac168b00fa658ec68862677cb0b00f356095654e6b1d0df823c330492fa753", + "zh:dc454d6b1051891c99051b92e61015d244eb320a5a491cbffb770a005e448898", + "zh:f14317688e068e40dc11f609c4dc4f81cfa50fbaa43dcbe0117725f1149e9d89", + "zh:fe0544ac117d0c643559f042996fa32f243988bc48d4d49875abad6b326f0e2e", + ] +} diff --git a/modules/.DS_Store b/modules/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..eb16e4e8bc6b4b50c54af6550e3270b7830d46d3 GIT binary patch literal 6148 zcmeHKyG{c^3>-s>NNG}1?hjD#2dgN20Y4BRDG))C2AI<5Y3r#eZ?Ai5t z_HQyC-DdB;26aE~M7*QEOQgmV}8zz&~y9`SeE zLj3PX|Mc0K^&7 zVO+;7L2RBN_QD~N8JZ=Pm{h9~!;;Q?tGZq|BqkkJ!-v(AttJ$Ur}O?6<*=TpC v.vlan_id } +} + +# Nombre del perfil de VLANs creado +output "vlan_profile_name" { + description = "Nombre del perfil de VLANs asignado al site" + value = meraki_network_vlan_profile.site_profile.name +} diff --git a/modules/meraki-site/variables.tf b/modules/meraki-site/variables.tf new file mode 100644 index 0000000..ec4a72a --- /dev/null +++ b/modules/meraki-site/variables.tf @@ -0,0 +1,54 @@ +# Definición de la Organización +variable "organization_name" { + type = string + description = "Nombre exacto de tu organización en el Dashboard de Meraki" +} + +# Definición de la Red +variable "network_name" { + type = string + description = "Nombre de la red (Network)" +} + + +# Reglas de firewall L3 +variable "firewall_rules" { + type = list(object({ + comment = string + policy = string + protocol = string + src_cidr = string + src_port = string + dest_cidr = string + dest_port = string + syslog_enabled = optional(bool, false) + })) + default = [] + description = "Reglas de firewall L3 para el site. Se aplican en orden, antes de la regla allow-all implícita de Meraki" +} + +# Definición del mapa de VLANs +variable "switch_vlans" { + type = map(object({ + name = string + subnet = string + appliance_ip = string + dhcp_handling = optional(string, "Run a DHCP server") + reserved_ip_ranges = optional(list(object({ + comment = string + id = string + start = string + end = string + })), []) + })) + description = "VLANs para el site" + + validation { + condition = alltrue([ + for v in values(var.switch_vlans) : + contains(["Run a DHCP server", "Relay DHCP to another server", "Do not respond to DHCP requests"], v.dhcp_handling) + ]) + error_message = "dhcp_handling debe ser uno de: 'Run a DHCP server', 'Relay DHCP to another server', 'Do not respond to DHCP requests'." + } +} + diff --git a/sites/.DS_Store b/sites/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a0955caee726f65753acde48b11d6ed232ae5f73 GIT binary patch literal 6148 zcmeH~J&pn~427RzRzjko+%gUQa)SuL3An(Dp+rl8w$IV`*>S@_y&9os$$7C8&(Bv( z#sF;pd)WaS04usHwmwYE7=Pf55kL6C?s6Zm=iBY-X)JQD2XtQJaXptMA|L`HAOa#F z0y82Ihd9sw^^BfLk0JshFb@L$eJFI-n%cU?r-MVZ0Mvo$FwUcwpcYS1YijGt49&88 zuq?G`Lp&el)ROyZYU|p|VcC3G-r2m1p;<476$Uh`AsR$L1SSNQJ>K~Ff26