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

Microsoft Graph SDK for Golang

An autogenerated Go SDK for Microsoft Graph that replaces manicminer/hamilton.

https://github.com/hashicorp/go-azure-sdk/tree/main/microsoft-graph

Azure Authentication Library for Golang

An opinionated Go library for handling authentication to Azure APIs including Resource Manager, Microsoft Graph and various data plane APIs such as KeyVault, Storage etc.

https://github.com/hashicorp/go-azure-sdk/tree/main/sdk/auth

Hamilton

A Go SDK for Microsoft Graph. Now deprecated, see hashicorp/go-azure-sdk for a replacement.

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