Skip to content

Commit 14505fa

Browse files
committed
Add files from v1.0.15
1 parent 9730178 commit 14505fa

39 files changed

+3596
-22
lines changed
+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
name: Avi - 2 Site GSLB Deployment
2+
3+
# Controls when the workflow will run
4+
on:
5+
# Triggers the workflow on push or pull request events but only for the main branch
6+
push:
7+
branches: [ main ]
8+
pull_request:
9+
branches: [ main ]
10+
release:
11+
types: [released]
12+
13+
14+
# Allows you to run this workflow manually from the Actions tab
15+
workflow_dispatch:
16+
17+
# These scenarios will be ran in parallel
18+
jobs:
19+
# This workflow contains multiple jobs to test various scenarios
20+
dual-site:
21+
name: gslb (HA_${{ matrix.controller_ha }})
22+
runs-on: ubuntu-latest
23+
env:
24+
site_type: "gslb"
25+
AWS_SECRET_ACCESS_KEY: ${{ secrets.TF_VAR_AWS_SECRET_KEY }}
26+
AWS_ACCESS_KEY_ID: ${{ secrets.TF_VAR_AWS_ACCESS_KEY }}
27+
TF_VAR_aws_secret_key: ${{ secrets.TF_VAR_AWS_SECRET_KEY }}
28+
TF_VAR_aws_access_key: ${{ secrets.TF_VAR_AWS_ACCESS_KEY }}
29+
TF_VAR_create_iam: ${{ matrix.create_iam }}
30+
TF_VAR_create_networking: ${{ matrix.create_networking }}
31+
TF_VAR_custom_vpc_id_east: ${{ secrets.TF_VAR_CUSTOM_VPC_ID_EAST }}
32+
TF_VAR_custom_subnet_ids_east: ${{ secrets.TF_VAR_CUSTOM_SUBNET_IDS_EAST }}
33+
TF_VAR_avi_cidr_block_east: "10.252.0.0/16"
34+
TF_VAR_dns_vs_settings_east: ${{ secrets.TF_VAR_DNS_VS_SETTINGS_EAST }}
35+
TF_VAR_custom_vpc_id_west: ${{ secrets.TF_VAR_CUSTOM_VPC_ID_WEST }}
36+
TF_VAR_custom_subnet_ids_west: ${{ secrets.TF_VAR_CUSTOM_SUBNET_IDS_WEST }}
37+
TF_VAR_avi_cidr_block_west: "10.254.0.0/16"
38+
TF_VAR_dns_vs_settings_west: ${{ secrets.TF_VAR_DNS_VS_SETTINGS_WEST }}
39+
TF_VAR_controller_ha: ${{ matrix.controller_ha }}
40+
TF_VAR_controller_password: ${{ secrets.TF_VAR_CONTROLLER_PASSWORD }}
41+
TF_VAR_controller_public_address: ${{ matrix.controller_public_address }}
42+
TF_VAR_private_key_path: "/home/runner/pkey"
43+
TF_VAR_key_pair_name: ${{ secrets.TF_VAR_KEY_PAIR_NAME }}
44+
TF_VAR_avi_version: ${{ matrix.avi_version }}
45+
avi_version: ${{ matrix.avi_version }}
46+
defaults:
47+
run:
48+
shell: bash
49+
working-directory: test
50+
strategy:
51+
matrix:
52+
include:
53+
- avi_version: "20.1.6"
54+
create_networking: false
55+
controller_ha: false
56+
controller_public_address: true
57+
create_iam: false
58+
- avi_version: "20.1.6"
59+
create_networking: false
60+
controller_ha: true
61+
controller_public_address: true
62+
create_iam: false
63+
- avi_version: "21.1.1"
64+
create_networking: false
65+
controller_ha: false
66+
controller_public_address: true
67+
create_iam: false
68+
- avi_version: "21.1.1"
69+
create_networking: false
70+
controller_ha: true
71+
controller_public_address: true
72+
create_iam: false
73+
fail-fast: false
74+
75+
76+
# Steps represent a sequence of tasks that will be executed as part of the job
77+
steps:
78+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
79+
- uses: actions/checkout@v2
80+
81+
- name: Setup Go environment
82+
uses: actions/[email protected]
83+
with:
84+
go-version: 1.16
85+
86+
- name: Setup Env
87+
run: |
88+
go mod download
89+
pipx inject ansible-core avisdk requests --include-deps --include-apps
90+
pipx list
91+
ansible-galaxy collection install vmware.alb
92+
echo "$PKEY" > pkey_enc
93+
cat pkey_enc | base64 -d > /home/runner/pkey
94+
chmod 600 /home/runner/pkey
95+
env:
96+
PKEY: ${{ secrets.PKEY }}
97+
98+
- name: Create Infrastructure and run Go Tests
99+
run: go test -v create_infra_test.go -tags=e2e -timeout 120m
100+
101+
- name: Run Ansible Playbook to verify Avi Controller Status
102+
run: |
103+
export name_prefix_east=$(cat ../examples/gslb/.test-data/TF_VAR_name_prefix_east.json)
104+
export name_prefix_west=$(cat ../examples/gslb/.test-data/TF_VAR_name_prefix_west.json)
105+
export controller_west_ip=$(terraform -chdir="../examples/gslb" output -no-color -json | jq .controllers_west.value[0].public_ip_address)
106+
export controller_east_ip=$(terraform -chdir="../examples/gslb" output -no-color -json | jq .controllers_east.value[0].public_ip_address)
107+
ansible-playbook ansible_test.yml -e password=$TF_VAR_controller_password -e controller_ip=$controller_east_ip -e avi_version=$avi_version -e name_prefix=$name_prefix_east -e controller_ha=$TF_VAR_controller_ha
108+
ansible-playbook ansible_test.yml -e password=$TF_VAR_controller_password -e controller_ip=$controller_west_ip -e verify_gslb=true -e avi_version=$avi_version -e name_prefix=$name_prefix_west -e controller_ha=$TF_VAR_controller_ha
109+
110+
- name: Cleanup Avi Created Infra
111+
if: ${{ always() }}
112+
run: |
113+
export controller_west_ip=$(terraform -chdir="../examples/gslb" output -no-color -json | jq .controllers_west.value[0].public_ip_address)
114+
export controller_east_ip=$(terraform -chdir="../examples/gslb" output -no-color -json | jq .controllers_east.value[0].public_ip_address)
115+
ansible-playbook ansible_avi_cleanup.yml -e password=$TF_VAR_controller_password -e controller_ip=$controller_east_ip -e avi_version=$TF_VAR_avi_version
116+
ansible-playbook ansible_avi_cleanup.yml -e password=$TF_VAR_controller_password -e controller_ip=$controller_west_ip -e avi_version=$TF_VAR_avi_version
117+
118+
119+
- name: Run Terraform Destroy
120+
if: ${{ always() }}
121+
run: |
122+
go test -v destroy_infra_test.go -timeout 30m
+115
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
name: Avi - Single Site Deployment
2+
3+
# Controls when the workflow will run
4+
on:
5+
# Triggers the workflow on push or pull request events but only for the main branch
6+
push:
7+
branches: [ main ]
8+
pull_request:
9+
branches: [ main ]
10+
release:
11+
types: [released]
12+
13+
14+
# Allows you to run this workflow manually from the Actions tab
15+
workflow_dispatch:
16+
17+
# These scenarios will be ran in parallel
18+
jobs:
19+
# This workflow contains multiple jobs to test various scenarios
20+
single-site:
21+
name: 1-site (Network_${{ matrix.create_networking }},HA_${{ matrix.controller_ha }})
22+
runs-on: ubuntu-latest
23+
env:
24+
site_type: "single-site"
25+
AWS_SECRET_ACCESS_KEY: ${{ secrets.TF_VAR_AWS_SECRET_KEY }}
26+
AWS_ACCESS_KEY_ID: ${{ secrets.TF_VAR_AWS_ACCESS_KEY }}
27+
TF_VAR_aws_secret_key: ${{ secrets.TF_VAR_AWS_SECRET_KEY }}
28+
TF_VAR_aws_access_key: ${{ secrets.TF_VAR_AWS_ACCESS_KEY }}
29+
TF_VAR_create_iam: ${{ matrix.create_iam }}
30+
TF_VAR_create_networking: ${{ matrix.create_networking }}
31+
TF_VAR_controller_password: ${{ secrets.TF_VAR_CONTROLLER_PASSWORD }}
32+
TF_VAR_custom_vpc_id: ${{ secrets.TF_VAR_CUSTOM_VPC_ID_WEST }}
33+
TF_VAR_custom_subnet_ids: ${{ secrets.TF_VAR_CUSTOM_SUBNET_IDS_WEST }}
34+
TF_VAR_avi_cidr_block: "10.254.0.0/16"
35+
TF_VAR_dns_vs_settings: ${{ secrets.TF_VAR_DNS_VS_SETTINGS_WEST }}
36+
TF_VAR_controller_ha: ${{ matrix.controller_ha }}
37+
TF_VAR_controller_public_address: ${{ matrix.controller_public_address }}
38+
TF_VAR_configure_dns_profile: "true"
39+
TF_VAR_dns_service_domain: "aviterraform.local"
40+
TF_VAR_configure_dns_vs: "true"
41+
TF_VAR_private_key_path: "/home/runner/pkey"
42+
TF_VAR_key_pair_name: ${{ secrets.TF_VAR_KEY_PAIR_NAME }}
43+
TF_VAR_avi_version: ${{ matrix.avi_version }}
44+
avi_version: ${{ matrix.avi_version }}
45+
defaults:
46+
run:
47+
shell: bash
48+
working-directory: test
49+
strategy:
50+
matrix:
51+
include:
52+
- avi_version: "20.1.6"
53+
create_networking: false
54+
controller_ha: false
55+
controller_public_address: true
56+
create_iam: false
57+
- avi_version: "20.1.6"
58+
create_networking: false
59+
controller_ha: true
60+
controller_public_address: true
61+
create_iam: false
62+
- avi_version: "21.1.1"
63+
create_networking: false
64+
controller_ha: false
65+
controller_public_address: true
66+
create_iam: false
67+
- avi_version: "21.1.1"
68+
create_networking: false
69+
controller_ha: true
70+
controller_public_address: true
71+
create_iam: false
72+
fail-fast: false
73+
74+
75+
# Steps represent a sequence of tasks that will be executed as part of the job
76+
steps:
77+
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
78+
- uses: actions/checkout@v2
79+
80+
- name: Setup Go environment
81+
uses: actions/[email protected]
82+
with:
83+
go-version: 1.16
84+
85+
- name: Setup Env
86+
run: |
87+
go mod download
88+
pipx inject ansible-core avisdk requests --include-deps --include-apps
89+
pipx list
90+
ansible-galaxy collection install vmware.alb
91+
echo "$PKEY" > pkey_enc
92+
cat pkey_enc | base64 -d > /home/runner/pkey
93+
chmod 600 /home/runner/pkey
94+
env:
95+
PKEY: ${{ secrets.PKEY }}
96+
97+
- name: Create Infrastructure and run Go Tests
98+
run: go test -v create_infra_test.go -tags=e2e -timeout 120m
99+
100+
- name: Run Ansible Playbook to verify Avi Controller Status
101+
run: |
102+
export name_prefix=$(cat ../examples/single-site/.test-data/TF_VAR_name_prefix.json)
103+
export controller_ip=$(terraform -chdir="../examples/single-site" output -no-color -json | jq .controllers.value[0].public_ip_address)
104+
ansible-playbook ansible_test.yml -e password=$TF_VAR_controller_password -e controller_ip=$controller_ip -e avi_version=$avi_version -e name_prefix=$name_prefix -e controller_ha=$TF_VAR_controller_ha
105+
106+
- name: Cleanup Avi Created Infra
107+
if: ${{ always() }}
108+
run: |
109+
export controller_ip=$(terraform -chdir="../examples/single-site" output -no-color -json | jq .controllers.value[0].public_ip_address)
110+
ansible-playbook ansible_avi_cleanup.yml -e password=$TF_VAR_controller_password -e controller_ip=$controller_ip -e avi_version=$avi_version
111+
112+
- name: Run Terraform Destroy
113+
if: ${{ always() }}
114+
run: |
115+
go test -v destroy_infra_test.go -timeout 30m

.gitignore

+13-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
# Ignore everything in this directory
2-
*
3-
# Except this file
4-
!.gitignore
1+
# Local .terraform directories
2+
**/.terraform/*
3+
**/*.tar.gz
4+
.terraform
5+
terraform.tfstate
6+
*.tfstate*
7+
terraform.tfvars
8+
.terraform.lock.hcl
9+
terraform.tfvars.*
10+
**/examples/*/.terraform/*
11+
**/examples/*/terraform.tfvars
12+
**/examples/*/terraform.lock.hcl
13+
**/examples/*/.test-data

.pre-commit-config.yaml

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Copyright 2021 VMware, Inc.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
repos:
5+
- repo: git://github.com/antonbabenko/pre-commit-terraform
6+
rev: v1.44.0
7+
hooks:
8+
- id: terraform_fmt
9+
- id: terraform_validate
10+
- id: terraform_docs
11+
- id: terraform_tflint
12+
args:
13+
- '--args=--only=terraform_deprecated_interpolation'
14+
- '--args=--only=terraform_deprecated_index'
15+
- '--args=--only=terraform_unused_declarations'
16+
- '--args=--only=terraform_comment_syntax'
17+
- '--args=--only=terraform_documented_outputs'
18+
- '--args=--only=terraform_documented_variables'
19+
- '--args=--only=terraform_typed_variables'
20+
- '--args=--only=terraform_module_pinned_source'
21+
- '--args=--only=terraform_naming_convention'
22+
- '--args=--only=terraform_required_version'
23+
- '--args=--only=terraform_required_providers'
24+
- '--args=--only=terraform_standard_module_structure'
25+
- '--args=--only=terraform_workspace_remote'
26+
- repo: git://github.com/pre-commit/pre-commit-hooks
27+
rev: v3.3.0
28+
hooks:
29+
- id: check-merge-conflict

0 commit comments

Comments
 (0)