I am a jack of some trades and definitely a master of none. That doesn't mean I haven't had some experience and a handful of opinions to go with it. All of the opinions expressed here are my own and do not reflect the views of my employer
Encrypted chat via Keybase markjmenger
RSS
summer
sweet
devops
dark
year-round
big-ip
automation
hashicorp
terraform
winter
brewing
yeast
complexity
fragile2agile
technology
history
lean
modernization
evolutionary
revolutionary
innovation
strategy
security
agility
linguistics
ai
architecture
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="[email protected]: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="[email protected]: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