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
I previously released a series of steps for using F5’s Terraform modules in an “airgapped” environment. However, those instructions included the assumption that you have access to a workstation that has access to both the public internet and the airgapped network. So, not really airgapped. In this document, we’ll include some additional steps that require “sneaker-net” access between two workstations. We’ll refer to the public internet-facing workstation as Internet Workstation and the airgapped network-facing workstation as Airgapped Workstation.
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.
[Internet Workstation] Retrieve remote url for one of the modules at F5’s devcentral GitHub account
export MODULEGITHUBURL="[email protected]:F5Networks/terraform-aws-bigip-module.git"
git clone $MODULEGITHUBURL
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
# create a bundle file with the main branch and all tags
git bundle create module.bundle main --tags
[Internet Workstation] Copy file to a secure transport
This is going to be different between organizations and environments. You should verify that your transport is compliant with organization policy.
[Airgapped Workstation] Retrieve file from secure transport
git fetch /path/to/module.bundle main:localinterimbranch
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"
MODULEAIRGAPURL
to create the additional git repository remote.
cd terraform-aws-bigip-module
git remote add airgap $MODULEAIRGAPURL
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