An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

## **terraform-outscale-nets**

[![Project Stage](https://docs.outscale.com/fr/userguide/_images/Project-Sandbox-yellow.svg)](https://docs.outscale.com/en/userguide/Open-Source-Projects.html) [![](https://dcbadge.limes.pink/api/server/HUVtY5gT6s?style=flat&theme=default-inverted)](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. |