terraform-provider-bigip icon indicating copy to clipboard operation
terraform-provider-bigip copied to clipboard

Terraform F5 Provider Crashes during Apply

Open JPatC opened this issue 1 year ago • 2 comments
trafficstars

Environment

  • TMOS/Bigip Version: 17.1
  • Terraform Version: Terraform v1.4.4
  • Terraform bigip provider Version: terraform-provider-bigip_v1.12.2

Summary

We're using DO and AS3 to configure our F5 Big IPs through terraform (LTM, APM, ASM) and recently without any code changes the terraform provider started to crash.

Steps To Reproduce

Steps to reproduce the behavior:

When we run our code we get this error: Terraform v1.4.4 on linux_amd64 Initializing plugins and modules... bigip_as3.securitySettings: Creating... module.f5_02_partition2.bigip_ltm_policy.traffic_policies: Modifying... [id=/test/ece] module.f5_01_partition2.bigip_ltm_policy.traffic_policies: Modifying... [id=/test/ece] module.f5_01_partition2.bigip_ltm_policy.traffic_policies: Modifications complete after 1s [id=/test/ece] module.f5_02_partition2.bigip_ltm_policy.traffic_policies: Modifications complete after 1s [id=/test/ece] ╷ │ Warning: Version constraints inside provider configuration blocks are deprecated │ │ on main.tf line 13, in provider "aws": │ 13: version = "5.31.0" │ │ Terraform 0.13 and earlier allowed provider version constraints inside the │ provider configuration block, but that is now deprecated and will be │ removed in a future version of Terraform. To silence this warning, move the │ provider version constraint into the required_providers block. ╵ ╷ │ Error: Plugin did not respond │ │ with bigip_as3.securitySettings, │ on security.tf line 160, in resource "bigip_as3" "securitySettings": │ 160: resource "bigip_as3" "securitySettings"{ │ │ The plugin encountered an error, and failed to respond to the │ plugin.(*GRPCProvider).ApplyResourceChange call. The plugin logs may │ contain more details. ╵

Stack trace from the terraform-provider-bigip_v1.12.2 plugin:

panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x40 pc=0x73fb3e]

goroutine 26 [running]: github.com/f5devcentral/go-bigip.(*BigIP).APICall(0x0, 0xc0005d5288, 0x0, 0x0, 0x0, 0x0, 0x0) github.com/f5devcentral/[email protected]/bigip.go:177 +0x7e github.com/f5devcentral/go-bigip.(*BigIP).getForEntity(0x0, 0xe8c300, 0xc0001052c0, 0xc0005d5328, 0x4, 0x4, 0xa, 0xe9c080, 0xc00000e6b8) github.com/f5devcentral/[email protected]/bigip.go:451 +0xe6 github.com/f5devcentral/go-bigip.(*BigIP).getAs3version(0x0, 0x40a, 0x480, 0xe9c080) github.com/f5devcentral/[email protected]/as3bigip.go:301 +0xfb github.com/f5devcentral/go-bigip.(*BigIP).AddTeemAgent(0x0, 0xeb9760, 0xc0005d5600, 0xeb9760, 0xc00033d7b0, 0x0, 0x0) github.com/f5devcentral/[email protected]/as3bigip.go:439 +0x116 github.com/F5Networks/terraform-provider-bigip/bigip.resourceBigipAs3Create(0xc0005a2770, 0x10262e0, 0x0, 0x0, 0x0) github.com/F5Networks/terraform-provider-bigip/bigip/resource_bigip_as3.go:185 +0x35c github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Resource).Apply(0xc000172100, 0xc000645e00, 0xc0005883e0, 0x10262e0, 0x0, 0xefd701, 0xc000405af8, 0xc0005a9650) github.com/hashicorp/[email protected]/helper/schema/resource.go:305 +0x375 github.com/hashicorp/terraform-plugin-sdk/helper/schema.(*Provider).Apply(0xc000172900, 0xc0005d58e8, 0xc000645e00, 0xc0005883e0, 0xc000405b68, 0xc00000e448, 0xeff4c0) github.com/hashicorp/[email protected]/helper/schema/provider.go:294 +0x99 github.com/hashicorp/terraform-plugin-sdk/internal/helper/plugin.(*GRPCProviderServer).ApplyResourceChange(0xc00000e1d0, 0x11ba050, 0xc0005a8c30, 0xc000372540, 0xc00000e1d0, 0xc0005a8c30, 0xc000567a50) github.com/hashicorp/[email protected]/internal/helper/plugin/grpc_provider.go:885 +0x8a5 github.com/hashicorp/terraform-plugin-sdk/internal/tfplugin5._Provider_ApplyResourceChange_Handler(0xfe5160, 0xc00000e1d0, 0x11ba050, 0xc0005a8c30, 0xc0003724e0, 0x0, 0x11ba050, 0xc0005a8c30, 0xc0005aec80, 0xc66) github.com/hashicorp/[email protected]/internal/tfplugin5/tfplugin5.pb.go:3189 +0x214 google.golang.org/grpc.(*Server).processUnaryRPC(0xc0000ee160, 0x11c2838, 0xc000376d80, 0xc00050d200, 0xc00036e5d0, 0x171fca0, 0x0, 0x0, 0x0) google.golang.org/[email protected]/server.go:995 +0x482 google.golang.org/grpc.(*Server).handleStream(0xc0000ee160, 0x11c2838, 0xc000376d80, 0xc00050d200, 0x0) google.golang.org/[email protected]/server.go:1275 +0xd2c google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc0005041c0, 0xc0000ee160, 0x11c2838, 0xc000376d80, 0xc00050d200) google.golang.org/[email protected]/server.go:710 +0xab created by google.golang.org/grpc.(*Server).serveStreams.func1 google.golang.org/[email protected]/server.go:708 +0xa5

Error: The terraform-provider-bigip_v1.12.2 plugin crashed!

This is always indicative of a bug within the plugin. It would be immensely helpful if you could report the crash with the plugin's maintainers so that it can be fixed. The output above should help diagnose the issue.

Operation failed: failed running terraform apply (exit 1)

Expected Behavior

A clear and concise description of what you expected to happen.

Actual Behavior

Terraform provider crash

JPatC avatar Apr 19 '24 16:04 JPatC

Hi @JPatC,

It seems the issue occurs when Terraform is managing AS3 resource. Can you share the AS3 json and if there is anything specific in TF AS3 resource?

pgouband avatar Apr 22 '24 08:04 pgouband

Here's our JSON CODE. we do some variable substitution that's sensitive.

{ "class": "AS3", "action": "deploy", "persist": true, "declaration": { "class": "ADC", "schemaVersion": "3.0.0", "id": "declaration-baseline", "label": "${lc_spell} Baseline Declaration", "remark": "Tenants creation, defining Pools and main HTTP redirect.", "${lc_abbv}-cint": { "class": "Tenant", "defaultRouteDomain": 0, "baseline": { "class": "Application", "template": "shared", "${lc_abbv}-http-redirect" : { "class": "Service_HTTP", "description" : "${lc_spell} ECE HTTP to HTTPS redirect", "virtualAddresses": [ "${public_ip}" ], "virtualPort" : 80, "profileTCP" : { "bigip" : "/Common/tcp" }, "persistenceMethods" : [], "iRules" : [{"bigip" : "/Common/_sys_https_redirect"}] }, "${lc_abbv}-cint-tls-server" : { "class" : "TLS_Client", "clientCertificate" : "${lc_abbv}-ece-wildcard" }, "${lc_abbv}-cint-tls" : { "class" : "TLS_Server", "certificates" : [ { "certificate" : "${lc_abbv}-ece-wildcard" } ] }, "${lc_abbv}-ece-wildcard" : { "class" : "Certificate", "certificate" : "${crt}", "privateKey" : "${key}", "chainCA" : { "text" : "${ca}" } } } } } }

JPatC avatar Apr 22 '24 15:04 JPatC