{"id":34742007,"url":"https://github.com/tf-scaleway-modules/terraform-scaleway-network","last_synced_at":"2026-05-17T16:02:34.792Z","repository":{"id":329100746,"uuid":"1116185523","full_name":"tf-scaleway-modules/terraform-scaleway-network","owner":"tf-scaleway-modules","description":"A Terraform module for creating and managing Scaleway Network infrastructure","archived":false,"fork":false,"pushed_at":"2025-12-14T11:47:40.000Z","size":26,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-20T22:47:31.431Z","etag":null,"topics":["module","network","scaleway","terraform","vpc"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tf-scaleway-modules.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-14T11:24:36.000Z","updated_at":"2025-12-14T11:51:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tf-scaleway-modules/terraform-scaleway-network","commit_stats":null,"previous_names":["tf-scaleway-modules/terraform-scaleway-network"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/tf-scaleway-modules/terraform-scaleway-network","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf-scaleway-modules%2Fterraform-scaleway-network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf-scaleway-modules%2Fterraform-scaleway-network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf-scaleway-modules%2Fterraform-scaleway-network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf-scaleway-modules%2Fterraform-scaleway-network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tf-scaleway-modules","download_url":"https://codeload.github.com/tf-scaleway-modules/terraform-scaleway-network/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tf-scaleway-modules%2Fterraform-scaleway-network/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28019145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-25T02:00:05.988Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["module","network","scaleway","terraform","vpc"],"created_at":"2025-12-25T04:18:30.174Z","updated_at":"2025-12-25T04:18:32.076Z","avatar_url":"https://github.com/tf-scaleway-modules.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Scaleway Network Terraform Module\n\n[![Apache 2.0][apache-shield]][apache]\n[![Terraform][terraform-badge]][terraform-url]\n[![Scaleway Provider][scaleway-badge]][scaleway-url]\n[![Latest Release][release-badge]][release-url]\n\nA Terraform module for creating and managing **Scaleway** Network infrastructure. This module provisions VPCs, private networks, public gateways with NAT, Access Control Lists for traffic filtering, and optional SSH bastion hosts. It supports multi-zone deployments for high availability and provides flexible network configuration with IPv4/IPv6 support.\n\n## Usage Examples\n\nA comprehensive examples available in the [`examples/`](examples/) directory:\n\n- **[Minimal](examples/minimal/)** - Simplest configuration for quick start\n- **[Complete](examples/complete/)** - Full-featured production setup\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.10.7 |\n| \u003ca name=\"requirement_scaleway\"\u003e\u003c/a\u003e [scaleway](#requirement\\_scaleway) | ~\u003e 2.64 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_scaleway\"\u003e\u003c/a\u003e [scaleway](#provider\\_scaleway) | ~\u003e 2.64 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [scaleway_ipam_ip.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/ipam_ip) | resource |\n| [scaleway_vpc.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/vpc) | resource |\n| [scaleway_vpc_acl.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/vpc_acl) | resource |\n| [scaleway_vpc_gateway_network.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/vpc_gateway_network) | resource |\n| [scaleway_vpc_private_network.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/vpc_private_network) | resource |\n| [scaleway_vpc_public_gateway.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/vpc_public_gateway) | resource |\n| [scaleway_vpc_public_gateway_ip.this](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/vpc_public_gateway_ip) | resource |\n| [scaleway_account_project.project](https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/data-sources/account_project) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_access_control_list_default_policy\"\u003e\u003c/a\u003e [access\\_control\\_list\\_default\\_policy](#input\\_access\\_control\\_list\\_default\\_policy) | Default action when no ACL rules match: accept or drop | `string` | `\"accept\"` | no |\n| \u003ca name=\"input_access_control_list_is_ipv6\"\u003e\u003c/a\u003e [access\\_control\\_list\\_is\\_ipv6](#input\\_access\\_control\\_list\\_is\\_ipv6) | Apply ACL rules to IPv6 traffic instead of IPv4 | `bool` | `false` | no |\n| \u003ca name=\"input_access_control_list_rules\"\u003e\u003c/a\u003e [access\\_control\\_list\\_rules](#input\\_access\\_control\\_list\\_rules) | ACL rules for traffic filtering (protocol, ports, source/destination, action) | \u003cpre\u003elist(object({\u003cbr/\u003e    protocol      = string # Protocol: ANY, TCP, UDP, or ICMP\u003cbr/\u003e    src_port_low  = number\u003cbr/\u003e    src_port_high = number\u003cbr/\u003e    dst_port_low  = number\u003cbr/\u003e    dst_port_high = number\u003cbr/\u003e    source        = string\u003cbr/\u003e    destination   = string\u003cbr/\u003e    description   = string\u003cbr/\u003e    action        = string\u003cbr/\u003e  }))\u003c/pre\u003e | \u003cpre\u003e[\u003cbr/\u003e  {\u003cbr/\u003e    \"action\": \"accept\",\u003cbr/\u003e    \"description\": \"Allow HTTP traffic from any source\",\u003cbr/\u003e    \"destination\": \"0.0.0.0/0\",\u003cbr/\u003e    \"dst_port_high\": 80,\u003cbr/\u003e    \"dst_port_low\": 80,\u003cbr/\u003e    \"protocol\": \"TCP\",\u003cbr/\u003e    \"source\": \"0.0.0.0/0\",\u003cbr/\u003e    \"src_port_high\": 0,\u003cbr/\u003e    \"src_port_low\": 0\u003cbr/\u003e  }\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_bastion_allowed_ip_ranges\"\u003e\u003c/a\u003e [bastion\\_allowed\\_ip\\_ranges](#input\\_bastion\\_allowed\\_ip\\_ranges) | CIDR ranges allowed to access SSH bastion | `list(string)` | \u003cpre\u003e[\u003cbr/\u003e  \"0.0.0.0/0\"\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_bastion_ssh_port\"\u003e\u003c/a\u003e [bastion\\_ssh\\_port](#input\\_bastion\\_ssh\\_port) | SSH port for bastion access (1-65535) | `number` | `61000` | no |\n| \u003ca name=\"input_enable_access_control_list\"\u003e\u003c/a\u003e [enable\\_access\\_control\\_list](#input\\_enable\\_access\\_control\\_list) | Create VPC Access Control List for traffic filtering | `bool` | `false` | no |\n| \u003ca name=\"input_enable_bastion\"\u003e\u003c/a\u003e [enable\\_bastion](#input\\_enable\\_bastion) | Enable SSH bastion on public gateways for secure access | `bool` | `false` | no |\n| \u003ca name=\"input_enable_gateway\"\u003e\u003c/a\u003e [enable\\_gateway](#input\\_enable\\_gateway) | Create public gateways for internet connectivity | `bool` | `true` | no |\n| \u003ca name=\"input_gateway_enable_masquerade\"\u003e\u003c/a\u003e [gateway\\_enable\\_masquerade](#input\\_gateway\\_enable\\_masquerade) | Enable NAT masquerade for outbound internet access | `bool` | `true` | no |\n| \u003ca name=\"input_gateway_enable_smtp\"\u003e\u003c/a\u003e [gateway\\_enable\\_smtp](#input\\_gateway\\_enable\\_smtp) | Enable SMTP (port 25) for email delivery | `bool` | `false` | no |\n| \u003ca name=\"input_gateway_existing_flexible_ip_id\"\u003e\u003c/a\u003e [gateway\\_existing\\_flexible\\_ip\\_id](#input\\_gateway\\_existing\\_flexible\\_ip\\_id) | Existing flexible IP ID to attach (overrides gateway\\_reserve\\_flexible\\_ip) | `string` | `null` | no |\n| \u003ca name=\"input_gateway_refresh_ssh_keys\"\u003e\u003c/a\u003e [gateway\\_refresh\\_ssh\\_keys](#input\\_gateway\\_refresh\\_ssh\\_keys) | Trigger SSH key refresh on gateways (change value to trigger) | `string` | `null` | no |\n| \u003ca name=\"input_gateway_reserve_flexible_ip\"\u003e\u003c/a\u003e [gateway\\_reserve\\_flexible\\_ip](#input\\_gateway\\_reserve\\_flexible\\_ip) | Reserve new flexible IP addresses for gateways | `bool` | `true` | no |\n| \u003ca name=\"input_gateway_type\"\u003e\u003c/a\u003e [gateway\\_type](#input\\_gateway\\_type) | Gateway instance type: VPC-GW-S (small) or VPC-GW-M (medium) | `string` | `\"VPC-GW-S\"` | no |\n| \u003ca name=\"input_network_private_networks\"\u003e\u003c/a\u003e [network\\_private\\_networks](#input\\_network\\_private\\_networks) | Private networks to create with optional names, subnets, and tags | \u003cpre\u003emap(object({\u003cbr/\u003e    name        = optional(string)           # Network name (defaults to auto-generated)\u003cbr/\u003e    ipv4_subnet = optional(string)           # IPv4 CIDR (defaults to auto-assigned /22)\u003cbr/\u003e    ipv6_subnet = optional(string)           # IPv6 CIDR (defaults to auto-assigned /64)\u003cbr/\u003e    tags        = optional(list(string), []) # Network-specific tags\u003cbr/\u003e  }))\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"default\": {\u003cbr/\u003e    \"ipv4_subnet\": null,\u003cbr/\u003e    \"ipv6_subnet\": null,\u003cbr/\u003e    \"name\": null,\u003cbr/\u003e    \"tags\": []\u003cbr/\u003e  }\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_organization_id\"\u003e\u003c/a\u003e [organization\\_id](#input\\_organization\\_id) | Organization ID for VPC resources | `string` | n/a | yes |\n| \u003ca name=\"input_project_name\"\u003e\u003c/a\u003e [project\\_name](#input\\_project\\_name) | Project name for VPC resources | `string` | n/a | yes |\n| \u003ca name=\"input_vpc_enable_custom_routes\"\u003e\u003c/a\u003e [vpc\\_enable\\_custom\\_routes](#input\\_vpc\\_enable\\_custom\\_routes) | Enable custom route propagation between private networks | `bool` | `true` | no |\n| \u003ca name=\"input_vpc_enable_routing\"\u003e\u003c/a\u003e [vpc\\_enable\\_routing](#input\\_vpc\\_enable\\_routing) | Enable routing between private networks (cannot be disabled once enabled) | `bool` | `true` | no |\n| \u003ca name=\"input_vpc_name\"\u003e\u003c/a\u003e [vpc\\_name](#input\\_vpc\\_name) | Name prefix for the VPC and associated resources | `string` | n/a | yes |\n| \u003ca name=\"input_vpc_region\"\u003e\u003c/a\u003e [vpc\\_region](#input\\_vpc\\_region) | Region where VPC resources will be created (defaults to provider configuration) | `string` | `null` | no |\n| \u003ca name=\"input_vpc_tags\"\u003e\u003c/a\u003e [vpc\\_tags](#input\\_vpc\\_tags) | Tags to apply to all VPC resources | `list(string)` | `[]` | no |\n| \u003ca name=\"input_vpc_zones\"\u003e\u003c/a\u003e [vpc\\_zones](#input\\_vpc\\_zones) | Availability zones for gateway deployment (must belong to vpc\\_region if both specified) | `list(string)` | `[]` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_access_control_list_id\"\u003e\u003c/a\u003e [access\\_control\\_list\\_id](#output\\_access\\_control\\_list\\_id) | VPC Access Control List ID (null if ACL not created) |\n| \u003ca name=\"output_gateway_flexible_ip_addresses\"\u003e\u003c/a\u003e [gateway\\_flexible\\_ip\\_addresses](#output\\_gateway\\_flexible\\_ip\\_addresses) | Gateway public IP addresses by zone |\n| \u003ca name=\"output_gateway_flexible_ip_ids\"\u003e\u003c/a\u003e [gateway\\_flexible\\_ip\\_ids](#output\\_gateway\\_flexible\\_ip\\_ids) | Gateway flexible IP resource IDs by zone |\n| \u003ca name=\"output_gateway_ids\"\u003e\u003c/a\u003e [gateway\\_ids](#output\\_gateway\\_ids) | Public gateway IDs by zone |\n| \u003ca name=\"output_gateway_network_ids\"\u003e\u003c/a\u003e [gateway\\_network\\_ids](#output\\_gateway\\_network\\_ids) | Gateway network attachment IDs by network-zone pair (e.g., web-fr-par-1) |\n| \u003ca name=\"output_ipam_ip_addresses\"\u003e\u003c/a\u003e [ipam\\_ip\\_addresses](#output\\_ipam\\_ip\\_addresses) | IPAM IP addresses by network-zone pair |\n| \u003ca name=\"output_ipam_ip_ids\"\u003e\u003c/a\u003e [ipam\\_ip\\_ids](#output\\_ipam\\_ip\\_ids) | IPAM IP resource IDs by network-zone pair |\n| \u003ca name=\"output_network_ipv4_cidrs\"\u003e\u003c/a\u003e [network\\_ipv4\\_cidrs](#output\\_network\\_ipv4\\_cidrs) | IPv4 CIDR blocks by network name |\n| \u003ca name=\"output_network_ipv6_cidrs\"\u003e\u003c/a\u003e [network\\_ipv6\\_cidrs](#output\\_network\\_ipv6\\_cidrs) | IPv6 CIDR blocks by network name |\n| \u003ca name=\"output_network_private_network_ids\"\u003e\u003c/a\u003e [network\\_private\\_network\\_ids](#output\\_network\\_private\\_network\\_ids) | Private network IDs by network name |\n| \u003ca name=\"output_vpc_id\"\u003e\u003c/a\u003e [vpc\\_id](#output\\_vpc\\_id) | VPC resource identifier |\n\u003c!-- END_TF_DOCS --\u003e\n\n## License\n\nLicensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for full details.\n\nCopyright 2025 - This module is independently maintained and not affiliated with Scaleway.\n\n## Disclaimer\n\nThis module is provided \"as is\" without warranty of any kind, express or implied. The authors and contributors are not responsible for any issues, damages, or losses arising from the use of this module. No official support is provided. Use at your own risk.\n\n[apache]: https://opensource.org/licenses/Apache-2.0\n[apache-shield]: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n\n[terraform-badge]: https://img.shields.io/badge/Terraform-%3E%3D1.10-623CE4\n[terraform-url]: https://www.terraform.io\n\n[scaleway-badge]: https://img.shields.io/badge/Scaleway%20Provider-%3E%3D2.63-4f0599\n[scaleway-url]: https://registry.terraform.io/providers/scaleway/scaleway/\n\n[release-badge]: https://img.shields.io/gitlab/v/release/leminnov/terraform/modules/scaleway-vpc?include_prereleases\u0026sort=semver\n[release-url]: https://gitlab.com/leminnov/terraform/modules/scaleway-vpc/-/releases\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftf-scaleway-modules%2Fterraform-scaleway-network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftf-scaleway-modules%2Fterraform-scaleway-network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftf-scaleway-modules%2Fterraform-scaleway-network/lists"}