The Patrii Cloud provider allows you to manage resources on Patrii Cloud https://www.patrii.cloud, a Canadian sovereign cloud platform.
  • Go 98.1%
  • HCL 1.7%
  • Makefile 0.2%
Find a file
Guillaume Harvey 757cb28feb Security hardening and new resources for public release
Security fixes:
- Remove debug logging that dumped API responses to /tmp/patrii-debug.log
- Sanitize auth error messages to never expose credentials
- Add HTTPS enforcement with allow_insecure flag for development
- Mark user_data as Sensitive to prevent state file leaks
- Update examples to use env var credentials instead of hardcoded values

New resources:
- DNS zones and records
- Load balancer (LB, listener, pool, member, monitor, L7 policy/rule)
- Secrets (Barbican)
- NFS shares and access rules
- Ports, router static routes, app credentials
- DNS and LB data sources

Tests:
- Comprehensive unit tests for client and provider packages
2026-03-27 01:57:19 -04:00
cmd/patrii-config Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00
examples Security hardening and new resources for public release 2026-03-27 01:57:19 -04:00
internal Security hardening and new resources for public release 2026-03-27 01:57:19 -04:00
test Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00
.gitignore Security hardening and new resources for public release 2026-03-27 01:57:19 -04:00
go.mod Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00
go.sum Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00
main.go Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00
Makefile Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00
README.md Initial release of Patrii Cloud Terraform Provider 2026-02-03 03:03:27 -05:00

Terraform Provider for Patrii Cloud

The Patrii Cloud provider allows you to manage resources on Patrii Cloud, a Canadian sovereign cloud platform.

Features

  • Compute: Create and manage VPS instances
  • Block Storage: Create and attach volumes
  • Object Storage: S3-compatible bucket management
  • Networking: Virtual networks, routers, floating IPs, security groups
  • SSH Keys: Keypair management

Requirements

  • Terraform >= 1.0
  • Go >= 1.21 (for building from source)
  • A Patrii Cloud account

Installation

From Terraform Registry (Coming Soon)

terraform {
  required_providers {
    patrii = {
      source  = "PatriiCloud/patrii"
      version = "~> 1.0"
    }
  }
}

From Source

git clone https://github.com/PatriiCloud/terraform.git
cd terraform
go build -o terraform-provider-patrii

Quick Start

provider "patrii" {
  auth_url   = "https://api.patrii.cloud"
  username   = "your-email@example.com"
  password   = "your-password"
  project_id = "your-project-id"
  region     = "COLOGIX-MTL-2"
}

# Create an instance
resource "patrii_instance" "web" {
  name      = "web-server"
  flavor_id = "shared.balance.2c2g40d"
  image_id  = "ubuntu-24.04-lts"
  key_name  = "my-key"
}

Authentication

The provider supports multiple authentication methods:

Username/Password

provider "patrii" {
  auth_url   = "https://api.patrii.cloud"
  username   = "user@example.com"
  password   = "your-password"
  project_id = "your-project-id"
}

Token

provider "patrii" {
  auth_url   = "https://api.patrii.cloud"
  token      = "your-keystone-token"
  project_id = "your-project-id"
}

Environment Variables

export PATRII_AUTH_URL="https://api.patrii.cloud"
export PATRII_USERNAME="user@example.com"
export PATRII_PASSWORD="your-password"
export PATRII_PROJECT_ID="your-project-id"
export PATRII_REGION="COLOGIX-MTL-2"

Resources

Compute

Resource Description
patrii_instance Compute instance (VPS)
patrii_keypair SSH keypair
patrii_instance_snapshot Create snapshot of an instance
patrii_instance_backup Create backup of an instance with rotation
patrii_server_security_group Attach security group to existing instance

Networking

Resource Description
patrii_network Virtual network
patrii_subnet Network subnet
patrii_router Virtual router with external gateway
patrii_router_interface Router subnet attachment
patrii_security_group Security group
patrii_security_group_rule Security group rule (TCP/UDP/ICMP)
patrii_floating_ip Floating IP address
patrii_floating_ip_associate Associate floating IP with instance

Block Storage

Resource Description
patrii_volume Block storage volume
patrii_volume_attachment Attach volume to instance
patrii_volume_snapshot Create snapshot of a volume

Object Storage (S3)

Resource Description
patrii_s3_bucket S3-compatible bucket
patrii_s3_credentials S3 access credentials

Data Sources

Data Source Description
patrii_flavors List available flavors
patrii_images List available OS images
patrii_network Get network by ID or name
patrii_security_group Get security group by ID or name

Examples

See the examples directory for complete examples.

Full Infrastructure Example

# Get Ubuntu image
data "patrii_images" "ubuntu" {
  name_regex = "Ubuntu 24.04"
}

# Get balanced flavors
data "patrii_flavors" "balanced" {
  category = "balanced"
}

# SSH Key
resource "patrii_keypair" "deploy" {
  name       = "deploy-key"
  public_key = file("~/.ssh/id_rsa.pub")
}

# Network
resource "patrii_network" "main" {
  name       = "main-network"
  cidr       = "10.0.0.0/24"
  enable_dhcp = true
}

# Security Group
resource "patrii_security_group" "web" {
  name        = "web-servers"
  description = "HTTP/HTTPS access"
}

resource "patrii_security_group_rule" "http" {
  security_group_id = patrii_security_group.web.id
  direction         = "ingress"
  protocol          = "tcp"
  port_range_min    = 80
  port_range_max    = 80
  remote_ip_prefix  = "0.0.0.0/0"
}

# Instance
resource "patrii_instance" "web" {
  name      = "web-server"
  flavor_id = data.patrii_flavors.balanced.flavors[1].id
  image_id  = data.patrii_images.ubuntu.images[0].id
  key_name  = patrii_keypair.deploy.name

  network {
    uuid = patrii_network.main.id
  }

  security_groups = [patrii_security_group.web.id]
}

# Floating IP
resource "patrii_floating_ip" "web" {
  description = "Web server IP"
}

resource "patrii_floating_ip_associate" "web" {
  floating_ip_id = patrii_floating_ip.web.id
  instance_id    = patrii_instance.web.id
}

# Data Volume
resource "patrii_volume" "data" {
  name = "web-data"
  size = 100
}

resource "patrii_volume_attachment" "data" {
  volume_id   = patrii_volume.data.id
  instance_id = patrii_instance.web.id
}

# S3 Bucket
resource "patrii_s3_bucket" "assets" {
  name = "web-assets"
}

output "public_ip" {
  value = patrii_floating_ip.web.floating_ip
}

Pricing

Resource Price
Balanced VPS #1 $5.25/mo
Balanced VPS #2 $13.99/mo
Balanced VPS #3 $24.99/mo
Balanced VPS #4 $34.99/mo
Floating IP $3.00/mo
Object Storage $0.05/GB/mo

See Patrii Cloud Pricing for complete pricing information.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This provider is distributed under the Mozilla Public License v2.0. See LICENSE for details.

Support