Terraform module to deploy a completely customizable OpenStack network architecture in a given project. https://ednz.fr
Go to file
Bertrand Lanson 99d716c62b
All checks were successful
development / Check commit compliance (push) Successful in 4s
pull-requests-open / Check commit compliance (pull_request) Successful in 5s
pull-requests-open / Check pre-commit status (pull_request) Successful in 14s
ci: install opentofu aswell for pre-commit
2024-09-08 14:51:51 +02:00
.gitea/workflows ci: install opentofu aswell for pre-commit 2024-09-08 14:51:51 +02:00
.cz.toml feat: add versioning requirements, and automatic documentation pipeline 2024-09-08 13:16:37 +02:00
.pre-commit-config.yaml ci: install dependencies for pre-commit hooks 2024-09-08 14:44:01 +02:00
LICENSE feat: add versioning requirements, and automatic documentation pipeline 2024-09-08 13:16:37 +02:00
main.tf feat: update provider requirement to be more flexible 2024-08-19 21:37:18 +02:00
outputs.tf feat(outputs): add router output and edit descriptions 2024-08-19 21:22:10 +02:00
README.md ci: remove tfdcos action, replace with pre-commit check 2024-09-08 13:26:48 +02:00
variables.tf feat: add variable for configuring public DNS upstreams on subnets 2024-04-14 00:24:12 +02:00

terraform-openstack-lz

Terraform module to deploy a completely customizable OpenStack

Requirements

Name Version
terraform >= 1.0.0
openstack >= 1.54

Providers

Name Version
openstack >= 1.54

Modules

No modules.

Resources

Name Type
openstack_networking_network_v2.backend resource
openstack_networking_network_v2.database resource
openstack_networking_network_v2.frontend resource
openstack_networking_router_interface_v2.backend resource
openstack_networking_router_interface_v2.database resource
openstack_networking_router_interface_v2.frontend resource
openstack_networking_router_v2.this resource
openstack_networking_secgroup_rule_v2.backend_egress resource
openstack_networking_secgroup_rule_v2.backend_ingress resource
openstack_networking_secgroup_rule_v2.database_egress resource
openstack_networking_secgroup_rule_v2.database_ingress resource
openstack_networking_secgroup_rule_v2.frontend_egress resource
openstack_networking_secgroup_rule_v2.frontend_ingress resource
openstack_networking_secgroup_v2.backend resource
openstack_networking_secgroup_v2.database resource
openstack_networking_secgroup_v2.frontend resource
openstack_networking_subnet_v2.backend resource
openstack_networking_subnet_v2.database resource
openstack_networking_subnet_v2.frontend resource
openstack_networking_subnetpool_v2.this resource
openstack_identity_project_v3.this data source

Inputs

Name Description Type Default Required
architecture_tiers The type of architecture.
Can be either 0, 1, 2 or 3.
Tier 0 will not create any subnets or networks.
Tier 1 will only create a single frontend subnet.
Tier 2 will create a frontend and backend subnet.
Tier 3 will create a frontend, backend and database subnet.
number 1 no
attach_to_external Whether the frontend subnet should be routed or not to the external LAN.
This options implies that you have sufficient permissions to configure static route on the backbone infrastructure.
This will create an static route entry in the route table of the backbone router, in order to make your project available from the outside.
bool false no
backend_subnet_prefix_len The prefix length of the backend subnet. Must be between 20 and 32. number 24 no
create_default_secgroups Whether to create default security groups or not.
Depending on your choice of architecture tiering, will create security groups so that each tier can connect to the one below.
Security groups for the database tier will be created for mariadb, postgresql and redis.
A default security group allowing ssh connection will also be created.
bool false no
create_subnetpool Whether the module should create a subnet pool for this project, or use an existing one. bool true no
database_secgroup_strict Defines whether the security groups for the database network should be strict.
In strict mode, egress is only allowed to the backend network.
bool false no
database_subnet_prefix_len The prefix length of the database subnet. Must be between 24 and 32. number 24 no
database_subnetpool_id The id of the subnetpool to create the databse network from.
Since this module can route private subnets to the backbone, it needs to make sure it's not creating overlapping subnets.
string null no
external_network_id The id of the external network to connect the frontend router to. string null no
frontend_subnet_prefix_len The prefix length of the frontend subnet. Must be between 20 and 32. number 24 no
project_domain The domain where this project will be created string "default" no
project_name The name of the project string n/a yes
project_tags The tags to append to this project list(string) [] no
public_nameservers A list of public DNS servers to upstreams requests to in your subnets.
This is not necessary if your openstack deployment already has configured default upstreams for neutron.
list(string) [] no
public_subnetpool_id The id of the subnetpool to create the public (first 2 tier) networks from.
Since this module can route private subnets to the backbone, it needs to make sure it's not creating overlapping subnets.
string null no
subnetpool_cidr_blocks The CIDR block for the subnet pool list(string)
[
"192.168.0.0/21"
]
no

Outputs

Name Description
backend_network The backend network object (as a list), if created
backend_secgroups The backend security group objects (as a list), if created
backend_subnet The backend subnet object (as a list), if created
database_network The database network object (as a list), if created
database_secgroups The database security group objects (as a list), if created
database_subnet The database subnet object (as a list), if created
frontend_network The frontend network object (as a list), if created
frontend_secgroups The frontend security group objects (as a list), if created
frontend_subnet The frontend subnet object (as a list), if created
router The entire router object (as a list), if created
subnetpool The subnetpool object (as a list), if created