A Terraform Module for deploying infrastructure to support approved Puppet Enterprise architectures on Azure https://puppet.com/docs/pe/2021.0/choosing_an_architecture.html
APACHE-2.0 License
IaC definitions for three of the supported Puppet Enterprise architectures for Azure
This Terraform module implements as code the infrastructure required to deploy three permutations of the supported Puppet Enterprise architectures: Standard, Large, and Extra Large, addtionally all architectures can have additional infrastructure provisioned to support a failover replica on Azure. This module is developed to function independently but it is often used in support of puppetlabs/peadm, brought together by puppetlabs/autope to facilitate the end-to-end deployment of fully functional stacks of Puppet Enterprise. It sets up native azure networking and load balancers specifically for containing and managing access to the deployment but avoids a dependence on cloud provided SQL services since Puppet Enterprise has its own facilities for managing and automating PostgreSQL.
This Terraform module is intended to be used only by Puppet Enterprise customers actively working with and being guided by Puppet Customer Success teams—specifically, the Professional Services and Solutions Architecture teams. Independent use is not recommended for production environments without a comprehensive understanding of how Terraform works, comfort in the modification and maintenance of Terraform code, and the infrastructure requirements of a full Puppet Enterprise deployment.
This Terraform module is a services-led solution, and is NOT supported through Puppet Enterprise's standard or premium support.puppet.com service.
As a services-led solution, Puppet Enterprise customers who are advised to start using this module should get support for it through the following general process.
This module is under active development and yet to release an initial version. There is no guarantee yet on a stable interface from commit to commit and those commits may include breaking chnages.
Types of things you'll be paying your cloud provider for
git clone https://github.com/puppetlabs/terraform-azure-pe_arch.git && cd terraform-azure-pe_arch
terraform init
terraform apply -auto-approve -var "project=example.com" -var "user=john.doe" -var "firewall_allow=[ \"0.0.0.0/0\" ]"
This will give you the absolute minimum needed for installing Puppet Enterprise, a single VM plus a specific network for it to reside within and limited to a specific network that have access to the new infrastructure (note: internal network will always be injected into the list)
terraform apply -auto-approve -var "project=example.com" -var "user=john.doe" -var "firewall_allow=[ \"192.69.65.0/24\" ]" -var "architecture=large" -var "replica=true"
The number of options required are reduced when destroying a stack
terraform destroy -auto-approve -var "project=example.com" -var "user=john.doe"
ssh_key
parameter to the ssh agent like so:> eval `ssh-agent`
> ssh-add <private_key_path>
Currently limited to CentOS and VM disk sizes are not configurable