• Projects

    Some software projects of which I am either the owner or a core contributor.

    Terraform Azure Providers

    For configuring cloud and identity infrastructure in Microsoft Azure. The AzureRM provider uses the Resource Manager APIs to provision and manage Azure resources. The AzureAD provider uses the Microsoft Graph API to manage Microsoft Entra and Microsoft 365.

    https://github.com/terraform-providers/terraform-provider-azurerm
    https://github.com/hashicorp/terraform-provider-azuread

    Hamilton

    A Go SDK for Microsoft Graph.

    https://github.com/manicminer/hamilton

    Conference Name Badger

    Whilst creating attendee badges for DevOpsDays Cape Town, I could not find a simple way to reconcile the list of attendees (from our ticket vendor) with the badge design (a PDF from our designer). I wanted the equivalent of a mail merge, but it needed to look great and be usable as late registrations came in. My solution was a Python script to create a multipage PDF for our printing vendor. It accepts a CSV file as input, with configurable fields and locations (admittedly, you edit the script).

    https://github.com/DevOpsCapeTown/namebadger

    AWS Console Colors Userscript

    A userscript for browsers which improves the appearance of the AWS Console when you are assuming IAM roles, by making the entire menu bar approximate the color you select in the role switcher pill widget.

    https://github.com/manicminer/userscript-aws-console-colors

    AWS Certificate Manager (ACM) Terraform module

    A Terraform module which requests and validates ACM certificates on AWS, using DNS validation with Route53.

    https://github.com/manicminer/terraform-aws-acm-certificate

    Ansible with AWS Skeleton Project

    A useful starter project for scaffolding your next Ansible project for AWS, incorporating many recommended approaches and best practises.

    https://github.com/manicminer/ansible-aws-skel

    AWS Vars Plugin for Ansible

    A drop-in plugin for Ansible 2.5+, which:

    • Searches one or more AWS accounts for VPC, subnet, security group and ELB target group details,
    • Matches tags of all these resources with configured set of tag names, then
    • Builds a hierarchical dictionary of resources mapped by tag values,
    • All the above information is made available to all hosts managed by Ansible by means of native host variables

    Bonus feature: brings native support for multiple AWS accounts with automatic account switching once per playbook based on extra vars passed at runtime.

    https://github.com/manicminer/ansible-vars-plugin-aws

    Auto Scaling Deployment modules for Ansible

    A set of modules I wrote for Ansible to manage software deployments with AWS Auto Scaling. Particularly useful when coupled with Elastic Load Balancers, these modules model a configurable blue-green style deployment strategy for simple, fast cutover in your production environment, with rollback.

    https://github.com/manicminer/ansible-modules-asg-deployments