GitHub AT-AT v1.0.22 adds Static Web Site Publishing on Azure with Jekyll
The GitHub AT-AT project has reached another milestone with the release of version 1.0.22, which includes a new template for provisioning a Jekyll-based static web site. This addition demonstrates how the Terraform module library can support two dramatically different architectures under one umbrella: a static site and an Active-Active Multi-Region Azure Functions-based microservices environment. The GitHub AT-AT continues to prove how flexible its approach can be, providing a smooth path for many different scenarios Infrastructure-as-Code operational environments.
The new template, called azure-jekyll-site, extends the GitHub AT-AT in a way that feels almost too straightforward. It removes the augments the standard Terraform core workflow with artifacts needed for a Jekyll web site.
The Jekyll Site only replaces the codebase module with its own incarnation of it that drops the following things:
- GitHub Actions for the Jekyll Publishing Workflow
- Jekyll Static Web site
- Terraform codebase that provisions an Azure Storage Account configured to host a Static Web Site
Instead of adjusting the entire pipeline to accommodate a radically different application stack, azure-jekyll-site steps in to handle these new needs with minimal fuss. Below is an example of how the module can be invoked in your Terraform configuration:
module "jekyll_static_web_site" {
source = "Azure-Terraformer/atat/github//modules/azure-jekyll-site"
version = "1.0.22"
application_name = var.application_name
github_organization = var.github_organization
repository_name = var.repository_name
repository_description = var.repository_description
repository_visibility = var.repository_visibility
terraform_version = var.terraform_version
location = "westus2"
commit_user = {
name = var.github_username
email = var.github_email
}
environments = {
dev = {
subscription_id = var.azure_nonprod_subscription
branch_name = "develop"
backend = var.nonprod_backend
}
prod = {
subscription_id = var.azure_prod_subscription
branch_name = "main"
backend = var.prod_backend
}
}
}
This configuration stands up two environments — dev and prod — so you can preview changes to your static web site before releasing them into the wild. Just like the microservices-based approach, there is a new GitHub Actions pipeline that handles terraform apply operations to gather the necessary details, such as the Storage Account name and Resource Group. Those details come in handy when running the Azure Blob Storage Batch Upload step, which publishes your site.
This example shows how we can provision a new Infrastructure Lifecycle Management environment — which in the case of a Jekyll Static Web Site we probably only need two environments — dev and prod. This will allow us to stage changes to the static web site and preview them before we shepherd those changes into the production web site.
There is a new GitHub Actions pipeline that will run terraform apply in order to obtain the Storage Account Name and Resource Group — pre-requisites for the Azure Blob Storage Batch Upload.
With the azure-jekyll-site module now available, the GitHub AT-AT ecosystem reveals its ability to encompass both the complexity of multi-region microservices and the simplicity of a Jekyll-based static site. The same GitFlow and environment management principles apply equally well to each type of workload, underscoring the flexibility of this framework. New templates like this one underscore the potential to manage anything from a personal blog to a globally distributed application, all within a single code-driven pipeline.
In short, version 1.0.22 expands the GitHub AT-AT’s capabilities by showcasing an architecture that is worlds away from the Azure Functions microservices template. The simple static site workflow demonstrates how quickly you can adapt the same GitOps and Terraform configurations for completely different project types. This release continues the overarching goal of making environment provisioning and code deployment cleaner, more consistent, and less error-prone.