At F2A we believe that IT complexity is an existential threat to the modern enterprise. IT Complexity causes challenges to an enterprise's ability to security itself. IT Complexity causes challenges to an enterprise's ability to capitalize on market opportunities. IT Complexity is one manifestation of unmanaged technical debt. The path from a fragile, fear-based technology operating model to an agile, innovation-based operating model is incremental and value-orientated.
devops
big-ip
automation
ansible
hashicorp
terraform
security
innovation
complexity
fragile2agile
technology
history
lean
modernization
evolutionary
revolutionary
strategy
agility
ai
by Mark J Menger
IT Industry research, such as Accelerate, shows improving a company’s ability to deliver software is critical to their overall success. The following key practices and design principles are cornerstones to that improvement.
F5 has published Terraform modules on GitHub.com to help customers adopt deployment automation practices, focused on streamlining instantiation of BIG-IPs on AWS, Azure, and Google. Using these modules allows F5 customers to leverage their embedded knowledge and expertise.
Not all customer Terraform automation hosts running the CLI or enterprise products are able to access public internet resources like GitHub.com and the Terraform Registry. The following steps describe how to create and maintain a private airgapped copy of F5’s modules for these secured customer environments.
This example uses a personal GitHub account as an analog for airgapped target. So, we can’t use the fork feature of github.com to create the copy.
For this approach, we’re assuming a workstation that has access to both the source repository host and the target respository host. So, not truly fully airgapped. We’ll show a workflow using git bundle in the future.
Retrieve remote url for one of the modules at F5’s devcentral GitHub account

export MODULEGITHUBURL="git@github.com:f5devcentral/terraform-aws-bigip-module.git"
Create repository on target airgapped host
Follow the appropriate directions for the airgapped hosted Git (BitBucket, GitLab, GitHub Enterprise, etc.). And, retrieve the remote url for this repository.
export MODULEAIRGAPURL="git@github.com:myteamsaccount/localmodulerepo.git"
git clone $MODULEGITHUBURL
MODULEAIRGAPURL to create the additional git repository remote.
cd terraform-aws-bigip-module
git remote add airgap $MODULEAIRGAPURL
main branch. In some older repositories the primary repository branch may still be named master.# get the latest from the origin repository
git fetch origin
# push any changes to the airgap repository
git push airgap main
# push all repository tags to the airgap repository
git push --tags airgap
git tag
e.g.
0.9.2
v0.9
v0.9.1
v0.9.3
v0.9.4
v0.9.5
Review new versions for environment acceptance
At this point, your organization should perform any acceptance testing of the new tags prior to using them in production environments.
git:: followed by the remote url of the airgap repository, followed by ?ref=, finally followed by the tag identified in the previous step.module "bigip" {
source = "git::https://github.com/myteamsaccount/localmodulerepo.git?ref=v0.9.3"
...
}
Check out Terraform for more detailed configuration requirements
module "bigip" {
source = "privateregistry/modulereference"
version = "v0.9.3"
...
}
# get the latest from the origin repository
git fetch origin
# push any changes to the airgap repository
git push airgap main
# push all repository tags to the airgap repository
git push --tags airgap
Installing and running iControl extensions in isolated GCP VPCs - Matt Emes covers how to install and operate iControl extensions in an air-gapped GCP environment.
Deploy BIG-IP on GCP with GDM without Internet access - Gert Wolfis covers how to use the Google Deployment Manager (GDM) to deploy BIG-IPs in an air-gapped GCP environment.
tags: big-ip - automation - hashicorp - terraform - devops