diff --git a/.gitignore b/.gitignore index 65195a8..17a0384 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ .terraform* terraform.tfstate* -terraform.tfvars -!examples/**/terraform.tfvars +*.tfvars +!examples/**/test_terraform.tfvars *.conf diff --git a/examples/ex4-multiple-clusters/main.tf b/examples/ex4-multiple-clusters/main.tf index da61351..1a6bc9a 100644 --- a/examples/ex4-multiple-clusters/main.tf +++ b/examples/ex4-multiple-clusters/main.tf @@ -2,20 +2,37 @@ provider "aws" { region = var.region } +module "network" { + source = "weibeld/kubeadm/aws//modules/network" + version = "~> 0.2" + tags = merge(local.additional_tags, {"Name" = "terraform-kubeadm"}) +} + module "cluster_1" { - source = "weibeld/kubeadm/aws" - version = "~> 0.2" + source = "../.." cluster_name = var.cluster_names[0] + vpc_id = module.network.vpc_id + subnet_id = module.network.subnet_id + tags = merge(local.additional_tags, {"Name" = var.cluster_names[0]}) } module "cluster_2" { - source = "weibeld/kubeadm/aws" - version = "~> 0.2" + source = "../.." cluster_name = var.cluster_names[1] + vpc_id = module.network.vpc_id + subnet_id = module.network.subnet_id + tags = merge(local.additional_tags, {"Name" = var.cluster_names[1]}) } module "cluster_3" { - source = "weibeld/kubeadm/aws" - version = "~> 0.2" + source = "../.." cluster_name = var.cluster_names[2] + vpc_id = module.network.vpc_id + subnet_id = module.network.subnet_id + tags = merge(local.additional_tags, {"Name" = var.cluster_names[2]}) + } + +locals { + additional_tags = {"Environment" = terraform.workspace} +} \ No newline at end of file diff --git a/examples/ex4-multiple-clusters/test/aws_kubeadm_plan_test.go b/examples/ex4-multiple-clusters/test/aws_kubeadm_plan_test.go new file mode 100644 index 0000000..c0685bd --- /dev/null +++ b/examples/ex4-multiple-clusters/test/aws_kubeadm_plan_test.go @@ -0,0 +1,66 @@ +package test + +import ( + "github.com/gruntwork-io/terratest/modules/k8s" + "github.com/gruntwork-io/terratest/modules/logger" + "github.com/gruntwork-io/terratest/modules/terraform" + "github.com/stretchr/testify/assert" + "io/ioutil" + "path/filepath" + "testing" +) + +// This approach compares the entire plan json output to a static json file in the test directory. +// The file needs to be updated as the configuration changes to pass the test. An improvement would +// be to get targeted plan output for specific resources and use jsonpath to test those resources +// exist in the plan. +func TestKubeAdmClusterConfig(t *testing.T) { + t.Parallel() + + planFilePath := filepath.Join(".", "plan.out") + + terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{ + // The path to where our Terraform code is located + TerraformDir: "..", + PlanFilePath: planFilePath, + + // Variables to pass to our Terraform code using -var-file options + VarFiles: []string{"test_terraform.tfvars"}, + + // Disable colors in Terraform commands so its easier to parse stdout/stderr + NoColor: true, + // Disable logging + Logger: logger.New(logger.Discard), + }) + + // At the end of the test, run `terraform destroy` to clean up any resources that were created. + defer terraform.Destroy(t, terraformOptions) + + // This will run `terraform init` and `terraform apply` and `terraform show` and return the plan + // json at `PlanFilePath` and fail the test if there are any errors. + planJson := terraform.InitAndPlanAndShow(t, terraformOptions) + + // Use jsonpath to extract the expected json nodes on the instance from the plan. You can alternatively + // use https://github.com/hashicorp/terraform-json to get a concrete struct with all the types resolved. + var actualConfig []map[string]interface{} + var expectedConfig []map[string]interface{} + + k8s.UnmarshalJSONPath( + t, + []byte(planJson), + "{ }", + &actualConfig, + ) + + expectedBuf, _ := ioutil.ReadFile(filepath.Join(".", "plan_config.json")) + + k8s.UnmarshalJSONPath( + t, + expectedBuf, + "{ }", + &expectedConfig, + ) + + assert.Equal(t, expectedConfig, actualConfig) + +} diff --git a/examples/ex4-multiple-clusters/test/go.mod b/examples/ex4-multiple-clusters/test/go.mod new file mode 100644 index 0000000..cbd10b9 --- /dev/null +++ b/examples/ex4-multiple-clusters/test/go.mod @@ -0,0 +1,8 @@ +module github.com/christopinka/terraform-aws-kubeadm/examples/ex4-multiple-clusters/test + +go 1.15 + +require ( + github.com/gruntwork-io/terratest v0.30.23 + github.com/stretchr/testify v1.6.1 +) diff --git a/examples/ex4-multiple-clusters/test/go.sum b/examples/ex4-multiple-clusters/test/go.sum new file mode 100644 index 0000000..c80293f --- /dev/null +++ b/examples/ex4-multiple-clusters/test/go.sum @@ -0,0 +1,625 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM= +cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/azure-sdk-for-go v35.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v38.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v46.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.9.6/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= +github.com/Azure/go-autorest/autorest v0.11.0/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.5/go.mod h1:foo3aIXRQ90zFve3r0QiDsrjGDUwWhKl0ZOQy1CT14k= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.2/go.mod h1:/3SMAM86bP6wC9Ev35peQDUeqFZBMH07vvUOmg4z/fE= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.1/go.mod h1:ea90/jvmnAwDrSooLH4sRIehEPtG/EPUXavDh31MnA4= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.0/go.mod h1:JljT387FplPzBA31vUcvsetLKF3pec5bdAxjVU4kI2s= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.2.0/go.mod h1:GunWKJp1AEqgMaGLV+iocmRAJWqST1wQYhyyjXJ3SJc= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/validation v0.1.0/go.mod h1:Ha3z/SqBeaalWQvokg3NZAlQTalVMtOIAs1aGK7G6u8= +github.com/Azure/go-autorest/autorest/validation v0.3.0/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GoogleCloudPlatform/k8s-cloud-provider v0.0.0-20190822182118-27a4ced34534/go.mod h1:iroGtC8B3tQiqtds1l+mgk/BBOrxbqjH+eUfFQYRc14= +github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.16.26/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.27.1 h1:MXnqY6SlWySaZAqNnXThOvjRFdiiOuKtC6i7baFdNdU= +github.com/aws/aws-sdk-go v1.27.1/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= +github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180108230652-97fdf19511ea/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk= +github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= +github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v0.0.0-20200109221225-a4f60165b7a3/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c h1:ZfSZ3P3BedhKGUhzj7BQlPSU4OvT6tfOKe3DVHzOA7s= +github.com/docker/spdystream v0.0.0-20181023171402-6480d4af844c/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20190911111923-ecfe977594f1/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= +github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0 h1:skJKxRtNmevLqnayafdLe2AsenqRupVmzZSqrvb5caU= +github.com/go-errors/errors v1.0.2-0.20180813162953-d98b870cc4e0/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-logr/logr v0.2.0 h1:QvGt2nLcHH0WK9orKa+ppBPAxREcH364nPUedEpK0TY= +github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= +github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= +github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= +github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= +github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= +github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= +github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= +github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA= +github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-containerregistry v0.0.0-20200110202235-f4fb41bf00a3/go.mod h1:2wIuQute9+hhWqvL3vEI7YB0EKluF4WcPzI1eAliazk= +github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.1.0 h1:Hsa8mG0dQ46ij8Sl2AYJDUv1oA9/d6Vk+3LG99Oe02g= +github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.2.2/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyycI+I= +github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= +github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/gruntwork-io/gruntwork-cli v0.7.0 h1:YgSAmfCj9c61H+zuvHwKfYUwlMhu5arnQQLM4RH+CYs= +github.com/gruntwork-io/gruntwork-cli v0.7.0/go.mod h1:jp6Z7NcLF2avpY8v71fBx6hds9eOFPELSuD/VPv7w00= +github.com/gruntwork-io/terratest v0.30.23 h1:9iGmn2kL9hnchriqtSm66BGK67pYJl6SU4iOIjfD9f8= +github.com/gruntwork-io/terratest v0.30.23/go.mod h1:EEgJie28gX/4AD71IFqgMj6e99KP5mi81hEtzmDjxTo= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/imdario/mergo v0.3.7 h1:Y+UAYTZ7gDEuOfhxKWy+dvb5dRQ6rJjFSdX2HZY1/gI= +github.com/imdario/mergo v0.3.7/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a h1:zPPuIq2jAWWPTrGt70eK/BSch+gFAGrNzecsoENgu2o= +github.com/jinzhu/copier v0.0.0-20190924061706-b57f9002281a/go.mod h1:yL958EeXv8Ylng6IfnvG4oflryUi3vgA3xPs9hmII1s= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/mattn/go-zglob v0.0.2-0.20190814121620-e3c945676326/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= +github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= +github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= +github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/oracle/oci-go-sdk v7.1.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= +github.com/pquerna/otp v1.2.0 h1:/A3+Jn+cagqayeR3iHs/L62m5ue7710D35zl1zJ1kok= +github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rubiojr/go-vhd v0.0.0-20160810183302-0bfd3b39853c/go.mod h1:DM5xW0nvfNNm2uytzsvhI3OnX8uzaRAg8UX/CnDqbto= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= +github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= +github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo= +github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/vdemeester/k8s-pkg-credentialprovider v0.0.0-20200107171650-7c61ffa44238/go.mod h1:JwQJCMWpUDqjZrB5jpw0f5VbN7U95zxFy1ZDpoEarGo= +github.com/vmware/govmomi v0.20.3/go.mod h1:URlwyTFZX72RmxtxuaFL2Uj3fD1JTvZdx59bHWk6aFU= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200707034311-ab3426394381 h1:VXak5I6aEWmAXeQjA+QSZzlgNrpq9mjcfDemuexIKsU= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0 h1:/5xXl8Y5W96D+TtHSlonuFqGHIWVuyCkGJLwGh9JJFs= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190920225731-5eefd052ad72/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191205215504-7b8c8591a921/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200113040837-eac381796e91/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +gonum.org/v1/gonum v0.0.0-20190331200053-3d26580ed485/go.mod h1:2ltnJ7xHfj0zHS40VVPYEAAMTa3ZGguvHGBSJeRWqE0= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmKJ7gzohV1XkqsFehRA2FbsbkopSuQ= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.6.1-0.20190607001116-5213b8090861/go.mod h1:btoxGiFvQNVUZQ8W08zLtrVS08CNpINPEfxXxgJL1Q4= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +k8s.io/api v0.19.3 h1:GN6ntFnv44Vptj/b+OnMW7FmzkpDoIDLZRvKX3XH9aU= +k8s.io/api v0.19.3/go.mod h1:VF+5FT1B74Pw3KxMdKyinLo+zynBaMBiAfGMuldcNDs= +k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/apimachinery v0.19.3 h1:bpIQXlKjB4cB/oNpnNnV+BybGPR7iP5oYpsOTEJ4hgc= +k8s.io/apimachinery v0.19.3/go.mod h1:DnPGDnARWFvYa3pMHgSxtbZb7gpzzAZ1pTfaUNDVlmA= +k8s.io/apiserver v0.17.0/go.mod h1:ABM+9x/prjINN6iiffRVNCBR2Wk7uY4z+EtEGZD48cg= +k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= +k8s.io/client-go v0.19.3 h1:ctqR1nQ52NUs6LpI0w+a5U+xjYwflFwA13OJKcicMxg= +k8s.io/client-go v0.19.3/go.mod h1:+eEMktZM+MG0KO+PTkci8xnbCZHvj9TqR6Q1XDUIJOM= +k8s.io/cloud-provider v0.17.0/go.mod h1:Ze4c3w2C0bRsjkBUoHpFi+qWe3ob1wI2/7cUn+YQIDE= +k8s.io/code-generator v0.0.0-20191121015212-c4c8f8345c7e/go.mod h1:DVmfPQgxQENqDIzVR2ddLXMH34qeszkKSdH/N+s+38s= +k8s.io/component-base v0.17.0/go.mod h1:rKuRAokNMY2nn2A6LP/MiwpoaMRHpfRnrPaUJJj1Yoc= +k8s.io/csi-translation-lib v0.17.0/go.mod h1:HEF7MEz7pOLJCnxabi45IPkhSsE/KmxPQksuCrHKWls= +k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= +k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= +k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= +k8s.io/klog/v2 v2.2.0 h1:XRvcwJozkgZ1UQJmfMGpvRthQHOvihEhYtDfAaxMz/A= +k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= +k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= +k8s.io/legacy-cloud-providers v0.17.0/go.mod h1:DdzaepJ3RtRy+e5YhNtrCYwlgyK87j/5+Yfp0L9Syp8= +k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73 h1:uJmqzgNWG7XyClnU/mLPBWwfKKF1K8Hf8whTseBgJcg= +k8s.io/utils v0.0.0-20200729134348-d5654de09c73/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +modernc.org/cc v1.0.0/go.mod h1:1Sk4//wdnYJiUIxnW8ddKpaOJCF37yAdqYnkxUpaYxw= +modernc.org/golex v1.0.0/go.mod h1:b/QX9oBD/LhixY6NDh+IdGv17hgB+51fET1i2kPSmvk= +modernc.org/mathutil v1.0.0/go.mod h1:wU0vUrJsVWBZ4P6e7xtFJEhFSNsfRLJ8H458uRjg03k= +modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs= +modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06 h1:zD2IemQ4LmOcAumeiyDWXKUI2SO0NYDe3H6QGvPOVgU= +sigs.k8s.io/structured-merge-diff v1.0.1-0.20191108220359-b1b620dd3f06/go.mod h1:/ULNhyfzRopfcjskuui0cTITekDduZ7ycKN3oUT9R18= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1 h1:YXTMot5Qz/X1iBRJhAt+vI+HVttY0WkSqqhKxQ0xVbA= +sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= diff --git a/examples/ex4-multiple-clusters/test/plan_config.json b/examples/ex4-multiple-clusters/test/plan_config.json new file mode 100644 index 0000000..8ec085b --- /dev/null +++ b/examples/ex4-multiple-clusters/test/plan_config.json @@ -0,0 +1,5630 @@ +{ + "format_version": "0.1", + "terraform_version": "0.13.5", + "variables": { + "cluster_names": { + "value": [ + "alpha", + "beta", + "gamma" + ] + }, + "region": { + "value": "us-east-1" + } + }, + "planned_values": { + "outputs": { + "cluster_names": { + "sensitive": false, + "value": [ + "alpha", + "beta", + "gamma" + ] + }, + "cluster_nodes": { + "sensitive": false + }, + "kubeconfigs": { + "sensitive": false, + "value": { + "alpha": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/alpha.conf", + "beta": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/beta.conf", + "gamma": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/gamma.conf" + } + } + }, + "root_module": { + "child_modules": [ + { + "resources": [ + { + "address": "module.cluster_1.aws_eip.master", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "associate_with_private_ip": null, + "customer_owned_ipv4_pool": null, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null, + "vpc": true + } + }, + { + "address": "module.cluster_1.aws_eip_association.master", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "allow_reassociation": null + } + }, + { + "address": "module.cluster_1.aws_instance.master", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.medium", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "alpha-master", + "terraform-kubeadm:cluster": "alpha", + "terraform-kubeadm:node": "master" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_1.aws_instance.workers[0]", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 0, + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "alpha-worker-0", + "terraform-kubeadm:cluster": "alpha", + "terraform-kubeadm:node": "worker-0" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_1.aws_instance.workers[1]", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 1, + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "alpha-worker-1", + "terraform-kubeadm:cluster": "alpha", + "terraform-kubeadm:node": "worker-1" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_1.aws_key_pair.main", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "key_name_prefix": "alpha-", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBdDLn5dn58+TXuOYyQUFEoM182DwbRi5mgygYeXuHL+xGEjb2QUdYmyE3Wa6lagw/m+TY5FLrvwiVGQLH4m70vQfxg6G/ghX1QH0s69+1g/zuEJOwJpSo4WIoUT3aD5k2vBQWZTFCefP2M2mstWNE2tmU4oE2Tc3hfoJWGpJ1NO5n+/MavApRuAI3UY6blagKKHKPcLehOcCgVLpd+iJAJS3DeT8VV2jXGGP4VVmZrsTWycd07ujfX0x6PuppZDEybhakuAR6P+t4GHkEUkbK8DsHRzXT9CQ5ebkppTHOAmwqTReZ2jgazp7czi7flmCEep5cAaJS6d/1OQjyQxCb sonarqube@sonarqube.fios-router.home", + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + } + } + }, + { + "address": "module.cluster_1.aws_security_group.egress", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow all outgoing traffic to everywhere", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "alpha-egress", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_1.aws_security_group.ingress_internal", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow all incoming traffic from nodes and Pods in the cluster", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow incoming traffic from cluster nodes", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": true, + "to_port": 0 + }, + { + "cidr_blocks": [], + "description": "Allow incoming traffic from the Pods of the cluster", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "alpha-ingress-internal", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_1.aws_security_group.ingress_k8s", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 6443, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 6443 + } + ], + "name": "alpha-ingress-k8s", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_1.aws_security_group.ingress_ssh", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow incoming SSH traffic (TCP/22) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "alpha-ingress-ssh", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_1.null_resource.download_kubeconfig_file", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0 + }, + { + "address": "module.cluster_1.null_resource.wait_for_bootstrap_to_finish", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0 + }, + { + "address": "module.cluster_1.random_pet.cluster_name", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 0, + "values": { + "keepers": null, + "length": 2, + "prefix": null, + "separator": "-" + } + }, + { + "address": "module.cluster_1.random_string.token_id", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 1, + "values": { + "keepers": null, + "length": 6, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + } + }, + { + "address": "module.cluster_1.random_string.token_secret", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 1, + "values": { + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + } + } + ], + "address": "module.cluster_1" + }, + { + "resources": [ + { + "address": "module.cluster_2.aws_eip.master", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "associate_with_private_ip": null, + "customer_owned_ipv4_pool": null, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null, + "vpc": true + } + }, + { + "address": "module.cluster_2.aws_eip_association.master", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "allow_reassociation": null + } + }, + { + "address": "module.cluster_2.aws_instance.master", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.medium", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "beta-master", + "terraform-kubeadm:cluster": "beta", + "terraform-kubeadm:node": "master" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_2.aws_instance.workers[0]", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 0, + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "beta-worker-0", + "terraform-kubeadm:cluster": "beta", + "terraform-kubeadm:node": "worker-0" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_2.aws_instance.workers[1]", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 1, + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "beta-worker-1", + "terraform-kubeadm:cluster": "beta", + "terraform-kubeadm:node": "worker-1" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_2.aws_key_pair.main", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "key_name_prefix": "beta-", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBdDLn5dn58+TXuOYyQUFEoM182DwbRi5mgygYeXuHL+xGEjb2QUdYmyE3Wa6lagw/m+TY5FLrvwiVGQLH4m70vQfxg6G/ghX1QH0s69+1g/zuEJOwJpSo4WIoUT3aD5k2vBQWZTFCefP2M2mstWNE2tmU4oE2Tc3hfoJWGpJ1NO5n+/MavApRuAI3UY6blagKKHKPcLehOcCgVLpd+iJAJS3DeT8VV2jXGGP4VVmZrsTWycd07ujfX0x6PuppZDEybhakuAR6P+t4GHkEUkbK8DsHRzXT9CQ5ebkppTHOAmwqTReZ2jgazp7czi7flmCEep5cAaJS6d/1OQjyQxCb sonarqube@sonarqube.fios-router.home", + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + } + } + }, + { + "address": "module.cluster_2.aws_security_group.egress", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow all outgoing traffic to everywhere", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "beta-egress", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_2.aws_security_group.ingress_internal", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow all incoming traffic from nodes and Pods in the cluster", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow incoming traffic from cluster nodes", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": true, + "to_port": 0 + }, + { + "cidr_blocks": [], + "description": "Allow incoming traffic from the Pods of the cluster", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "beta-ingress-internal", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_2.aws_security_group.ingress_k8s", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 6443, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 6443 + } + ], + "name": "beta-ingress-k8s", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_2.aws_security_group.ingress_ssh", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow incoming SSH traffic (TCP/22) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "beta-ingress-ssh", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_2.null_resource.download_kubeconfig_file", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0 + }, + { + "address": "module.cluster_2.null_resource.wait_for_bootstrap_to_finish", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0 + }, + { + "address": "module.cluster_2.random_pet.cluster_name", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 0, + "values": { + "keepers": null, + "length": 2, + "prefix": null, + "separator": "-" + } + }, + { + "address": "module.cluster_2.random_string.token_id", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 1, + "values": { + "keepers": null, + "length": 6, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + } + }, + { + "address": "module.cluster_2.random_string.token_secret", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 1, + "values": { + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + } + } + ], + "address": "module.cluster_2" + }, + { + "resources": [ + { + "address": "module.cluster_3.aws_eip.master", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "associate_with_private_ip": null, + "customer_owned_ipv4_pool": null, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null, + "vpc": true + } + }, + { + "address": "module.cluster_3.aws_eip_association.master", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "allow_reassociation": null + } + }, + { + "address": "module.cluster_3.aws_instance.master", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.medium", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "gamma-master", + "terraform-kubeadm:cluster": "gamma", + "terraform-kubeadm:node": "master" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_3.aws_instance.workers[0]", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 0, + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "gamma-worker-0", + "terraform-kubeadm:cluster": "gamma", + "terraform-kubeadm:node": "worker-0" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_3.aws_instance.workers[1]", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 1, + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "gamma-worker-1", + "terraform-kubeadm:cluster": "gamma", + "terraform-kubeadm:node": "worker-1" + }, + "timeouts": null, + "user_data_base64": null + } + }, + { + "address": "module.cluster_3.aws_key_pair.main", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "key_name_prefix": "gamma-", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBdDLn5dn58+TXuOYyQUFEoM182DwbRi5mgygYeXuHL+xGEjb2QUdYmyE3Wa6lagw/m+TY5FLrvwiVGQLH4m70vQfxg6G/ghX1QH0s69+1g/zuEJOwJpSo4WIoUT3aD5k2vBQWZTFCefP2M2mstWNE2tmU4oE2Tc3hfoJWGpJ1NO5n+/MavApRuAI3UY6blagKKHKPcLehOcCgVLpd+iJAJS3DeT8VV2jXGGP4VVmZrsTWycd07ujfX0x6PuppZDEybhakuAR6P+t4GHkEUkbK8DsHRzXT9CQ5ebkppTHOAmwqTReZ2jgazp7czi7flmCEep5cAaJS6d/1OQjyQxCb sonarqube@sonarqube.fios-router.home", + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + } + } + }, + { + "address": "module.cluster_3.aws_security_group.egress", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow all outgoing traffic to everywhere", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "gamma-egress", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_3.aws_security_group.ingress_internal", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow all incoming traffic from nodes and Pods in the cluster", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow incoming traffic from cluster nodes", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": true, + "to_port": 0 + }, + { + "cidr_blocks": [], + "description": "Allow incoming traffic from the Pods of the cluster", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "gamma-ingress-internal", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_3.aws_security_group.ingress_k8s", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 6443, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 6443 + } + ], + "name": "gamma-ingress-k8s", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_3.aws_security_group.ingress_ssh", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "description": "Allow incoming SSH traffic (TCP/22) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "gamma-ingress-ssh", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + } + }, + { + "address": "module.cluster_3.null_resource.download_kubeconfig_file", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0 + }, + { + "address": "module.cluster_3.null_resource.wait_for_bootstrap_to_finish", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_name": "registry.terraform.io/hashicorp/null", + "schema_version": 0 + }, + { + "address": "module.cluster_3.random_pet.cluster_name", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 0, + "values": { + "keepers": null, + "length": 2, + "prefix": null, + "separator": "-" + } + }, + { + "address": "module.cluster_3.random_string.token_id", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 1, + "values": { + "keepers": null, + "length": 6, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + } + }, + { + "address": "module.cluster_3.random_string.token_secret", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 1, + "values": { + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + } + } + ], + "address": "module.cluster_3" + }, + { + "resources": [ + { + "address": "module.network.aws_internet_gateway.main", + "mode": "managed", + "type": "aws_internet_gateway", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + } + } + }, + { + "address": "module.network.aws_route_table.main", + "mode": "managed", + "type": "aws_route_table", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "route": [ + { + "cidr_block": "0.0.0.0/0", + "egress_only_gateway_id": "", + "instance_id": "", + "ipv6_cidr_block": "", + "local_gateway_id": "", + "nat_gateway_id": "", + "network_interface_id": "", + "transit_gateway_id": "", + "vpc_peering_connection_id": "" + } + ], + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + } + } + }, + { + "address": "module.network.aws_route_table_association.main", + "mode": "managed", + "type": "aws_route_table_association", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "gateway_id": null + } + }, + { + "address": "module.network.aws_subnet.main", + "mode": "managed", + "type": "aws_subnet", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "assign_ipv6_address_on_creation": false, + "cidr_block": "172.31.0.0/16", + "ipv6_cidr_block": null, + "map_public_ip_on_launch": false, + "outpost_arn": null, + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + }, + "timeouts": null + } + }, + { + "address": "module.network.aws_vpc.main", + "mode": "managed", + "type": "aws_vpc", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 1, + "values": { + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "172.31.0.0/16", + "enable_dns_support": true, + "instance_tenancy": "default", + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + } + } + } + ], + "address": "module.network" + } + ] + } + }, + "resource_changes": [ + { + "address": "module.cluster_1.aws_eip.master", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "associate_with_private_ip": null, + "customer_owned_ipv4_pool": null, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null, + "vpc": true + }, + "after_unknown": { + "allocation_id": true, + "association_id": true, + "customer_owned_ip": true, + "domain": true, + "id": true, + "instance": true, + "network_border_group": true, + "network_interface": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "public_ipv4_pool": true, + "tags": {} + } + } + }, + { + "address": "module.cluster_1.aws_eip_association.master", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "allow_reassociation": null + }, + "after_unknown": { + "allocation_id": true, + "id": true, + "instance_id": true, + "network_interface_id": true, + "private_ip_address": true, + "public_ip": true + } + } + }, + { + "address": "module.cluster_1.aws_instance.master", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.medium", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "alpha-master", + "terraform-kubeadm:cluster": "alpha", + "terraform-kubeadm:node": "master" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "associate_public_ip_address": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_1.aws_instance.workers[0]", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 0, + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "alpha-worker-0", + "terraform-kubeadm:cluster": "alpha", + "terraform-kubeadm:node": "worker-0" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_1.aws_instance.workers[1]", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 1, + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "alpha-worker-1", + "terraform-kubeadm:cluster": "alpha", + "terraform-kubeadm:node": "worker-1" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_1.aws_key_pair.main", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "key_name_prefix": "alpha-", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBdDLn5dn58+TXuOYyQUFEoM182DwbRi5mgygYeXuHL+xGEjb2QUdYmyE3Wa6lagw/m+TY5FLrvwiVGQLH4m70vQfxg6G/ghX1QH0s69+1g/zuEJOwJpSo4WIoUT3aD5k2vBQWZTFCefP2M2mstWNE2tmU4oE2Tc3hfoJWGpJ1NO5n+/MavApRuAI3UY6blagKKHKPcLehOcCgVLpd+iJAJS3DeT8VV2jXGGP4VVmZrsTWycd07ujfX0x6PuppZDEybhakuAR6P+t4GHkEUkbK8DsHRzXT9CQ5ebkppTHOAmwqTReZ2jgazp7czi7flmCEep5cAaJS6d/1OQjyQxCb sonarqube@sonarqube.fios-router.home", + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + } + }, + "after_unknown": { + "arn": true, + "fingerprint": true, + "id": true, + "key_name": true, + "key_pair_id": true, + "tags": {} + } + } + }, + { + "address": "module.cluster_1.aws_security_group.egress", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow all outgoing traffic to everywhere", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "alpha-egress", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "id": true, + "ingress": true, + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_1.aws_security_group.ingress_internal", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow all incoming traffic from nodes and Pods in the cluster", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow incoming traffic from cluster nodes", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": true, + "to_port": 0 + }, + { + "cidr_blocks": [], + "description": "Allow incoming traffic from the Pods of the cluster", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "alpha-ingress-internal", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + }, + { + "cidr_blocks": [], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_1.aws_security_group.ingress_k8s", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 6443, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 6443 + } + ], + "name": "alpha-ingress-k8s", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_1.aws_security_group.ingress_ssh", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow incoming SSH traffic (TCP/22) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "alpha-ingress-ssh", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "alpha", + "terraform-kubeadm:cluster": "alpha" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_1.null_resource.download_kubeconfig_file", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": {}, + "after_unknown": { + "id": true, + "triggers": true + } + } + }, + { + "address": "module.cluster_1.null_resource.wait_for_bootstrap_to_finish", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": {}, + "after_unknown": { + "id": true, + "triggers": true + } + } + }, + { + "address": "module.cluster_1.random_pet.cluster_name", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 2, + "prefix": null, + "separator": "-" + }, + "after_unknown": { + "id": true + } + } + }, + { + "address": "module.cluster_1.random_string.token_id", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 6, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + }, + "after_unknown": { + "id": true, + "result": true + } + } + }, + { + "address": "module.cluster_1.random_string.token_secret", + "module_address": "module.cluster_1", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + }, + "after_unknown": { + "id": true, + "result": true + } + } + }, + { + "address": "module.cluster_2.aws_eip.master", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "associate_with_private_ip": null, + "customer_owned_ipv4_pool": null, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null, + "vpc": true + }, + "after_unknown": { + "allocation_id": true, + "association_id": true, + "customer_owned_ip": true, + "domain": true, + "id": true, + "instance": true, + "network_border_group": true, + "network_interface": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "public_ipv4_pool": true, + "tags": {} + } + } + }, + { + "address": "module.cluster_2.aws_eip_association.master", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "allow_reassociation": null + }, + "after_unknown": { + "allocation_id": true, + "id": true, + "instance_id": true, + "network_interface_id": true, + "private_ip_address": true, + "public_ip": true + } + } + }, + { + "address": "module.cluster_2.aws_instance.master", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.medium", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "beta-master", + "terraform-kubeadm:cluster": "beta", + "terraform-kubeadm:node": "master" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "associate_public_ip_address": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_2.aws_instance.workers[0]", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 0, + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "beta-worker-0", + "terraform-kubeadm:cluster": "beta", + "terraform-kubeadm:node": "worker-0" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_2.aws_instance.workers[1]", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 1, + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "beta-worker-1", + "terraform-kubeadm:cluster": "beta", + "terraform-kubeadm:node": "worker-1" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_2.aws_key_pair.main", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "key_name_prefix": "beta-", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBdDLn5dn58+TXuOYyQUFEoM182DwbRi5mgygYeXuHL+xGEjb2QUdYmyE3Wa6lagw/m+TY5FLrvwiVGQLH4m70vQfxg6G/ghX1QH0s69+1g/zuEJOwJpSo4WIoUT3aD5k2vBQWZTFCefP2M2mstWNE2tmU4oE2Tc3hfoJWGpJ1NO5n+/MavApRuAI3UY6blagKKHKPcLehOcCgVLpd+iJAJS3DeT8VV2jXGGP4VVmZrsTWycd07ujfX0x6PuppZDEybhakuAR6P+t4GHkEUkbK8DsHRzXT9CQ5ebkppTHOAmwqTReZ2jgazp7czi7flmCEep5cAaJS6d/1OQjyQxCb sonarqube@sonarqube.fios-router.home", + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + } + }, + "after_unknown": { + "arn": true, + "fingerprint": true, + "id": true, + "key_name": true, + "key_pair_id": true, + "tags": {} + } + } + }, + { + "address": "module.cluster_2.aws_security_group.egress", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow all outgoing traffic to everywhere", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "beta-egress", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "id": true, + "ingress": true, + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_2.aws_security_group.ingress_internal", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow all incoming traffic from nodes and Pods in the cluster", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow incoming traffic from cluster nodes", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": true, + "to_port": 0 + }, + { + "cidr_blocks": [], + "description": "Allow incoming traffic from the Pods of the cluster", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "beta-ingress-internal", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + }, + { + "cidr_blocks": [], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_2.aws_security_group.ingress_k8s", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 6443, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 6443 + } + ], + "name": "beta-ingress-k8s", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_2.aws_security_group.ingress_ssh", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow incoming SSH traffic (TCP/22) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "beta-ingress-ssh", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "beta", + "terraform-kubeadm:cluster": "beta" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_2.null_resource.download_kubeconfig_file", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": {}, + "after_unknown": { + "id": true, + "triggers": true + } + } + }, + { + "address": "module.cluster_2.null_resource.wait_for_bootstrap_to_finish", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": {}, + "after_unknown": { + "id": true, + "triggers": true + } + } + }, + { + "address": "module.cluster_2.random_pet.cluster_name", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 2, + "prefix": null, + "separator": "-" + }, + "after_unknown": { + "id": true + } + } + }, + { + "address": "module.cluster_2.random_string.token_id", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 6, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + }, + "after_unknown": { + "id": true, + "result": true + } + } + }, + { + "address": "module.cluster_2.random_string.token_secret", + "module_address": "module.cluster_2", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + }, + "after_unknown": { + "id": true, + "result": true + } + } + }, + { + "address": "module.cluster_3.aws_eip.master", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "associate_with_private_ip": null, + "customer_owned_ipv4_pool": null, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null, + "vpc": true + }, + "after_unknown": { + "allocation_id": true, + "association_id": true, + "customer_owned_ip": true, + "domain": true, + "id": true, + "instance": true, + "network_border_group": true, + "network_interface": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "public_ipv4_pool": true, + "tags": {} + } + } + }, + { + "address": "module.cluster_3.aws_eip_association.master", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "allow_reassociation": null + }, + "after_unknown": { + "allocation_id": true, + "id": true, + "instance_id": true, + "network_interface_id": true, + "private_ip_address": true, + "public_ip": true + } + } + }, + { + "address": "module.cluster_3.aws_instance.master", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.medium", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "gamma-master", + "terraform-kubeadm:cluster": "gamma", + "terraform-kubeadm:node": "master" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "associate_public_ip_address": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_3.aws_instance.workers[0]", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 0, + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "gamma-worker-0", + "terraform-kubeadm:cluster": "gamma", + "terraform-kubeadm:node": "worker-0" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_3.aws_instance.workers[1]", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "index": 1, + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "ami": "ami-08b277333b9511393", + "associate_public_ip_address": true, + "credit_specification": [], + "disable_api_termination": null, + "ebs_optimized": null, + "get_password_data": false, + "hibernation": null, + "iam_instance_profile": null, + "instance_initiated_shutdown_behavior": null, + "instance_type": "t2.small", + "monitoring": null, + "source_dest_check": true, + "tags": { + "Environment": "development", + "Name": "gamma-worker-1", + "terraform-kubeadm:cluster": "gamma", + "terraform-kubeadm:node": "worker-1" + }, + "timeouts": null, + "user_data_base64": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "cpu_core_count": true, + "cpu_threads_per_core": true, + "credit_specification": [], + "ebs_block_device": true, + "ephemeral_block_device": true, + "host_id": true, + "id": true, + "instance_state": true, + "ipv6_address_count": true, + "ipv6_addresses": true, + "key_name": true, + "metadata_options": true, + "network_interface": true, + "outpost_arn": true, + "password_data": true, + "placement_group": true, + "primary_network_interface_id": true, + "private_dns": true, + "private_ip": true, + "public_dns": true, + "public_ip": true, + "root_block_device": true, + "secondary_private_ips": true, + "security_groups": true, + "subnet_id": true, + "tags": {}, + "tenancy": true, + "user_data": true, + "volume_tags": true, + "vpc_security_group_ids": true + } + } + }, + { + "address": "module.cluster_3.aws_key_pair.main", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "key_name_prefix": "gamma-", + "public_key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBdDLn5dn58+TXuOYyQUFEoM182DwbRi5mgygYeXuHL+xGEjb2QUdYmyE3Wa6lagw/m+TY5FLrvwiVGQLH4m70vQfxg6G/ghX1QH0s69+1g/zuEJOwJpSo4WIoUT3aD5k2vBQWZTFCefP2M2mstWNE2tmU4oE2Tc3hfoJWGpJ1NO5n+/MavApRuAI3UY6blagKKHKPcLehOcCgVLpd+iJAJS3DeT8VV2jXGGP4VVmZrsTWycd07ujfX0x6PuppZDEybhakuAR6P+t4GHkEUkbK8DsHRzXT9CQ5ebkppTHOAmwqTReZ2jgazp7czi7flmCEep5cAaJS6d/1OQjyQxCb sonarqube@sonarqube.fios-router.home", + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + } + }, + "after_unknown": { + "arn": true, + "fingerprint": true, + "id": true, + "key_name": true, + "key_pair_id": true, + "tags": {} + } + } + }, + { + "address": "module.cluster_3.aws_security_group.egress", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow all outgoing traffic to everywhere", + "egress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "gamma-egress", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "id": true, + "ingress": true, + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_3.aws_security_group.ingress_internal", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow all incoming traffic from nodes and Pods in the cluster", + "ingress": [ + { + "cidr_blocks": [], + "description": "Allow incoming traffic from cluster nodes", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": true, + "to_port": 0 + }, + { + "cidr_blocks": [], + "description": "Allow incoming traffic from the Pods of the cluster", + "from_port": 0, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "-1", + "security_groups": [], + "self": false, + "to_port": 0 + } + ], + "name": "gamma-ingress-internal", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + }, + { + "cidr_blocks": [], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_3.aws_security_group.ingress_k8s", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 6443, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 6443 + } + ], + "name": "gamma-ingress-k8s", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_3.aws_security_group.ingress_ssh", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": "Allow incoming SSH traffic (TCP/22) from outside the cluster", + "ingress": [ + { + "cidr_blocks": [ + "0.0.0.0/0" + ], + "description": "", + "from_port": 22, + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "protocol": "tcp", + "security_groups": [], + "self": false, + "to_port": 22 + } + ], + "name": "gamma-ingress-ssh", + "name_prefix": null, + "revoke_rules_on_delete": false, + "tags": { + "Environment": "development", + "Name": "gamma", + "terraform-kubeadm:cluster": "gamma" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "egress": true, + "id": true, + "ingress": [ + { + "cidr_blocks": [ + false + ], + "ipv6_cidr_blocks": [], + "prefix_list_ids": [], + "security_groups": [] + } + ], + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.cluster_3.null_resource.download_kubeconfig_file", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": {}, + "after_unknown": { + "id": true, + "triggers": true + } + } + }, + { + "address": "module.cluster_3.null_resource.wait_for_bootstrap_to_finish", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_name": "registry.terraform.io/hashicorp/null", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": {}, + "after_unknown": { + "id": true, + "triggers": true + } + } + }, + { + "address": "module.cluster_3.random_pet.cluster_name", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 2, + "prefix": null, + "separator": "-" + }, + "after_unknown": { + "id": true + } + } + }, + { + "address": "module.cluster_3.random_string.token_id", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 6, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + }, + "after_unknown": { + "id": true, + "result": true + } + } + }, + { + "address": "module.cluster_3.random_string.token_secret", + "module_address": "module.cluster_3", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "keepers": null, + "length": 16, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "override_special": null, + "special": false, + "upper": false + }, + "after_unknown": { + "id": true, + "result": true + } + } + }, + { + "address": "module.network.aws_internet_gateway.main", + "module_address": "module.network", + "mode": "managed", + "type": "aws_internet_gateway", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + } + }, + "after_unknown": { + "arn": true, + "id": true, + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.network.aws_route_table.main", + "module_address": "module.network", + "mode": "managed", + "type": "aws_route_table", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "route": [ + { + "cidr_block": "0.0.0.0/0", + "egress_only_gateway_id": "", + "instance_id": "", + "ipv6_cidr_block": "", + "local_gateway_id": "", + "nat_gateway_id": "", + "network_interface_id": "", + "transit_gateway_id": "", + "vpc_peering_connection_id": "" + } + ], + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + } + }, + "after_unknown": { + "id": true, + "owner_id": true, + "propagating_vgws": true, + "route": [ + { + "gateway_id": true + } + ], + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.network.aws_route_table_association.main", + "module_address": "module.network", + "mode": "managed", + "type": "aws_route_table_association", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "gateway_id": null + }, + "after_unknown": { + "id": true, + "route_table_id": true, + "subnet_id": true + } + } + }, + { + "address": "module.network.aws_subnet.main", + "module_address": "module.network", + "mode": "managed", + "type": "aws_subnet", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "assign_ipv6_address_on_creation": false, + "cidr_block": "172.31.0.0/16", + "ipv6_cidr_block": null, + "map_public_ip_on_launch": false, + "outpost_arn": null, + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + }, + "timeouts": null + }, + "after_unknown": { + "arn": true, + "availability_zone": true, + "availability_zone_id": true, + "id": true, + "ipv6_cidr_block_association_id": true, + "owner_id": true, + "tags": {}, + "vpc_id": true + } + } + }, + { + "address": "module.network.aws_vpc.main", + "module_address": "module.network", + "mode": "managed", + "type": "aws_vpc", + "name": "main", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "assign_generated_ipv6_cidr_block": false, + "cidr_block": "172.31.0.0/16", + "enable_dns_support": true, + "instance_tenancy": "default", + "tags": { + "Environment": "development", + "Name": "terraform-kubeadm" + } + }, + "after_unknown": { + "arn": true, + "default_network_acl_id": true, + "default_route_table_id": true, + "default_security_group_id": true, + "dhcp_options_id": true, + "enable_classiclink": true, + "enable_classiclink_dns_support": true, + "enable_dns_hostnames": true, + "id": true, + "ipv6_association_id": true, + "ipv6_cidr_block": true, + "main_route_table_id": true, + "owner_id": true, + "tags": {} + } + } + } + ], + "output_changes": { + "cluster_names": { + "actions": [ + "create" + ], + "before": null, + "after": [ + "alpha", + "beta", + "gamma" + ], + "after_unknown": false + }, + "cluster_nodes": { + "actions": [ + "create" + ], + "before": null, + "after_unknown": true + }, + "kubeconfigs": { + "actions": [ + "create" + ], + "before": null, + "after": { + "alpha": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/alpha.conf", + "beta": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/beta.conf", + "gamma": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/gamma.conf" + }, + "after_unknown": false + } + }, + "prior_state": { + "format_version": "0.1", + "terraform_version": "0.13.5", + "values": { + "outputs": { + "cluster_names": { + "sensitive": false, + "value": [ + "alpha", + "beta", + "gamma" + ] + }, + "cluster_nodes": { + "sensitive": false, + "value": { + "alpha": null, + "beta": null, + "gamma": null + } + }, + "kubeconfigs": { + "sensitive": false, + "value": { + "alpha": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/alpha.conf", + "beta": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/beta.conf", + "gamma": "/Users/sonarqube/IdeaProjects/terraform-aws-kubeadm/examples/ex4-multiple-clusters/gamma.conf" + } + } + }, + "root_module": { + "child_modules": [ + { + "resources": [ + { + "address": "module.cluster_1.data.aws_ami.ubuntu", + "mode": "data", + "type": "aws_ami", + "name": "ubuntu", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "architecture": "x86_64", + "arn": "arn:aws:ec2:us-east-1::image/ami-08b277333b9511393", + "block_device_mappings": [ + { + "device_name": "/dev/sda1", + "ebs": { + "delete_on_termination": "true", + "encrypted": "false", + "iops": "0", + "snapshot_id": "snap-05d81a0697bbf5775", + "volume_size": "8", + "volume_type": "gp2" + }, + "no_device": "", + "virtual_name": "" + }, + { + "device_name": "/dev/sdb", + "ebs": {}, + "no_device": "", + "virtual_name": "ephemeral0" + }, + { + "device_name": "/dev/sdc", + "ebs": {}, + "no_device": "", + "virtual_name": "ephemeral1" + } + ], + "creation_date": "2020-11-12T19:59:35.000Z", + "description": "Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2020-11-12", + "executable_users": null, + "filter": [ + { + "name": "name", + "values": [ + "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" + ] + } + ], + "hypervisor": "xen", + "id": "ami-08b277333b9511393", + "image_id": "ami-08b277333b9511393", + "image_location": "099720109477/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20201112", + "image_owner_alias": null, + "image_type": "machine", + "kernel_id": null, + "most_recent": true, + "name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20201112", + "name_regex": null, + "owner_id": "099720109477", + "owners": [ + "099720109477" + ], + "platform": null, + "product_codes": [], + "public": true, + "ramdisk_id": null, + "root_device_name": "/dev/sda1", + "root_device_type": "ebs", + "root_snapshot_id": "snap-05d81a0697bbf5775", + "sriov_net_support": "simple", + "state": "available", + "state_reason": { + "code": "UNSET", + "message": "UNSET" + }, + "tags": {}, + "virtualization_type": "hvm" + } + } + ], + "address": "module.cluster_1" + }, + { + "resources": [ + { + "address": "module.cluster_2.data.aws_ami.ubuntu", + "mode": "data", + "type": "aws_ami", + "name": "ubuntu", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "architecture": "x86_64", + "arn": "arn:aws:ec2:us-east-1::image/ami-08b277333b9511393", + "block_device_mappings": [ + { + "device_name": "/dev/sda1", + "ebs": { + "delete_on_termination": "true", + "encrypted": "false", + "iops": "0", + "snapshot_id": "snap-05d81a0697bbf5775", + "volume_size": "8", + "volume_type": "gp2" + }, + "no_device": "", + "virtual_name": "" + }, + { + "device_name": "/dev/sdb", + "ebs": {}, + "no_device": "", + "virtual_name": "ephemeral0" + }, + { + "device_name": "/dev/sdc", + "ebs": {}, + "no_device": "", + "virtual_name": "ephemeral1" + } + ], + "creation_date": "2020-11-12T19:59:35.000Z", + "description": "Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2020-11-12", + "executable_users": null, + "filter": [ + { + "name": "name", + "values": [ + "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" + ] + } + ], + "hypervisor": "xen", + "id": "ami-08b277333b9511393", + "image_id": "ami-08b277333b9511393", + "image_location": "099720109477/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20201112", + "image_owner_alias": null, + "image_type": "machine", + "kernel_id": null, + "most_recent": true, + "name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20201112", + "name_regex": null, + "owner_id": "099720109477", + "owners": [ + "099720109477" + ], + "platform": null, + "product_codes": [], + "public": true, + "ramdisk_id": null, + "root_device_name": "/dev/sda1", + "root_device_type": "ebs", + "root_snapshot_id": "snap-05d81a0697bbf5775", + "sriov_net_support": "simple", + "state": "available", + "state_reason": { + "code": "UNSET", + "message": "UNSET" + }, + "tags": {}, + "virtualization_type": "hvm" + } + } + ], + "address": "module.cluster_2" + }, + { + "resources": [ + { + "address": "module.cluster_3.data.aws_ami.ubuntu", + "mode": "data", + "type": "aws_ami", + "name": "ubuntu", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "architecture": "x86_64", + "arn": "arn:aws:ec2:us-east-1::image/ami-08b277333b9511393", + "block_device_mappings": [ + { + "device_name": "/dev/sda1", + "ebs": { + "delete_on_termination": "true", + "encrypted": "false", + "iops": "0", + "snapshot_id": "snap-05d81a0697bbf5775", + "volume_size": "8", + "volume_type": "gp2" + }, + "no_device": "", + "virtual_name": "" + }, + { + "device_name": "/dev/sdb", + "ebs": {}, + "no_device": "", + "virtual_name": "ephemeral0" + }, + { + "device_name": "/dev/sdc", + "ebs": {}, + "no_device": "", + "virtual_name": "ephemeral1" + } + ], + "creation_date": "2020-11-12T19:59:35.000Z", + "description": "Canonical, Ubuntu, 18.04 LTS, amd64 bionic image build on 2020-11-12", + "executable_users": null, + "filter": [ + { + "name": "name", + "values": [ + "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" + ] + } + ], + "hypervisor": "xen", + "id": "ami-08b277333b9511393", + "image_id": "ami-08b277333b9511393", + "image_location": "099720109477/ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20201112", + "image_owner_alias": null, + "image_type": "machine", + "kernel_id": null, + "most_recent": true, + "name": "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20201112", + "name_regex": null, + "owner_id": "099720109477", + "owners": [ + "099720109477" + ], + "platform": null, + "product_codes": [], + "public": true, + "ramdisk_id": null, + "root_device_name": "/dev/sda1", + "root_device_type": "ebs", + "root_snapshot_id": "snap-05d81a0697bbf5775", + "sriov_net_support": "simple", + "state": "available", + "state_reason": { + "code": "UNSET", + "message": "UNSET" + }, + "tags": {}, + "virtualization_type": "hvm" + } + } + ], + "address": "module.cluster_3" + } + ] + } + } + }, + "configuration": { + "provider_config": { + "aws": { + "name": "aws", + "expressions": { + "region": { + "references": [ + "var.region" + ] + } + } + } + }, + "root_module": { + "outputs": { + "cluster_names": { + "expression": { + "references": [ + "module.cluster_1", + "module.cluster_2", + "module.cluster_3" + ] + }, + "description": "Names of the created clusters." + }, + "cluster_nodes": { + "expression": { + "references": [ + "module.cluster_1", + "module.cluster_2", + "module.cluster_3" + ] + }, + "description": "Details about the nodes of the created clusters." + }, + "kubeconfigs": { + "expression": { + "references": [ + "module.cluster_1", + "module.cluster_2", + "module.cluster_3" + ] + }, + "description": "Locations of the kubeconfig files of the created clusters." + } + }, + "module_calls": { + "cluster_1": { + "source": "../..", + "expressions": { + "cluster_name": { + "references": [ + "var.cluster_names" + ] + }, + "subnet_id": { + "references": [ + "module.network.subnet_id" + ] + }, + "tags": { + "references": [ + "local.additional_tags", + "var.cluster_names" + ] + }, + "vpc_id": { + "references": [ + "module.network.vpc_id" + ] + } + }, + "module": { + "outputs": { + "cluster_name": { + "expression": { + "references": [ + "local.cluster_name" + ] + }, + "description": "Name of the created cluster. This name is used as the value of the \"terraform-kubeadm:cluster\" tag assigned to all created AWS resources." + }, + "cluster_nodes": { + "expression": { + "references": [ + "aws_instance.master", + "aws_instance.workers", + "aws_eip.master" + ] + }, + "description": "Name, public and private IP address, and subnet ID of all nodes of the created cluster." + }, + "kubeconfig": { + "expression": { + "references": [ + "local.kubeconfig_file" + ] + }, + "description": "Location of the kubeconfig file for the created cluster on the local machine." + }, + "vpc_id": { + "expression": { + "references": [ + "aws_security_group.egress" + ] + }, + "description": "ID of the VPC in which the cluster has been created." + } + }, + "resources": [ + { + "address": "aws_eip.master", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_config_key": "cluster_1:aws", + "expressions": { + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc": { + "constant_value": true + } + }, + "schema_version": 0 + }, + { + "address": "aws_eip_association.master", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_config_key": "cluster_1:aws", + "expressions": { + "allocation_id": { + "references": [ + "aws_eip.master" + ] + }, + "instance_id": { + "references": [ + "aws_instance.master" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_instance.master", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_config_key": "cluster_1:aws", + "expressions": { + "ami": { + "references": [ + "data.aws_ami.ubuntu" + ] + }, + "instance_type": { + "references": [ + "var.master_instance_type" + ] + }, + "key_name": { + "references": [ + "aws_key_pair.main" + ] + }, + "subnet_id": { + "references": [ + "var.subnet_id" + ] + }, + "tags": { + "references": [ + "local.tags", + "local.cluster_name" + ] + }, + "user_data": { + "references": [ + "local.token", + "aws_eip.master", + "var.pod_network_cidr_block", + "var.pod_network_cidr_block", + "aws_eip.master" + ] + }, + "vpc_security_group_ids": { + "references": [ + "aws_security_group.egress", + "aws_security_group.ingress_internal", + "aws_security_group.ingress_k8s", + "aws_security_group.ingress_ssh" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_instance.workers", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "provider_config_key": "cluster_1:aws", + "expressions": { + "ami": { + "references": [ + "data.aws_ami.ubuntu" + ] + }, + "associate_public_ip_address": { + "constant_value": true + }, + "instance_type": { + "references": [ + "var.worker_instance_type" + ] + }, + "key_name": { + "references": [ + "aws_key_pair.main" + ] + }, + "subnet_id": { + "references": [ + "var.subnet_id" + ] + }, + "tags": { + "references": [ + "local.tags", + "count.index", + "local.cluster_name", + "count.index" + ] + }, + "user_data": { + "references": [ + "aws_instance.master", + "local.token", + "count.index" + ] + }, + "vpc_security_group_ids": { + "references": [ + "aws_security_group.egress", + "aws_security_group.ingress_internal", + "aws_security_group.ingress_ssh" + ] + } + }, + "schema_version": 1, + "count_expression": { + "references": [ + "var.num_workers" + ] + } + }, + { + "address": "aws_key_pair.main", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_config_key": "cluster_1:aws", + "expressions": { + "key_name_prefix": { + "references": [ + "local.cluster_name" + ] + }, + "public_key": { + "references": [ + "var.public_key_file" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.egress", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_config_key": "cluster_1:aws", + "expressions": { + "description": { + "constant_value": "Allow all outgoing traffic to everywhere" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_internal", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_config_key": "cluster_1:aws", + "expressions": { + "description": { + "constant_value": "Allow all incoming traffic from nodes and Pods in the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_k8s", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_config_key": "cluster_1:aws", + "expressions": { + "description": { + "constant_value": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_ssh", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_config_key": "cluster_1:aws", + "expressions": { + "description": { + "constant_value": "Allow incoming SSH traffic (TCP/22) from outside the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "null_resource.download_kubeconfig_file", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_config_key": "cluster_1:null", + "provisioners": [ + { + "type": "local-exec", + "expressions": { + "command": { + "references": [ + "var.private_key_file", + "aws_eip.master", + "local.kubeconfig_file" + ] + } + } + } + ], + "expressions": { + "triggers": { + "references": [ + "null_resource.wait_for_bootstrap_to_finish" + ] + } + }, + "schema_version": 0 + }, + { + "address": "null_resource.wait_for_bootstrap_to_finish", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_config_key": "cluster_1:null", + "provisioners": [ + { + "type": "local-exec", + "expressions": { + "command": { + "references": [ + "var.private_key_file", + "aws_eip.master", + "aws_instance.workers" + ] + } + } + } + ], + "expressions": { + "triggers": { + "references": [ + "aws_instance.master", + "aws_instance.workers" + ] + } + }, + "schema_version": 0 + }, + { + "address": "random_pet.cluster_name", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_config_key": "cluster_1:random", + "schema_version": 0 + }, + { + "address": "random_string.token_id", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_config_key": "cluster_1:random", + "expressions": { + "length": { + "constant_value": 6 + }, + "special": { + "constant_value": false + }, + "upper": { + "constant_value": false + } + }, + "schema_version": 1 + }, + { + "address": "random_string.token_secret", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_config_key": "cluster_1:random", + "expressions": { + "length": { + "constant_value": 16 + }, + "special": { + "constant_value": false + }, + "upper": { + "constant_value": false + } + }, + "schema_version": 1 + }, + { + "address": "data.aws_ami.ubuntu", + "mode": "data", + "type": "aws_ami", + "name": "ubuntu", + "provider_config_key": "cluster_1:aws", + "expressions": { + "filter": [ + { + "name": { + "constant_value": "name" + }, + "values": { + "constant_value": [ + "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" + ] + } + } + ], + "most_recent": { + "constant_value": true + }, + "owners": { + "constant_value": [ + "099720109477" + ] + } + }, + "schema_version": 0 + } + ], + "variables": { + "allowed_k8s_cidr_blocks": { + "default": [ + "0.0.0.0/0" + ], + "description": "List of CIDR blocks from which it is allowed to make Kubernetes API request to the API server of the cluster. By default, Kubernetes API requests are allowed from everywhere. Note that Kubernetes API requests from Pods and nodes inside the cluster are always allowed, regardless of the value of this variable." + }, + "allowed_ssh_cidr_blocks": { + "default": [ + "0.0.0.0/0" + ], + "description": "List of CIDR blocks from which it is allowed to make SSH connections to the EC2 instances that form the cluster nodes. By default, SSH connections are allowed from everywhere." + }, + "cluster_name": { + "default": null, + "description": "**This is an optional variable with a default value of null**. Name for the Kubernetes cluster. This name will be used as the value for the \"terraform-kubeadm:cluster\" tag that is assigned to all created AWS resources. If null, a random name is automatically chosen." + }, + "kubeconfig_dir": { + "default": ".", + "description": "Directory on the local machine in which to save the kubeconfig file of the created cluster. The basename of the kubeconfig file will consist of the cluster name followed by \".conf\", for example, \"my-cluster.conf\". The directory may be specified as an absolute or relative path. The directory must exist, otherwise an error occurs. By default, the current working directory is used." + }, + "kubeconfig_file": { + "default": null, + "description": "**This is an optional variable with a default value of null**. The exact filename as which to save the kubeconfig file of the crated cluster on the local machine. The filename may be specified as an absolute or relative path. The parent directory of the filename must exist, otherwise an error occurs. If a file with the same name already exists, it will be overwritten. If this variable is set to a value other than null, the value of the \"kubeconfig_dir\" variable is ignored." + }, + "master_instance_type": { + "default": "t2.medium", + "description": "EC2 instance type for the master node (must have at least 2 CPUs)." + }, + "num_workers": { + "default": 2, + "description": "Number of worker nodes." + }, + "pod_network_cidr_block": { + "default": null, + "description": "**This is an optional variable with a default value of null**. CIDR block for the Pod network of the cluster. If set, Kubernetes automatically allocates Pod subnet IP address ranges to the nodes (i.e. sets the \".spec.podCIDR\" field of the node objects). If null, the cluster is created without an explicitly determined Pod network IP address range, and the nodes are not allocated any Pod subnet IP address ranges (i.e. the \".spec.podCIDR\" field of the nodes is not set)." + }, + "private_key_file": { + "default": "~/.ssh/id_rsa", + "description": "Filename of the private key of a key pair on your local machine. This key pair will allow to connect to the nodes of the cluster with SSH." + }, + "public_key_file": { + "default": "~/.ssh/id_rsa.pub", + "description": "Filename of the public key of a key pair on your local machine. This key pair will allow to connect to the nodes of the cluster with SSH." + }, + "subnet_id": { + "default": null, + "description": "**This is an optional variable with a default value of null**. ID of the AWS subnet in which to create the cluster. If null, one of the default subnets in the default VPC is used. The subnet must be in the VPC specified by the \"vpc_id\" variable, otherwise an error occurs." + }, + "tags": { + "default": {}, + "description": "A set of tags to assign to the created AWS resources. These tags will be assigned in addition to the default tags. The default tags include \"terraform-kubeadm:cluster\" which is assigned to all resources and whose value is the cluster name, and \"terraform-kubeadm:node\" which is assigned to the EC2 instances and whose value is the name of the Kubernetes node that this EC2 corresponds to." + }, + "vpc_id": { + "default": null, + "description": "**This is an optional variable with a default value of null**. ID of the AWS VPC in which to create the cluster. If null, the default VPC is used." + }, + "worker_instance_type": { + "default": "t2.small", + "description": "EC2 instance type for the worker nodes." + } + } + } + }, + "cluster_2": { + "source": "../..", + "expressions": { + "cluster_name": { + "references": [ + "var.cluster_names" + ] + }, + "subnet_id": { + "references": [ + "module.network.subnet_id" + ] + }, + "tags": { + "references": [ + "local.additional_tags", + "var.cluster_names" + ] + }, + "vpc_id": { + "references": [ + "module.network.vpc_id" + ] + } + }, + "module": { + "outputs": { + "cluster_name": { + "expression": { + "references": [ + "local.cluster_name" + ] + }, + "description": "Name of the created cluster. This name is used as the value of the \"terraform-kubeadm:cluster\" tag assigned to all created AWS resources." + }, + "cluster_nodes": { + "expression": { + "references": [ + "aws_instance.master", + "aws_instance.workers", + "aws_eip.master" + ] + }, + "description": "Name, public and private IP address, and subnet ID of all nodes of the created cluster." + }, + "kubeconfig": { + "expression": { + "references": [ + "local.kubeconfig_file" + ] + }, + "description": "Location of the kubeconfig file for the created cluster on the local machine." + }, + "vpc_id": { + "expression": { + "references": [ + "aws_security_group.egress" + ] + }, + "description": "ID of the VPC in which the cluster has been created." + } + }, + "resources": [ + { + "address": "aws_eip.master", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_config_key": "cluster_2:aws", + "expressions": { + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc": { + "constant_value": true + } + }, + "schema_version": 0 + }, + { + "address": "aws_eip_association.master", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_config_key": "cluster_2:aws", + "expressions": { + "allocation_id": { + "references": [ + "aws_eip.master" + ] + }, + "instance_id": { + "references": [ + "aws_instance.master" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_instance.master", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_config_key": "cluster_2:aws", + "expressions": { + "ami": { + "references": [ + "data.aws_ami.ubuntu" + ] + }, + "instance_type": { + "references": [ + "var.master_instance_type" + ] + }, + "key_name": { + "references": [ + "aws_key_pair.main" + ] + }, + "subnet_id": { + "references": [ + "var.subnet_id" + ] + }, + "tags": { + "references": [ + "local.tags", + "local.cluster_name" + ] + }, + "user_data": { + "references": [ + "local.token", + "aws_eip.master", + "var.pod_network_cidr_block", + "var.pod_network_cidr_block", + "aws_eip.master" + ] + }, + "vpc_security_group_ids": { + "references": [ + "aws_security_group.egress", + "aws_security_group.ingress_internal", + "aws_security_group.ingress_k8s", + "aws_security_group.ingress_ssh" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_instance.workers", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "provider_config_key": "cluster_2:aws", + "expressions": { + "ami": { + "references": [ + "data.aws_ami.ubuntu" + ] + }, + "associate_public_ip_address": { + "constant_value": true + }, + "instance_type": { + "references": [ + "var.worker_instance_type" + ] + }, + "key_name": { + "references": [ + "aws_key_pair.main" + ] + }, + "subnet_id": { + "references": [ + "var.subnet_id" + ] + }, + "tags": { + "references": [ + "local.tags", + "count.index", + "local.cluster_name", + "count.index" + ] + }, + "user_data": { + "references": [ + "aws_instance.master", + "local.token", + "count.index" + ] + }, + "vpc_security_group_ids": { + "references": [ + "aws_security_group.egress", + "aws_security_group.ingress_internal", + "aws_security_group.ingress_ssh" + ] + } + }, + "schema_version": 1, + "count_expression": { + "references": [ + "var.num_workers" + ] + } + }, + { + "address": "aws_key_pair.main", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_config_key": "cluster_2:aws", + "expressions": { + "key_name_prefix": { + "references": [ + "local.cluster_name" + ] + }, + "public_key": { + "references": [ + "var.public_key_file" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.egress", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_config_key": "cluster_2:aws", + "expressions": { + "description": { + "constant_value": "Allow all outgoing traffic to everywhere" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_internal", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_config_key": "cluster_2:aws", + "expressions": { + "description": { + "constant_value": "Allow all incoming traffic from nodes and Pods in the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_k8s", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_config_key": "cluster_2:aws", + "expressions": { + "description": { + "constant_value": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_ssh", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_config_key": "cluster_2:aws", + "expressions": { + "description": { + "constant_value": "Allow incoming SSH traffic (TCP/22) from outside the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "null_resource.download_kubeconfig_file", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_config_key": "cluster_2:null", + "provisioners": [ + { + "type": "local-exec", + "expressions": { + "command": { + "references": [ + "var.private_key_file", + "aws_eip.master", + "local.kubeconfig_file" + ] + } + } + } + ], + "expressions": { + "triggers": { + "references": [ + "null_resource.wait_for_bootstrap_to_finish" + ] + } + }, + "schema_version": 0 + }, + { + "address": "null_resource.wait_for_bootstrap_to_finish", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_config_key": "cluster_2:null", + "provisioners": [ + { + "type": "local-exec", + "expressions": { + "command": { + "references": [ + "var.private_key_file", + "aws_eip.master", + "aws_instance.workers" + ] + } + } + } + ], + "expressions": { + "triggers": { + "references": [ + "aws_instance.master", + "aws_instance.workers" + ] + } + }, + "schema_version": 0 + }, + { + "address": "random_pet.cluster_name", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_config_key": "cluster_2:random", + "schema_version": 0 + }, + { + "address": "random_string.token_id", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_config_key": "cluster_2:random", + "expressions": { + "length": { + "constant_value": 6 + }, + "special": { + "constant_value": false + }, + "upper": { + "constant_value": false + } + }, + "schema_version": 1 + }, + { + "address": "random_string.token_secret", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_config_key": "cluster_2:random", + "expressions": { + "length": { + "constant_value": 16 + }, + "special": { + "constant_value": false + }, + "upper": { + "constant_value": false + } + }, + "schema_version": 1 + }, + { + "address": "data.aws_ami.ubuntu", + "mode": "data", + "type": "aws_ami", + "name": "ubuntu", + "provider_config_key": "cluster_2:aws", + "expressions": { + "filter": [ + { + "name": { + "constant_value": "name" + }, + "values": { + "constant_value": [ + "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" + ] + } + } + ], + "most_recent": { + "constant_value": true + }, + "owners": { + "constant_value": [ + "099720109477" + ] + } + }, + "schema_version": 0 + } + ], + "variables": { + "allowed_k8s_cidr_blocks": { + "default": [ + "0.0.0.0/0" + ], + "description": "List of CIDR blocks from which it is allowed to make Kubernetes API request to the API server of the cluster. By default, Kubernetes API requests are allowed from everywhere. Note that Kubernetes API requests from Pods and nodes inside the cluster are always allowed, regardless of the value of this variable." + }, + "allowed_ssh_cidr_blocks": { + "default": [ + "0.0.0.0/0" + ], + "description": "List of CIDR blocks from which it is allowed to make SSH connections to the EC2 instances that form the cluster nodes. By default, SSH connections are allowed from everywhere." + }, + "cluster_name": { + "default": null, + "description": "**This is an optional variable with a default value of null**. Name for the Kubernetes cluster. This name will be used as the value for the \"terraform-kubeadm:cluster\" tag that is assigned to all created AWS resources. If null, a random name is automatically chosen." + }, + "kubeconfig_dir": { + "default": ".", + "description": "Directory on the local machine in which to save the kubeconfig file of the created cluster. The basename of the kubeconfig file will consist of the cluster name followed by \".conf\", for example, \"my-cluster.conf\". The directory may be specified as an absolute or relative path. The directory must exist, otherwise an error occurs. By default, the current working directory is used." + }, + "kubeconfig_file": { + "default": null, + "description": "**This is an optional variable with a default value of null**. The exact filename as which to save the kubeconfig file of the crated cluster on the local machine. The filename may be specified as an absolute or relative path. The parent directory of the filename must exist, otherwise an error occurs. If a file with the same name already exists, it will be overwritten. If this variable is set to a value other than null, the value of the \"kubeconfig_dir\" variable is ignored." + }, + "master_instance_type": { + "default": "t2.medium", + "description": "EC2 instance type for the master node (must have at least 2 CPUs)." + }, + "num_workers": { + "default": 2, + "description": "Number of worker nodes." + }, + "pod_network_cidr_block": { + "default": null, + "description": "**This is an optional variable with a default value of null**. CIDR block for the Pod network of the cluster. If set, Kubernetes automatically allocates Pod subnet IP address ranges to the nodes (i.e. sets the \".spec.podCIDR\" field of the node objects). If null, the cluster is created without an explicitly determined Pod network IP address range, and the nodes are not allocated any Pod subnet IP address ranges (i.e. the \".spec.podCIDR\" field of the nodes is not set)." + }, + "private_key_file": { + "default": "~/.ssh/id_rsa", + "description": "Filename of the private key of a key pair on your local machine. This key pair will allow to connect to the nodes of the cluster with SSH." + }, + "public_key_file": { + "default": "~/.ssh/id_rsa.pub", + "description": "Filename of the public key of a key pair on your local machine. This key pair will allow to connect to the nodes of the cluster with SSH." + }, + "subnet_id": { + "default": null, + "description": "**This is an optional variable with a default value of null**. ID of the AWS subnet in which to create the cluster. If null, one of the default subnets in the default VPC is used. The subnet must be in the VPC specified by the \"vpc_id\" variable, otherwise an error occurs." + }, + "tags": { + "default": {}, + "description": "A set of tags to assign to the created AWS resources. These tags will be assigned in addition to the default tags. The default tags include \"terraform-kubeadm:cluster\" which is assigned to all resources and whose value is the cluster name, and \"terraform-kubeadm:node\" which is assigned to the EC2 instances and whose value is the name of the Kubernetes node that this EC2 corresponds to." + }, + "vpc_id": { + "default": null, + "description": "**This is an optional variable with a default value of null**. ID of the AWS VPC in which to create the cluster. If null, the default VPC is used." + }, + "worker_instance_type": { + "default": "t2.small", + "description": "EC2 instance type for the worker nodes." + } + } + } + }, + "cluster_3": { + "source": "../..", + "expressions": { + "cluster_name": { + "references": [ + "var.cluster_names" + ] + }, + "subnet_id": { + "references": [ + "module.network.subnet_id" + ] + }, + "tags": { + "references": [ + "local.additional_tags", + "var.cluster_names" + ] + }, + "vpc_id": { + "references": [ + "module.network.vpc_id" + ] + } + }, + "module": { + "outputs": { + "cluster_name": { + "expression": { + "references": [ + "local.cluster_name" + ] + }, + "description": "Name of the created cluster. This name is used as the value of the \"terraform-kubeadm:cluster\" tag assigned to all created AWS resources." + }, + "cluster_nodes": { + "expression": { + "references": [ + "aws_instance.master", + "aws_instance.workers", + "aws_eip.master" + ] + }, + "description": "Name, public and private IP address, and subnet ID of all nodes of the created cluster." + }, + "kubeconfig": { + "expression": { + "references": [ + "local.kubeconfig_file" + ] + }, + "description": "Location of the kubeconfig file for the created cluster on the local machine." + }, + "vpc_id": { + "expression": { + "references": [ + "aws_security_group.egress" + ] + }, + "description": "ID of the VPC in which the cluster has been created." + } + }, + "resources": [ + { + "address": "aws_eip.master", + "mode": "managed", + "type": "aws_eip", + "name": "master", + "provider_config_key": "cluster_3:aws", + "expressions": { + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc": { + "constant_value": true + } + }, + "schema_version": 0 + }, + { + "address": "aws_eip_association.master", + "mode": "managed", + "type": "aws_eip_association", + "name": "master", + "provider_config_key": "cluster_3:aws", + "expressions": { + "allocation_id": { + "references": [ + "aws_eip.master" + ] + }, + "instance_id": { + "references": [ + "aws_instance.master" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_instance.master", + "mode": "managed", + "type": "aws_instance", + "name": "master", + "provider_config_key": "cluster_3:aws", + "expressions": { + "ami": { + "references": [ + "data.aws_ami.ubuntu" + ] + }, + "instance_type": { + "references": [ + "var.master_instance_type" + ] + }, + "key_name": { + "references": [ + "aws_key_pair.main" + ] + }, + "subnet_id": { + "references": [ + "var.subnet_id" + ] + }, + "tags": { + "references": [ + "local.tags", + "local.cluster_name" + ] + }, + "user_data": { + "references": [ + "local.token", + "aws_eip.master", + "var.pod_network_cidr_block", + "var.pod_network_cidr_block", + "aws_eip.master" + ] + }, + "vpc_security_group_ids": { + "references": [ + "aws_security_group.egress", + "aws_security_group.ingress_internal", + "aws_security_group.ingress_k8s", + "aws_security_group.ingress_ssh" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_instance.workers", + "mode": "managed", + "type": "aws_instance", + "name": "workers", + "provider_config_key": "cluster_3:aws", + "expressions": { + "ami": { + "references": [ + "data.aws_ami.ubuntu" + ] + }, + "associate_public_ip_address": { + "constant_value": true + }, + "instance_type": { + "references": [ + "var.worker_instance_type" + ] + }, + "key_name": { + "references": [ + "aws_key_pair.main" + ] + }, + "subnet_id": { + "references": [ + "var.subnet_id" + ] + }, + "tags": { + "references": [ + "local.tags", + "count.index", + "local.cluster_name", + "count.index" + ] + }, + "user_data": { + "references": [ + "aws_instance.master", + "local.token", + "count.index" + ] + }, + "vpc_security_group_ids": { + "references": [ + "aws_security_group.egress", + "aws_security_group.ingress_internal", + "aws_security_group.ingress_ssh" + ] + } + }, + "schema_version": 1, + "count_expression": { + "references": [ + "var.num_workers" + ] + } + }, + { + "address": "aws_key_pair.main", + "mode": "managed", + "type": "aws_key_pair", + "name": "main", + "provider_config_key": "cluster_3:aws", + "expressions": { + "key_name_prefix": { + "references": [ + "local.cluster_name" + ] + }, + "public_key": { + "references": [ + "var.public_key_file" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.egress", + "mode": "managed", + "type": "aws_security_group", + "name": "egress", + "provider_config_key": "cluster_3:aws", + "expressions": { + "description": { + "constant_value": "Allow all outgoing traffic to everywhere" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_internal", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_internal", + "provider_config_key": "cluster_3:aws", + "expressions": { + "description": { + "constant_value": "Allow all incoming traffic from nodes and Pods in the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_k8s", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_k8s", + "provider_config_key": "cluster_3:aws", + "expressions": { + "description": { + "constant_value": "Allow incoming Kubernetes API requests (TCP/6443) from outside the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_security_group.ingress_ssh", + "mode": "managed", + "type": "aws_security_group", + "name": "ingress_ssh", + "provider_config_key": "cluster_3:aws", + "expressions": { + "description": { + "constant_value": "Allow incoming SSH traffic (TCP/22) from outside the cluster" + }, + "name": { + "references": [ + "local.cluster_name" + ] + }, + "tags": { + "references": [ + "local.tags" + ] + }, + "vpc_id": { + "references": [ + "var.vpc_id" + ] + } + }, + "schema_version": 1 + }, + { + "address": "null_resource.download_kubeconfig_file", + "mode": "managed", + "type": "null_resource", + "name": "download_kubeconfig_file", + "provider_config_key": "cluster_3:null", + "provisioners": [ + { + "type": "local-exec", + "expressions": { + "command": { + "references": [ + "var.private_key_file", + "aws_eip.master", + "local.kubeconfig_file" + ] + } + } + } + ], + "expressions": { + "triggers": { + "references": [ + "null_resource.wait_for_bootstrap_to_finish" + ] + } + }, + "schema_version": 0 + }, + { + "address": "null_resource.wait_for_bootstrap_to_finish", + "mode": "managed", + "type": "null_resource", + "name": "wait_for_bootstrap_to_finish", + "provider_config_key": "cluster_3:null", + "provisioners": [ + { + "type": "local-exec", + "expressions": { + "command": { + "references": [ + "var.private_key_file", + "aws_eip.master", + "aws_instance.workers" + ] + } + } + } + ], + "expressions": { + "triggers": { + "references": [ + "aws_instance.master", + "aws_instance.workers" + ] + } + }, + "schema_version": 0 + }, + { + "address": "random_pet.cluster_name", + "mode": "managed", + "type": "random_pet", + "name": "cluster_name", + "provider_config_key": "cluster_3:random", + "schema_version": 0 + }, + { + "address": "random_string.token_id", + "mode": "managed", + "type": "random_string", + "name": "token_id", + "provider_config_key": "cluster_3:random", + "expressions": { + "length": { + "constant_value": 6 + }, + "special": { + "constant_value": false + }, + "upper": { + "constant_value": false + } + }, + "schema_version": 1 + }, + { + "address": "random_string.token_secret", + "mode": "managed", + "type": "random_string", + "name": "token_secret", + "provider_config_key": "cluster_3:random", + "expressions": { + "length": { + "constant_value": 16 + }, + "special": { + "constant_value": false + }, + "upper": { + "constant_value": false + } + }, + "schema_version": 1 + }, + { + "address": "data.aws_ami.ubuntu", + "mode": "data", + "type": "aws_ami", + "name": "ubuntu", + "provider_config_key": "cluster_3:aws", + "expressions": { + "filter": [ + { + "name": { + "constant_value": "name" + }, + "values": { + "constant_value": [ + "ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-*" + ] + } + } + ], + "most_recent": { + "constant_value": true + }, + "owners": { + "constant_value": [ + "099720109477" + ] + } + }, + "schema_version": 0 + } + ], + "variables": { + "allowed_k8s_cidr_blocks": { + "default": [ + "0.0.0.0/0" + ], + "description": "List of CIDR blocks from which it is allowed to make Kubernetes API request to the API server of the cluster. By default, Kubernetes API requests are allowed from everywhere. Note that Kubernetes API requests from Pods and nodes inside the cluster are always allowed, regardless of the value of this variable." + }, + "allowed_ssh_cidr_blocks": { + "default": [ + "0.0.0.0/0" + ], + "description": "List of CIDR blocks from which it is allowed to make SSH connections to the EC2 instances that form the cluster nodes. By default, SSH connections are allowed from everywhere." + }, + "cluster_name": { + "default": null, + "description": "**This is an optional variable with a default value of null**. Name for the Kubernetes cluster. This name will be used as the value for the \"terraform-kubeadm:cluster\" tag that is assigned to all created AWS resources. If null, a random name is automatically chosen." + }, + "kubeconfig_dir": { + "default": ".", + "description": "Directory on the local machine in which to save the kubeconfig file of the created cluster. The basename of the kubeconfig file will consist of the cluster name followed by \".conf\", for example, \"my-cluster.conf\". The directory may be specified as an absolute or relative path. The directory must exist, otherwise an error occurs. By default, the current working directory is used." + }, + "kubeconfig_file": { + "default": null, + "description": "**This is an optional variable with a default value of null**. The exact filename as which to save the kubeconfig file of the crated cluster on the local machine. The filename may be specified as an absolute or relative path. The parent directory of the filename must exist, otherwise an error occurs. If a file with the same name already exists, it will be overwritten. If this variable is set to a value other than null, the value of the \"kubeconfig_dir\" variable is ignored." + }, + "master_instance_type": { + "default": "t2.medium", + "description": "EC2 instance type for the master node (must have at least 2 CPUs)." + }, + "num_workers": { + "default": 2, + "description": "Number of worker nodes." + }, + "pod_network_cidr_block": { + "default": null, + "description": "**This is an optional variable with a default value of null**. CIDR block for the Pod network of the cluster. If set, Kubernetes automatically allocates Pod subnet IP address ranges to the nodes (i.e. sets the \".spec.podCIDR\" field of the node objects). If null, the cluster is created without an explicitly determined Pod network IP address range, and the nodes are not allocated any Pod subnet IP address ranges (i.e. the \".spec.podCIDR\" field of the nodes is not set)." + }, + "private_key_file": { + "default": "~/.ssh/id_rsa", + "description": "Filename of the private key of a key pair on your local machine. This key pair will allow to connect to the nodes of the cluster with SSH." + }, + "public_key_file": { + "default": "~/.ssh/id_rsa.pub", + "description": "Filename of the public key of a key pair on your local machine. This key pair will allow to connect to the nodes of the cluster with SSH." + }, + "subnet_id": { + "default": null, + "description": "**This is an optional variable with a default value of null**. ID of the AWS subnet in which to create the cluster. If null, one of the default subnets in the default VPC is used. The subnet must be in the VPC specified by the \"vpc_id\" variable, otherwise an error occurs." + }, + "tags": { + "default": {}, + "description": "A set of tags to assign to the created AWS resources. These tags will be assigned in addition to the default tags. The default tags include \"terraform-kubeadm:cluster\" which is assigned to all resources and whose value is the cluster name, and \"terraform-kubeadm:node\" which is assigned to the EC2 instances and whose value is the name of the Kubernetes node that this EC2 corresponds to." + }, + "vpc_id": { + "default": null, + "description": "**This is an optional variable with a default value of null**. ID of the AWS VPC in which to create the cluster. If null, the default VPC is used." + }, + "worker_instance_type": { + "default": "t2.small", + "description": "EC2 instance type for the worker nodes." + } + } + } + }, + "network": { + "source": "weibeld/kubeadm/aws//modules/network", + "expressions": { + "tags": { + "references": [ + "local.additional_tags" + ] + } + }, + "module": { + "outputs": { + "subnet_id": { + "expression": { + "references": [ + "aws_subnet.main" + ] + }, + "description": "ID of the created subnet." + }, + "vpc_id": { + "expression": { + "references": [ + "aws_vpc.main" + ] + }, + "description": "ID of the created VPC." + } + }, + "resources": [ + { + "address": "aws_internet_gateway.main", + "mode": "managed", + "type": "aws_internet_gateway", + "name": "main", + "provider_config_key": "network:aws", + "expressions": { + "tags": { + "references": [ + "var.tags" + ] + }, + "vpc_id": { + "references": [ + "aws_vpc.main" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_route_table.main", + "mode": "managed", + "type": "aws_route_table", + "name": "main", + "provider_config_key": "network:aws", + "expressions": { + "tags": { + "references": [ + "var.tags" + ] + }, + "vpc_id": { + "references": [ + "aws_vpc.main" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_route_table_association.main", + "mode": "managed", + "type": "aws_route_table_association", + "name": "main", + "provider_config_key": "network:aws", + "expressions": { + "route_table_id": { + "references": [ + "aws_route_table.main" + ] + }, + "subnet_id": { + "references": [ + "aws_subnet.main" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_subnet.main", + "mode": "managed", + "type": "aws_subnet", + "name": "main", + "provider_config_key": "network:aws", + "expressions": { + "cidr_block": { + "references": [ + "var.cidr_block" + ] + }, + "tags": { + "references": [ + "var.tags" + ] + }, + "vpc_id": { + "references": [ + "aws_vpc.main" + ] + } + }, + "schema_version": 1 + }, + { + "address": "aws_vpc.main", + "mode": "managed", + "type": "aws_vpc", + "name": "main", + "provider_config_key": "network:aws", + "expressions": { + "cidr_block": { + "references": [ + "var.cidr_block" + ] + }, + "tags": { + "references": [ + "var.tags" + ] + } + }, + "schema_version": 1 + } + ], + "variables": { + "cidr_block": { + "default": "172.31.0.0/16", + "description": "CIDR block for the VPC and subnet. This value will determine the private IP addresses of the Kubernetes cluster nodes." + }, + "tags": { + "default": {}, + "description": "A set of tags to assign to the created resources." + } + } + }, + "version_constraint": "~\u003e 0.2" + } + }, + "variables": { + "cluster_names": { + "default": [ + null, + null, + null + ], + "description": "Names for the individual clusters. If the value for a specific cluster is null, a random name will be automatically chosen." + }, + "region": { + "description": "AWS region in which to create the clusters." + } + } + } + } +} \ No newline at end of file diff --git a/examples/ex4-multiple-clusters/terraform.tfvars b/examples/ex4-multiple-clusters/test_terraform.tfvars similarity index 71% rename from examples/ex4-multiple-clusters/terraform.tfvars rename to examples/ex4-multiple-clusters/test_terraform.tfvars index 7673771..d22efb9 100644 --- a/examples/ex4-multiple-clusters/terraform.tfvars +++ b/examples/ex4-multiple-clusters/test_terraform.tfvars @@ -3,3 +3,5 @@ cluster_names = [ "beta", "gamma", ] + +region = "us-east-1" \ No newline at end of file diff --git a/examples/ex4-multiple-clusters/variables.tf b/examples/ex4-multiple-clusters/variables.tf index eb29c03..f744258 100644 --- a/examples/ex4-multiple-clusters/variables.tf +++ b/examples/ex4-multiple-clusters/variables.tf @@ -7,5 +7,4 @@ variable "cluster_names" { variable "region" { type = string description = "AWS region in which to create the clusters." - default = "eu-central-1" -} +} \ No newline at end of file diff --git a/main.tf b/main.tf index 62e9a19..bff4366 100644 --- a/main.tf +++ b/main.tf @@ -152,7 +152,7 @@ resource "aws_instance" "master" { aws_security_group.ingress_k8s.id, aws_security_group.ingress_ssh.id ] - tags = merge(local.tags, { "terraform-kubeadm:node" = "master" }) + tags = merge(local.tags, { "terraform-kubeadm:node" = "master", "Name" = "${local.cluster_name}-master"}) user_data = <<-EOF #!/bin/bash @@ -184,6 +184,16 @@ resource "aws_instance" "master" { EOF } +//resource "aws_autoscaling_group" "master" { +// min_size = 1 +// desired_capacity = 1 +// max_size = 1 +//} +//resource "aws_autoscaling_group" "workers" { +// min_size = 1 +// desired_capacity = 1 +// max_size = 1 +//} resource "aws_instance" "workers" { count = var.num_workers ami = data.aws_ami.ubuntu.image_id @@ -196,7 +206,7 @@ resource "aws_instance" "workers" { aws_security_group.ingress_internal.id, aws_security_group.ingress_ssh.id ] - tags = merge(local.tags, { "terraform-kubeadm:node" = "worker-${count.index}" }) + tags = merge(local.tags, { "terraform-kubeadm:node" = "worker-${count.index}", "Name" = "${local.cluster_name}-worker-${count.index}"}) user_data = <<-EOF #!/bin/bash