Beta Notice: This Terraform provider is currently in Beta and is not recommended for production deployments. Please use with caution.
The official Terraform provider for Pexip Infinity enables comprehensive Infrastructure as Code management of your Pexip video conferencing platform. Manage everything from basic node configurations to advanced integrations with Microsoft 365, Google Workspace, and external authentication systems.
- 🏗️ Complete Infrastructure Management: 80+ resources covering 90% of Pexip Infinity API capabilities
- 🔐 Security & Authentication: LDAP, Active Directory, OAuth 2.0, SAML, and certificate management
- 🎯 Conference Management: Virtual meeting rooms, aliases, scheduled conferences, and participant controls
- 🌐 Network Configuration: System locations, routing rules, proxies, and DNS management
- 📊 System Administration: Licensing, logging, diagnostics, and scaling policies
- 🔗 Enterprise Integrations: Microsoft 365, Google Workspace, Exchange, and telehealth platforms
- 📱 Media & Content: IVR themes, media libraries, streaming credentials
- ⚡ Infrastructure as Code: Full lifecycle management with Terraform's plan/apply workflow
- Terraform >= 1.0
- Go >= 1.21 (for development)
- Pexip Infinity Manager >= v38 with API access
- Valid authentication credentials for Pexip Infinity Manager
terraform {
required_version = ">= 1.14"
required_providers {
pexip = {
source = "pexip/infinity"
version = "~> 0.9.11"
}
}
}- Download the latest release from GitHub Releases
- Extract the binary to your Terraform plugins directory
- Configure Terraform to use the local provider
For a quickstart guide, details on various resources, and other documentation, see https://registry.terraform.io/providers/pexip/infinity/latest/docs.
git clone https://github.com/pexip/terraform-provider-infinity.git
cd terraform-provider-infinity
make build- Create a
.terraformrcfile in your home directory:
provider_installation {
dev_overrides {
"pexip/infinity" = "<home dir>/.terraform.d/plugins"
}
direct {}
}- Build and test locally:
make build
make testmake build # Build the provider binary
make install # Build and install to local Terraform plugins directory
make test # Run unit tests
make testacc # Run acceptance tests (requires Pexip environment)
make lint # Run linting checks
make fmt # Format Go code
make clean # Clean build artifacts
make check # Run all checks (lint + test)# Unit tests
make test
# Acceptance tests (requires real Pexip environment)
export TF_ACC=1
export PEXIP_ADDRESS="https://your-manager.example.com"
export PEXIP_USERNAME="admin"
export PEXIP_PASSWORD="your-password"
make testacc
# Test specific resource
go test -v ./internal/provider -run TestAccInfinityConferenceAuthentication Failures
# Verify connectivity
curl -k -u username:password https://manager.example.com/api/admin/status/v1/system_summary/
# Check credentials
export TF_LOG=DEBUG
terraform planTLS Certificate Issues
# For development/testing with self-signed certificates
provider "pexip" {
address = "https://manager.example.com"
username = var.username
password = var.password
insecure = true # Only for development!
}Network Connectivity
# Test network access
telnet manager.example.com 443
nslookup manager.example.comResource Import Issues
# Get resource ID from Pexip Manager
curl -k -u admin:password "https://manager.example.com/api/admin/configuration/v1/conference/" | jq '.objects[] | {id, name}'
# Import with correct ID
terraform import pexip_infinity_conference.room 123Enable comprehensive logging for troubleshooting:
export TF_LOG=DEBUG
export TF_LOG_PATH=./terraform-debug.log
terraform planFor large environments with many resources:
# Use for_each instead of count for better performance
resource "pexip_infinity_conference" "rooms" {
for_each = var.conference_rooms
name = each.key
description = each.value.description
# ... other configuration
}
# Parallelize independent resources
resource "pexip_infinity_system_location" "locations" {
for_each = var.locations
# ... configuration
}
resource "pexip_infinity_worker_vm" "workers" {
for_each = var.worker_nodes
name = each.key
hostname = each.value.hostname
domain = each.value.domain
address = each.value.address
netmask = each.value.netmask
gateway = each.value.gateway
system_location = each.value.location
# ... other configuration
}- Never hardcode credentials - Use variables and environment variables
- Use HTTPS - Always connect to Pexip Manager over HTTPS
- Limit permissions - Create dedicated service accounts with minimal required permissions
- Rotate credentials - Regularly rotate API credentials
- Use modules - Organize related resources into reusable modules
- Consistent naming - Follow a consistent naming convention across resources
- Tag resources - Use descriptions to document resource purpose
- State management - Use remote state storage for team environments
- Batch operations - Use
for_eachfor creating multiple similar resources - Minimize dependencies - Avoid unnecessary resource dependencies
- Parallel execution - Structure resources to allow parallel creation/updates
We welcome contributions! Please see our Contributing Guide for details.
- Follow Go best practices
- Use the Terraform Plugin Framework
- Write comprehensive tests with >80% coverage
- Document all public APIs and configuration options
- Ensure backward compatibility when possible
- Follow semantic versioning for releases
- Discussions - Community Q&A
- GitHub Issues - Bug reports and feature requests
For enterprise support, contact Pexip Support.
For security vulnerabilities, please email security@pexip.com instead of using the public issue tracker.
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Pexip Engineering Team for developing and maintaining Pexip Infinity
- HashiCorp for the Terraform Plugin Framework
- Go Community for the excellent programming language and ecosystem
Made with ❤️ by the Pexip team