Alex Harvey's personal blog
- A Pattern for Multiple GitLab CI Pipelines
- The climate impact of Australian nuclear power
- Rethinking home ownership: The impact of Rentvesting
- Migrating S3 Bucket ACLs
- Experiments in the Terraform Test framework, Part I: Plans
- Proof of concept of behave framework compared to shunit2
- How to write an AWS CLI script, Part I: Patterns
- Adding hosted secrets rotation Lambda to an RDS stack
- Using shUnit2 for end-to-end testing of Terraform and AWS
- Data consistency testing in Puppet, Part III: Direct data assertions
- Unit testing a CloudFormation UserData script with shunit2
- Why ERB should be preferred to Jinja2 for DevOps templating
- Comment on AEMO/CSIRO GenCost 2019-20
- Unit testing a Terraform user_data script with shUnit2
- A method of unit testing Jinja2 templates
- A method for migrating Serverless Framework to SAM
- GNU make for DevOps engineers
- A proof of concept for managing SAM templates using Sceptre
- Introduction to SAM Part IV: Updates to sam package and deploy in SAM CLI >= 0.33.1
- Adventures in the Terraform DSL, Part X: Templates
- When 3 Musketeers are two too many
- Adventures in the Terraform DSL, Part IX: Data sources
- Adventures in the Terraform DSL, Part VIII: The Puppet provisioner
- Adventures in the Terraform DSL, Part VII: Resource for_each in Terraform 0.12.6
- Adventures in the Terraform DSL, Part VI: Towards a unit testing framework
- Adventures in the Terraform DSL, Part V: Conditional logic
- Adventures in the Terraform DSL, Part IV: All about splats
- Adventures in the Terraform DSL, Part III: Iteration enhancements in Terraform 0.12
- Adventures in the Terraform DSL, Part II: Iteration in Terraform 0.11 and earlier
- Adventures in the Terraform DSL, Part I: Structured data
- A sed tutorial and reference
- Data consistency testing in Puppet, Part II: Testing file content
- Introduction to SAM Part III: Adding a proxy+ endpoint and CORS configuration
- Introduction to SAM Part II: Template and architecture
- Introduction to SAM Part I: Using the SAM CLI
- Unit testing a Python Boto3 Lambda function using Placebo
- Hierarchical data lookups using the Bash shell
- Configuring the Test Kitchen EC2 driver
- Configuration management with Troposphere and Jerakia
- Generating Markdown from source code using ERB
- The pros and cons of Puppet PDK
- Data consistency testing in Puppet, Part I: Data types
- The four SQL joins using Linux join and sort
- Using Placebo for Bash to auto-generate mocks in unit tests
- Testing AWS CLI scripts in shUnit2
- Analysing Puppet module dependencies using JQ
- Pretty-printing Puppet data
- Auto-generating Markdown tables of contents
- Creating a ZIP file for an AWS Lambda Python function
- Applying an edited Git patch in Vim
- JQ commands for Puppet catalogs
- Merge a Git repository and its history into a subdirectory of a second Git repository
- Unit Testing a Bash Script with shUnit2
- Using create_specs to refactor Puppet
- Introducing programmatic editing of Hiera YAML files
- Verifying file contents in a puppet catalog
- Mocking with rspec-puppet-utils
- Integration testing using Ansible and Test Kitchen
- Testing an Ansible role using Test Kitchen
- Setting up Puppet module testing from scratch: Part III, Travis CI
- Setting up Puppet module testing from scratch: Part II, Beaker for module testing
- Setting up Puppet module testing from scratch: Part I, Puppet-syntax, Puppet-lint and Rspec-puppet
- Speeding up Beaker on a Mac using SquidMan
- Rspec testing a simple Ruby script
- Dumping the catalog in rspec-puppet
- Parallelising rspec-puppet
- Using catalog-diff while refactoring Puppet code
- Compiling a puppet catalog – on a laptop