Assisted Deployment

This is an optional lab exercise that goes through an “Assisted Deployment”. This allows you to deploy a F5 Distributed Cloud site without the need to share your AWS credentials with the F5 Distributed Cloud Console. Instead you will deploy a site from the F5 Distributed Cloud terraform container that can be run on your local workstation.

The following is adapted from: https://www.volterra.io/docs/how-to/site-management/create-aws-site


Download Terraform Parameters

When creating an AWS VPC Site make sure that you select “Assisted Deployment” instead of “Automated Deployment”.

After you save the site you will need to download the Terraform parameters.

  • Download the terraform variables in case of assisted deployment. Navigate to the created AWS VPC site object using the Manage -> Site Management -> AWS VPC Site path.

  • Find your AWS VPC site object and click … -> Terraform Parameters for it. Copy the parameters to a file in your local machine.

../../_images/xc-download-tf-params.png ../../_images/xc-download-tf-params2.png

API Certificate

From the top right of the F5 Distributed Cloud Console click on the “Account” icon.

../../_images/xc-console-account.png

Click on “My Account”

On the menu on the left click on “Credentials”.

../../_images/xc-console-credentials-menu.png

Click on “Create Credentials”

Enter the requested information for

  • Name: [unique name]-api

  • Credential type: API Certificate

  • Password: [this password will be used to encrypt the certificate]

  • Expiry Date: Desired expiration Date

../../_images/xc-console-labuser-credentials.png

Click on “Download” to download the certificate as a .p12 file.


Docker container

Note

This assumes that you have already installed Docker on your workstation/server.

Next you will want to run the latest version of the F5 Distributed Cloud terraform container.

$ docker pull gcr.io/volterraio/volt-terraform:latest

After this completes you can run

$ docker run --entrypoint tail --name terraform-cli -d -it -w /terraform/templates -v ${HOME}/.ssh:/root/.ssh gcr.io/volterraio/volt-terraform:latest -f /dev/null

You can next run the following command to enter the docker container.

$ docker exec -it terraform-cli sh

You can run some commands to explore what is in the container.

$ /terraform/templates #
  /terraform/templates # ls
  ce-multi-2nic-azure   ce-single-2nic-aws    ce-single-aws         ce-single-vsphere     quickstart-webapp
  ce-multi-aws          ce-single-2nic-azure  ce-single-azure       hello-cloud           self-serve
  ce-multi-azure        ce-single-2nic-gcp    ce-single-gcp         hello-edge            views

Docker Container files

In a different terminal window you can copy into the container your API Certificate and terraform parameters file.

$ docker cp /Users/labuser/Downloads/[tenant name].console.ves.volterra.io.api-creds.p12 terraform-cli:/var/tmp
$ docker cp /Users/labuser/Downloads/system-labuser-aws.json terraform-cli:/var/tmp

Docker Container environment variables

To execute the terraform code you will need to set environment variables that will allow you to authenticate to both F5 Distributed Cloud and AWS.

F5 Distributed Cloud requires the following set of environment variables.

export VES_P12_PASSWORD=[password for api certificate]
export VOLT_API_P12_FILE=/var/tmp/[tenant name].console.ves.volterra.io.api-creds.p12
export VOLT_API_URL=https://[tenant name].console.ves.volterra.io/api
export TF_VAR_akar_api_url=https://[tenant name].console.ves.volterra.io/api

For AWS you will need to specify

export AWS_ACCESS_KEY_ID="[AWS Key]"
export AWS_SECRET_ACCESS_KEY="[AWS secret key]"
export AWS_SESSION_TOKEN="[AWS session for STS tokens]"

Docker Container terraform apply

You can then change into the desired template to deploy the site.

/terraform/templates # cd views/aws-volt-node/
/terraform/templates/views/aws-volt-node # terraform init
/terraform/templates/views/aws-volt-node # terraform plan -var-file=/var/tmp/system-labuser.json
/terraform/templates/views/aws-volt-node # terraform apply -var-file=/var/tmp/system-labuser.json

Note that you may need to specify an existing S3 bucket that will be used to store the terraform state files.

Once the terraform completes you should be able to the nodes appear in F5 Distributed Cloud Console.