Skip to content

Instantly share code, notes, and snippets.

@crhntr
Created January 4, 2021 18:17
Show Gist options
  • Save crhntr/9e57ddd93c6650728dce28c9b7ecfb52 to your computer and use it in GitHub Desktop.
Save crhntr/9e57ddd93c6650728dce28c9b7ecfb52 to your computer and use it in GitHub Desktop.
banana.txt
It would be so cool if we could have vsphere environemnts act more like other iaas environments.
- It would make VSphere tests more like the other IAAS test pipelines.
- It would allow us to use the same workspace scripts (maybe) to interact with the environments.
- It would allow us to have a smaller pool of environments (because we install ops manager in the test pipeline)
The following outline is an exploration tracing the usage of the environment resource through the test pipelines. The
test pipeline ert::2.11 is used throughout as a the template I am following the GCP clean test:
- job: acquire-lock-gcp-clean
description: acquire a lock from the releng-env-resource pool. This writes an empty file to the gate-locks directory
and teh file name contains the product-version-pipeline_name. For example when ert:2.11 is claimed,
a file named gate-locks/claimed/ert-2.11-gcp-clean is written to the releng-env-resource-pool repo.
- job: lock-product-gcp-clean
description: I am not sure about the impact of this job. It gets the gate-lock file above and product (tile). It
does not have any puts. It may just be to ensure that the gate-lock creation succeeded. I do not see
any failures for this job in CI.
- job: create-environment-gcp-clean
description: **THIS IS WHERE THE ENVIRONMENT IS MADE (IE THE "PUT")**
The gate-lock, product, terraforming-repo, opsman_image (from pivnet) are all fetched.
The terraform vars are created by a task called setup-terraform-vars.
The env-state-gcp-clean environment is created via a terraform put state.
The terraform state is stored in an aws s3 bucket called releng-terraform-environments with the path
prefix "gcp/srt/2.11/clean". The terraform state file is named some-random-name.tfstate.
Examples of this resource can be found here: https://releng.ci.cf-app.com/teams/main/pipelines/ert::2.11/resources/env-state-gcp-clean
# from here on out I am going to try as best I can to enumerate the values used from the terraform state file.
# The terraform state file is a JSON file.
- task: setup-terraform-vars
description: I think this is where we will do most of the work mapping the testbed json to the terraform state.
This task has a per IAAS switch statement that slightly changes the fields in the tfvars file.
The terraforming input variables
# THIS IS WHERE THE ENVIRONMENT IS MADE VIA THE TERRAFORM RESOURCE
- task: install-releng-cert
- task: add-to-global-dns
- job: prepare-gcp-clean
description:
- task: check-dns
- task: download-stemcell
- task: configure-authentication-and-director
- task: upload-and-stage-ert
- task: configure-ert
PLAN
- use a local provisioner that runs the vsphere upload ops man
- it gets a local file which is the testbed file
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment