https://github.com/outscale/terraform-outscale-nets
Terraform module to create OUTSCALE nets resources
https://github.com/outscale/terraform-outscale-nets
maturity-sandbox
Last synced: 13 days ago
JSON representation
Terraform module to create OUTSCALE nets resources
- Host: GitHub
- URL: https://github.com/outscale/terraform-outscale-nets
- Owner: outscale
- License: bsd-3-clause
- Created: 2025-07-11T15:15:27.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-09-08T06:58:27.000Z (6 months ago)
- Last Synced: 2025-09-08T08:34:39.847Z (6 months ago)
- Topics: maturity-sandbox
- Language: HCL
- Homepage:
- Size: 50.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
## **terraform-outscale-nets**
[](https://docs.outscale.com/en/userguide/Open-Source-Projects.html) [](https://discord.gg/HUVtY5gT6s)
---
## 📄 Table of Contents
- [Overview](#-overview)
- [Requirements](#-requirements)
- [Usage](#-usage)
- [Configuration](#-configuration)
- [Examples](#-examples)
- [License](#-license)
- [Contributing](#-contributing)
---
## 🧭 Overview
**terraform-outscale-nets** is a Terraform/OpenTofu module for deploying a vpc and the necessary components (subnets, internet gateway, ...).
Key features:
- public/private/storage subnets
- internet service
- nat service (one per private subnet or not)
- kubernetes tags if you want use the [Cloud provider OSC](https://github.com/outscale/cloud-provider-osc)
---
## ✅ Requirements
- Go
---
## 🚀 Usage
```hlc
module "terraform-outscale-nets" {
source = "git@github.com:outscale/terraform-outscale-nets.git" // you can use a specific version
--- vars ---
}
```
---
## 🛠 Configuration
You need to specify the Access Key Id and Secret Key Id in the variables or use the environment variables
---
## 💡 Examples
See [example folder](https://github.com/outscale/terraform-outscale-nets)
---
## 📜 License
**terraform-outscale-nets** is released under the < License Name > license.
© 2025 Outscale SAS
See [LICENSE](./LICENSE) for full details.
---
## 🤝 Contributing
We welcome contributions!
Please read our [Contributing Guidelines](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) before submitting a pull request.
---
## Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 1.3.0 |
| [outscale](#requirement\_outscale) | 1.2.0 |
## Providers
| Name | Version |
|------|---------|
| [outscale](#provider\_outscale) | 1.2.0 |
## Modules
No modules.
## Resources
| Name | Type |
|------|------|
| [outscale_internet_service.internet_service](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/internet_service) | resource |
| [outscale_internet_service_link.internet_service_link](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/internet_service_link) | resource |
| [outscale_nat_service.private_nat_service](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/nat_service) | resource |
| [outscale_nat_service.storage_nat_service](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/nat_service) | resource |
| [outscale_net.net](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/net) | resource |
| [outscale_public_ip.nat_service_private_subnet_public_ip](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/public_ip) | resource |
| [outscale_public_ip.nat_service_storage_subnet_public_ip](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/public_ip) | resource |
| [outscale_route.private_route_to_nat_service](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route) | resource |
| [outscale_route.route_to_internet_service](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route) | resource |
| [outscale_route.storage_route_to_nat_service](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route) | resource |
| [outscale_route_table.private_route_table](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route_table) | resource |
| [outscale_route_table.public_route_table](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route_table) | resource |
| [outscale_route_table.storage_route_table](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route_table) | resource |
| [outscale_route_table_link.private_route_table_link](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route_table_link) | resource |
| [outscale_route_table_link.public_route_table_link](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route_table_link) | resource |
| [outscale_route_table_link.storage_route_table_link](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/route_table_link) | resource |
| [outscale_subnet.private_subnet](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/subnet) | resource |
| [outscale_subnet.public_subnet](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/subnet) | resource |
| [outscale_subnet.storage_subnet](https://registry.terraform.io/providers/outscale/outscale/1.2.0/docs/resources/subnet) | resource |
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [cidr](#input\_cidr) | The CIDR block for the net. | `string` | `"10.0.0.0/16"` | no |
| [enable\_internet\_service](#input\_enable\_internet\_service) | Whether to create an internet service. | `bool` | `true` | no |
| [enable\_private\_subnets\_nat\_service](#input\_enable\_private\_subnets\_nat\_service) | Whether to enable NAT service for private subnets. | `bool` | `true` | no |
| [enable\_storage\_subnets\_nat\_service](#input\_enable\_storage\_subnets\_nat\_service) | Whether to enable NAT service for storage subnets. | `bool` | `false` | no |
| [internet\_service\_tags](#input\_internet\_service\_tags) | A map of tags to assign to the internet service. |
list(object({
key = string
value = string
})) | `[]` | no |
| [kubernetes\_cluster\_name](#input\_kubernetes\_cluster\_name) | The name of the Kubernetes cluster. | `string` | `""` | no |
| [kubernetes\_support](#input\_kubernetes\_support) | Whether to enable Kubernetes support. | `bool` | `false` | no |
| [name](#input\_name) | The name of the net. | `string` | `""` | no |
| [nat\_service\_per\_private\_subnet](#input\_nat\_service\_per\_private\_subnet) | Whether to create a NAT service in each subregion. | `bool` | `false` | no |
| [nat\_service\_per\_storage\_subnet](#input\_nat\_service\_per\_storage\_subnet) | Whether to create a NAT service in each subregion for storage subnets. | `bool` | `false` | no |
| [net\_tags](#input\_net\_tags) | A map of tags to assign to the net. | list(object({
key = string
value = string
})) | `[]` | no |
| [osc\_access\_key](#input\_osc\_access\_key) | The Outscale access key. | `string` | `""` | no |
| [osc\_region](#input\_osc\_region) | The Outscale region to use. | `string` | `"eu-west-2"` | no |
| [osc\_secret\_key](#input\_osc\_secret\_key) | The Outscale secret key. | `string` | `""` | no |
| [private\_nat\_gateway\_tags](#input\_private\_nat\_gateway\_tags) | A map of tags to assign to the private NAT gateways. | list(object({
key = string
value = string
})) | `[]` | no |
| [private\_route\_table\_tags](#input\_private\_route\_table\_tags) | A map of tags to assign to the private route tables. | list(object({
key = string
value = string
})) | `[]` | no |
| [private\_subnet\_tags](#input\_private\_subnet\_tags) | A map of tags to assign to the private subnets. | list(object({
key = string
value = string
})) | `[]` | no |
| [private\_subnets](#input\_private\_subnets) | A list of private subnet CIDR blocks. | list(object({
cidr = string
az = string
})) | [
{
"az": "a",
"cidr": "10.0.0.0/24"
},
{
"az": "b",
"cidr": "10.0.1.0/24"
},
{
"az": "c",
"cidr": "10.0.2.0/24"
}
]
| no |
| [public\_route\_table\_tags](#input\_public\_route\_table\_tags) | A map of tags to assign to the public route tables. | list(object({
key = string
value = string
})) | `[]` | no |
| [public\_subnet\_tags](#input\_public\_subnet\_tags) | A map of tags to assign to the public subnets. | list(object({
key = string
value = string
})) | `[]` | no |
| [public\_subnets](#input\_public\_subnets) | A list of public subnet CIDR blocks. | list(object({
cidr = string
az = string
})) | [
{
"az": "a",
"cidr": "10.0.100.0/24"
},
{
"az": "b",
"cidr": "10.0.101.0/24"
},
{
"az": "c",
"cidr": "10.0.102.0/24"
}
]
| no |
| [storage\_nat\_gateway\_tags](#input\_storage\_nat\_gateway\_tags) | A map of tags to assign to the storage NAT gateways. | list(object({
key = string
value = string
})) | `[]` | no |
| [storage\_route\_table\_tags](#input\_storage\_route\_table\_tags) | A map of tags to assign to the storage route tables. | list(object({
key = string
value = string
})) | `[]` | no |
| [storage\_subnet\_tags](#input\_storage\_subnet\_tags) | A map of tags to assign to the storage subnets. | list(object({
key = string
value = string
})) | `[]` | no |
| [storage\_subnets](#input\_storage\_subnets) | A list of storage subnet CIDR blocks. | list(object({
cidr = string
az = string
})) | `[]` | no |
| [tags](#input\_tags) | A map of tags to assign to the net and its resources. | list(object({
key = string
value = string
})) | `[]` | no |
| [tenancy](#input\_tenancy) | The tenancy of the net. Can be 'default' or 'dedicated'. | `string` | `"default"` | no |
## Outputs
| Name | Description |
|------|-------------|
| [net\_cidr\_block](#output\_net\_cidr\_block) | The CIDR block of the Outscale Net. |
| [net\_id](#output\_net\_id) | The ID of the Outscale Net. |
| [private\_route\_tables](#output\_private\_route\_tables) | List of private route table IDs. |
| [private\_subnets](#output\_private\_subnets) | List of private subnet IDs. |
| [public\_ip\_for\_private\_nat\_service](#output\_public\_ip\_for\_private\_nat\_service) | List of public IPs for NAT service in private subnets. |
| [public\_ip\_for\_storage\_nat\_service](#output\_public\_ip\_for\_storage\_nat\_service) | List of public IPs for NAT service in storage subnets. |
| [public\_route\_tables](#output\_public\_route\_tables) | List of public route table IDs. |
| [public\_subnets](#output\_public\_subnets) | List of public subnet IDs. |
| [storage\_subnets](#output\_storage\_subnets) | List of storage subnet IDs. |