Git Product home page Git Product logo

puppetlabs / terraform-azure-pe_arch Goto Github PK

View Code? Open in Web Editor NEW
3.0 7.0 2.0 79 KB

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

License: Apache License 2.0

HCL 100.00%
infrastructure azure puppet cloud infrastructure-as-code bolt hiera terraform puppet-bolt terraform-module

terraform-azure-pe_arch's Introduction

azure-pe_arch

IaC definitions for three of the supported Puppet Enterprise architectures for Azure

Table of Contents

  1. Description
  2. Setup - The basics of getting started with azure-pe_arch
  3. Usage - Configuration options and additional functionality
  4. Limitations - OS compatibility, etc.
  5. Development - Guide for contributing to the module

Description

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.

Expectations and support

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.

  1. Be introduced to the module through a services engagement or by their Technical Account Manager (TAM).
  2. During Professional Services (PS) engagements, the Puppet PS team will aid and instruct in use of the module.
  3. Outside of PS engagements, use TAM services to request assistance with problems encountered when using the module, and to inform Puppet Customer Success (CS) teams of planned major maintenance or upgrades for which advisory services are needed.
  4. In the absence of a TAM, your Puppet account management team (Account Executive and Solutions Engineer) may be a fallback communication option for requesting assistance, or for informing CS teams of planned major maintenance for which advisory services are needed.

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.

Setup

What azure-pe_arch affects

Types of things you'll be paying your cloud provider for

  • Instances of various sizes
  • Load balancers
  • Networks

Setup Requirements

Beginning with terraform-azure-pe_arch

  1. Clone this repository
    • git clone https://github.com/puppetlabs/terraform-azure-pe_arch.git && cd terraform-azure-pe_arch
  2. Install module dependencies: terraform init
  3. Initiate plan for the default standard architecture
    • terraform apply -auto-approve -var "project=example.com" -var "user=john.doe" -var "firewall_allow=[ \"0.0.0.0/0\" ]"
  4. Moments later you'll be presented with a single VM where to install Puppet Enterprise

Usage

Example: deploy large architecture with replica and a more restrictive network

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"

Example: destroy stack

The number of options required are reduced when destroying a stack

terraform destroy -auto-approve -var "project=example.com" -var "user=john.doe"

Usage notes

  1. For making ssh access work with Terraform's Azurerm provider, you will need to add your private key corresponding to the public key in the ssh_key parameter to the ssh agent like so:
> eval `ssh-agent`
> ssh-add <private_key_path>

Limitations

Currently limited to CentOS and VM disk sizes are not configurable

terraform-azure-pe_arch's People

Contributors

davidsandilands avatar mcka1n avatar ody avatar reidmv avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

terraform-azure-pe_arch's Issues

Regions with out support for 3 fault domains fail to provision

Describe the Bug

When attempting to provision on to regions with only compatibility for 2 fault domains in an availability region provisioning will fail as the terraform defaults to 3.

Expected Behavior

We would expect the module to use 3 if available and fail to 2 otherwise

Steps to Reproduce

Provisioning a large or xlarge setup to a region like UKSOUTH

Failed on localhost:

Error: compute.AvailabilitySetsClient#CreateOrUpdate: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="InvalidParameter" Message="The specified fault domain count 3 must fall in the range 1 to 2." Target="platformFaultDomainCount"

    with module.instances.azurerm_availability_set.compiler_availability_set[0],
    on modules\instances\main.tf line 184, in resource "azurerm_availability_set" "compiler_availability_set":
   184: resource "azurerm_availability_set" "compiler_availability_set" {

Failed on 1 target: localhost
Ran on 1 target

Additional Context

(https://github.com/MicrosoftDocs/azure-docs/blob/main/includes/managed-disks-common-fault-domain-region-list.md)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.