### Example Usage Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_subnet.md Provides an example of how to configure a Volterra subnet resource using Terraform. ```APIDOC ### Example Usage ```hcl resource "volterra_subnet" "example" { name = "acmecorp-web" namespace = "staging" site_subnet_params { // One of the arguments from this list "dhcp static_ip" can be set dhcp = true site { name = "test1" namespace = "staging" tenant = "acmecorp" } subnet_dhcp_server_params { dhcp_networks { // One of the arguments from this list "network_prefix network_prefix_ipv6" can be set network_prefix_ipv6 = "2001::1/64" } } } } ``` ``` -------------------------------- ### Example Usage Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_tgw_vpn_tunnels.md An example of how to configure the volterra_tgw_vpn_tunnels resource in Terraform. ```APIDOC ```hcl resource "volterra_tgw_vpn_tunnels" "example" { name = "aws-tgw-site1" namespace = "system" vpn_tunnel_config { node_name = "master-0" node_id = "node-1234" tunnel_remote_ips = ["1.1.1.1","2.2.2.2"] type = "HUB" } } ``` ``` -------------------------------- ### Example Usage Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_uztna_healthcheck.md An example of how to declare and configure a 'volterra_uztna_healthcheck' resource in Terraform. ```APIDOC ```hcl resource "volterra_uztna_healthcheck" "example" { name = "acmecorp-web" namespace = "staging" # One of the arguments from this list "tcp_health_check" must be set tcp_health_check { expected_response = ".*" send_payload = "send_payload" } interval = 10 timeout = 1 } ``` ``` -------------------------------- ### Advertise Policy Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_advertise_policy.md Use this resource to configure an advertise policy. Ensure that one of the 'port' or 'port_ranges' arguments is set. ```hcl resource "volterra_advertise_policy" "example" { name = "acmecorp-web" namespace = "staging" // One of the arguments from this list "port port_ranges" must be set port = "80" } ``` -------------------------------- ### Volterra NAT Policy Resource Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_nat_policy.md This example demonstrates how to create a Volterra NAT Policy resource with specific rules and configurations. ```APIDOC ## Resource volterra_nat_policy ### Description The Nat Policy allows CRUD of Nat Policy resource on Volterra SaaS. ### Method Not applicable (Terraform resource definition) ### Endpoint Not applicable (Terraform resource definition) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body This section describes the arguments for the `volterra_nat_policy` resource. ##### Metadata Argument Reference - **annotations** (String) - Optional - Queryable and should be preserved when modifying objects. - **description** (String) - Optional - Human readable description for the object. - **disable** (Bool) - Optional - A value of true will administratively disable the object. - **labels** (String) - Optional - By selector expression. - **name** (String) - Required - The value of name has to follow DNS-1035 format. - **namespace** (String) - Optional - Must be a DNS_LABEL format. For a namespace object itself, namespace value will be "". ##### Spec Argument Reference - **site** (Object) - Optional - Site reference. See [Applies To Choice Site](#applies-to-choice-site) below for details. - **rules** (Array) - Required - List of rules to apply under the NAT Policy. Rule that matches first would be applied. See [Rules](#rules) below for details. ###### One of the arguments from this list "site" must be set ### Rules List of rules to apply under the NAT Policy. Rule that matches first would be applied. - **action** (Object) - Required - Action to apply if rule is applied. See [Rules Action](#rules-action) below for details. - **criteria** (Object) - Optional - Criteria to match on the packet to apply the Action. See [Rules Criteria](#rules-criteria) below for details. - **disable** (Bool) - Optional - Disables the rule. - **enable** (Bool) - Optional - Enables the rule. - **name** (String) - Required - Name of the Rule. ###### One of the arguments from this list "disable, enable" must be set - **cloud_connect** (Object) - Optional - NAT rule is applied to packet coming from cloud connect. See [Scope Choice Cloud Connect](#scope-choice-cloud-connect) below for details. - **network_interface** (Object) - Optional - NAT rule is applied to packet coming from interface. See [Scope Choice Network Interface](#scope-choice-network-interface) below for details.(Deprecated) - **node_interface** (Object) - Optional - NAT rule is applied to packet coming from one or more interfaces of nodes. See [Scope Choice Node Interface](#scope-choice-node-interface) below for details. - **segment** (Object) - Optional - NAT rule is applied to packet in the segment. See [Scope Choice Segment](#scope-choice-segment) below for details. - **virtual_network** (Object) - Optional - NAT rule is applied to packet in the virtual network. See [Scope Choice Virtual Network](#scope-choice-virtual-network) below for details. ###### One of the arguments from this list "cloud_connect, network_interface, node_interface, segment, virtual_network" must be set ### Applies To Choice Site Site reference. - **refs** (Object) - Required - Reference to Site Object. See [ref](#ref) below for details. ### Criteria Destination Port Destination port of the packet to match. ### Request Example ```hcl resource "volterra_nat_policy" "example" { name = "acmecorp-web" namespace = "staging" site { refs { name = "test1" namespace = "staging" tenant = "acmecorp" } } rules { action { virtual_cidr = "virtual_cidr" } criteria { destination_cidr = ["1.1.1.0/24 or 2001::10/64"] destination_port { port_ranges = "8080-8191" } virtual_network { refs { name = "test1" namespace = "staging" tenant = "acmecorp" } } protocol = "ALL" any = true source_cidr = ["1.1.1.0/24 or 2001:10/64"] source_port { port = "6443" } } enable = true name = "NAT to Internet" cloud_connect { refs { name = "test1" namespace = "staging" tenant = "acmecorp" } } } } ``` ### Response #### Success Response (200) - **status** (String) - Indicates the success of the operation. #### Response Example ```json { "status": "success" } ``` ``` -------------------------------- ### volterra_gcp_vpc_site Resource Configuration Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_gcp_vpc_site.md Example of how to configure the `volterra_gcp_vpc_site` resource with various options. ```APIDOC ## Resource volterra_gcp_vpc_site ### Description The Gcp Vpc Site allows CRUD of Gcp Vpc Site resource on Volterra SaaS. ### Method CRUD operations are supported for this resource. ### Endpoint Not explicitly defined, but operations are performed via the Volterra API. ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body This resource is configured using Terraform HCL, not a direct JSON request body. ### Request Example (Terraform HCL) ```hcl resource "volterra_gcp_vpc_site" "example" { name = "acmecorp-web" namespace = "staging" default_blocked_services = true cloud_credentials { name = "test1" namespace = "staging" tenant = "acmecorp" } gcp_region = ["us-west1"] instance_type = ["n1-standard-4"] logs_streaming_disabled = true private_connect_disabled = true ingress_egress_gw { no_dc_cluster_group = true no_forward_proxy = true gcp_certified_hw = "gcp-byol-multi-nic-voltmesh" gcp_zone_names = ["us-west1-a, us-west1-b, us-west1-c"] no_global_network = true inside_network { new_network { name = "network1" } } no_inside_static_routes = true inside_subnet { existing_subnet { subnet_name = "subnet1-in-network1" } } no_network_policy = true node_number = "1" outside_network { existing_network { name = "network1" f5_orchestrated_routing = true } } no_outside_static_routes = true outside_subnet { new_subnet { primary_ipv4 = "10.1.0.0/16" subnet_name = "subnet1-in-network1" } } performance_enhancement_mode { perf_mode_l7_enhanced { jumbo_disabled = true } } sm_connection_public_ip = true } ssh_key = ["ssh-rsa AAAAB..."] } ``` ### Response #### Success Response (200) Details on success response fields can be found in the Volterra API documentation. #### Response Example Not applicable for Terraform resource configuration. ``` -------------------------------- ### volterra_virtual_server Resource Configuration Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_virtual_server.md Example of how to configure a volterra_virtual_server resource, including metadata and spec arguments. ```APIDOC ## Resource: volterra_virtual_server ### Description The Virtual Server allows CRUD of Virtual Server resource on Volterra SaaS. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Metadata Argument Reference - **annotations** (String) - Optional - Queryable and should be preserved when modifying objects. - **description** (String) - Optional - Human readable description for the object. - **disable** (Bool) - Optional - A value of true will administratively disable the object. - **labels** (String) - Optional - By selector expression. - **name** (String) - Required - The value of name has to follow DNS-1035 format. - **namespace** (String) - Optional - Must be a DNS_LABEL format. For a namespace object itself, namespace value will be "". ### Spec Argument Reference - **auto_last_hop** (String) - Optional - When enabled, allows the system to send return traffic to the MAC address that transmitted the request, even if the routing table points to a different network or interface. See [Auto Last Hop](#auto-last-hop) below for details. - **clone_pool_options** (Object) - Optional - x-displayName: "Clone Pool". See [Clone Pool Options](#clone-pool-options) below for details. - **connection_limit_options** (Object) - Optional - x-displayName: "Connection Limit Options". See [Connection Limit Options](#connection-limit-options) below for details. ###### One of the arguments from this list "default_persistence_profile, default_persistence_profile_none" can be set - **default_persistence_profile** (Object) - Optional - x-displayName: "Select Profile". See [ref](#ref) below for details. - **default_persistence_profile_none** (Bool) - Optional - x-displayName: "None". ###### One of the arguments from this list "default_pool, default_pool_none" can be set - **default_pool** (Object) - Optional - x-displayName: "Select Pool". See [ref](#ref) below for details. - **default_pool_none** (Bool) - Optional - x-displayName: "None". ###### One of the arguments from this list "managed, not_managed" must be set - **managed** (Object) - Optional - Domains that are managed by F5XC platform through setting up of dns_zones. See [Domain Choice Managed](#domain-choice-managed) below for details. - **not_managed** (Object) - Optional - Not Managed by F5XC. See [Domain Choice Not Managed](#domain-choice-not-managed) below for details. ###### One of the arguments from this list "fallback_persistence_profile, fallback_persistence_profile_none" can be set - **fallback_persistence_profile** (Object) - Optional - x-displayName: "Select Profile". See [ref](#ref) below for details. - **fallback_persistence_profile_none** (Bool) - Optional - x-displayName: "None". - **immediate_action_on_service_down** (String) - Optional - Drop: Specifies that the system drops the connections when the virtual server is reported Offline or Unavailable.. See [Immediate Action On Service Down](#immediate-action-on-service-down) below for details. - **irules** (Object) - Optional - Specifies the iRules you want run on this virtual server. iRules help automate the intercepting, processing, and routing of application traffic.. See [ref](#ref) below for details. ### Request Example ```hcl resource "volterra_virtual_server" "example" { name = "acmecorp-web" namespace = "staging" managed { domains { dns_zone { name = "test1" namespace = "staging" tenant = "acmecorp" } prefix = "prefix" } } } ``` ### Response #### Success Response (200) - **field1** (type) - Description #### Response Example ```json { "example": "response body" } ``` ``` -------------------------------- ### Create Volterra Network Connector Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_network_connector.md This example demonstrates how to create a Volterra network connector using Terraform. It shows how to configure the connector for site-local inside to site-local outside SNAT with interface IP and default gateway SNAT, and also disables the forward proxy. ```hcl resource "volterra_network_connector" "example" { name = "acmecorp-web" namespace = "staging" // One of the arguments from this list "sli_to_global_dr sli_to_global_snat sli_to_slo_dr sli_to_slo_snat slo_to_global_dr slo_to_global_snat" must be set sli_to_slo_snat { // One of the arguments from this list "interface_ip snat_pool snat_pool_allocator" must be set interface_ip = true // One of the arguments from this list "default_gw_snat dynamic_routing" must be set default_gw_snat = true } // One of the arguments from this list "disable_forward_proxy enable_forward_proxy" must be set disable_forward_proxy = true } ``` -------------------------------- ### Create Volterra Uztna Application View Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_uztna_application_view.md Example of how to create a uztna_application_view resource. Ensure all required arguments like name, namespace, app_tags, fqdn, location, and port are provided. ```hcl resource "volterra_uztna_application_view" "example" { name = "acmecorp-web" namespace = "staging" app_tags { app_tags { name = "test1" namespace = "staging" tenant = "acmecorp" } } fqdn = ["test.f5net.com"] location { name = "test1" namespace = "staging" tenant = "acmecorp" } port = ["443"] } ``` -------------------------------- ### Create a Voltstack Site Resource Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_voltstack_site.md Example HCL configuration for creating a voltstack_site resource. Ensure one argument from each mutually exclusive list (e.g., default_blocked_services or blocked_services) is set as required. ```hcl resource "volterra_voltstack_site" "example" { name = "acmecorp-web" namespace = "staging" // One of the arguments from this list "blocked_services default_blocked_services" must be set default_blocked_services = true // One of the arguments from this list "bond_device_list no_bond_devices" must be set no_bond_devices = true // One of the arguments from this list "disable_gpu enable_gpu enable_vgpu" must be set disable_gpu = true // One of the arguments from this list "k8s_cluster no_k8s_cluster" must be set no_k8s_cluster = true // One of the arguments from this list "log_receiver logs_streaming_disabled" must be set logs_streaming_disabled = true master_node_configuration { name = "master-0" public_ip = "192.168.0.156" } // One of the arguments from this list "custom_network_config default_network_config" must be set default_network_config = true // One of the arguments from this list "default_sriov_interface sriov_interfaces" must be set sriov_interfaces { sriov_interface { interface_name = "eth0" number_of_vfio_vfs = "2" number_of_vfs = "3" } } // One of the arguments from this list "custom_storage_config default_storage_config" must be set default_storage_config = true // One of the arguments from this list "allow_all_usb deny_all_usb usb_policy" must be set deny_all_usb = true volterra_certified_hw = ["isv-8000-series-voltstack-combo"] } ``` -------------------------------- ### volterra_modify_site Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_modify_site.md This example demonstrates how to use the volterra_modify_site resource to update a site's name and labels. Ensure the name follows DNS-1035 format and labels are correctly defined. ```hcl resource "volterra_modify_site" "example" { name = "site1" labels = { "ves.io/fleet" = "fleet-car" } } ``` -------------------------------- ### volterra_rate_limiter Resource Configuration Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_rate_limiter.md Example of how to configure a Volterra rate_limiter resource with basic settings. ```APIDOC ## volterra_rate_limiter Resource ### Description The Rate Limiter allows CRUD of Rate Limiter resource on Volterra SaaS. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body * **name** (String) - Required - The value of name has to follow DNS-1035 format. * **namespace** (String) - Optional - Must be a DNS_LABEL format. For a namespace object itself, namespace value will be "". * **annotations** (String) - Optional - queryable and should be preserved when modifying objects. * **description** (String) - Optional - Human readable description for the object. * **disable** (Bool) - Optional - A value of true will administratively disable the object. * **labels** (String) - Optional - by selector expression. * **limits** (Object) - Required - A list of RateLimitValues that specifies the total number of allowed requests for each specified period. See [Limits](#limits) below for details. * **disabled** (Bool) - Optional - x-displayName: "Disabled" * **action_block** (Object) - Optional - Blocks the user for a specified duration of time. See [Action Choice Action Block](#action-choice-action-block) below for details. * **leaky_bucket** (Object) - Optional - Leaky-Bucket is the default rate limiter algorithm for F5. See [Algorithm Leaky Bucket](#algorithm-leaky-bucket) below for details. * **token_bucket** (Object) - Optional - Token-Bucket is a rate limiter algorithm that is stricter with enforcing limits. See [Algorithm Token Bucket](#algorithm-token-bucket) below for details. * **burst_multiplier** (Int) - Optional - The maximum burst of requests to accommodate, expressed as a multiple of the rate. * **period_multiplier** (Int) - Optional - This setting, combined with Per Period units, provides a duration. * **total_number** (Int) - Required - The total number of allowed requests per rate-limiting period. * **unit** (String) - Required - Unit for the period per which the rate limit is applied. * **user_identification** (Object) - Optional - The rules in the user_identification object are evaluated to determine the user identifier to be rate limited. See [ref](#ref) below for details. ### Request Example ```hcl resource "volterra_rate_limiter" "example" { name = "acmecorp-web" namespace = "staging" limits { disabled = true leaky_bucket {} burst_multiplier = 1 period_multiplier = 1 total_number = 1 unit = "unit" } } ``` ### Response #### Success Response (200) * **id** (String) - This is the id of the configured rate_limiter. #### Response Example ```json { "id": "" } ``` ### Limits A list of RateLimitValues that specifies the total number of allowed requests for each specified period. ###### One of the arguments from this list "action_block, disabled" can be set `action_block` - (Optional) Blocks the user for a specified duration of time. See [Action Choice Action Block](#action-choice-action-block) below for details. `disabled` - (Optional) x-displayName: "Disabled" (Bool). ###### One of the arguments from this list "leaky_bucket, token_bucket" can be set `leaky_bucket` - (Optional) Leaky-Bucket is the default rate limiter algorithm for F5. See [Algorithm Leaky Bucket](#algorithm-leaky-bucket) below for details. `token_bucket` - (Optional) Token-Bucket is a rate limiter algorithm that is stricter with enforcing limits. See [Algorithm Token Bucket](#algorithm-token-bucket) below for details. `burst_multiplier` - (Optional) The maximum burst of requests to accommodate, expressed as a multiple of the rate. (Int). `period_multiplier` - (Optional) This setting, combined with Per Period units, provides a duration (Int). `total_number` - (Required) The total number of allowed requests per rate-limiting period. (Int). `unit` - (Required) Unit for the period per which the rate limit is applied. (String). ### Action Choice Action Block Blocks the user for a specified duration of time. ###### One of the arguments from this list "hours, minutes, seconds" can be set `hours` - (Optional) User block mitigation time in Hours. See [Block Duration Choice Hours](#block-duration-choice-hours) below for details. `minutes` - (Optional) User block mitigation time in Minutes. See [Block Duration Choice Minutes](#block-duration-choice-minutes) below for details. `seconds` - (Optional) User block mitigation time in Seconds. See [Block Duration Choice Seconds](#block-duration-choice-seconds) below for details. ### Action Choice Disabled x-displayName: "Disabled". ### Algorithm Leaky Bucket Leaky-Bucket is the default rate limiter algorithm for F5. ### Algorithm Token Bucket Token-Bucket is a rate limiter algorithm that is stricter with enforcing limits. ### Block Duration Choice Hours User block mitigation time in Hours. `duration` - (Optional) x-displayName: "Duration" (Int). ### Block Duration Choice Minutes User block mitigation time in Minutes. `duration` - (Optional) x-displayName: "Duration" (Int). ### Block Duration Choice Seconds User block mitigation time in Seconds. `duration` - (Optional) x-displayName: "Duration" (Int). ### Ref Reference to another volterra object is shown like below `name` - (Required) then name will hold the referred object's(e.g. route's) name. (String). `namespace` - (Optional) then namespace will hold the referred object's(e.g. route's) namespace. (String). `tenant` - (Optional) then tenant will hold the referred object's(e.g. route's) tenant. (String). ``` -------------------------------- ### Create Volterra ZTNA Application Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_ztna_application.md Example of creating a ZTNA application resource with basic configuration. Ensure 'transport_type' is correctly specified. ```hcl resource "volterra_ztna_application" "example" { name = "acmecorp-web" namespace = "staging" transport_type = ["transport_type"] } ``` -------------------------------- ### Create and Apply Active Service Policies Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_active_service_policies.md This example demonstrates creating a namespace, defining a service policy, and then applying that service policy as active for the namespace. Ensure the service policy is created before the active service policies resource. ```hcl resource "volterra_namespace" "system" { name = "staging" } resource "volterra_service_policy" "allow_all" { name = "allow-all-test" namespace = volterra_namespace.system.name algo = "FIRST_MATCH" any_server = true simple_rules { action = "ALLOW" waf_action { none = true waf_in_monitoring_mode = false waf_skip_processing = false } } allow_all_requests = true deny_all_requests = false } resource "volterra_active_service_policies" "active_staging" { depends_on = [volterra_service_policy.allow_all] namespace = volterra_namespace.system.name policies { name = "allow-all-test" namespace = volterra_namespace.system.name tenant = volterra_namespace.system.tenant_name } } ``` -------------------------------- ### Volterra Workload Resource Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_workload.md Example of how to define and configure a `volterra_workload` resource in Terraform. ```APIDOC ## Resource volterra_workload ### Description The Workload allows CRUD of Workload resource on Volterra SaaS. ~> **Note:** Please refer to [Workload API docs](https://docs.cloud.f5.com/docs-v2/api/views-workload) to learn more ### Example Usage ```hcl resource "volterra_workload" "example" { name = "acmecorp-web" namespace = "staging" // One of the arguments from this list "job service simple_service stateful_service" must be set simple_service { // One of the arguments from this list "do_not_advertise service_port simple_advertise" must be set do_not_advertise = true configuration { parameters { // One of the arguments from this list "env_var file" must be set file { data = "value" mount { mode = "mode" mount_path = "value" sub_path = "value" } name = "value" volume_name = "value" } } } container { args = ["value"] command = ["value"] // One of the arguments from this list "custom_flavor default_flavor flavor" can be set flavor = "flavor" image { name = "quay.io/etcd:0.13" pull_policy = "pull_policy" // One of the arguments from this list "container_registry public" must be set public = true } init_container = true liveness_check { // One of the arguments from this list "exec_health_check http_health_check tcp_health_check" must be set http_health_check { headers = { "key1" = "value1" } host_header = "one.volterra.com" path = "/" port { // One of the arguments from this list "name num" must be set num = "num" } } healthy_threshold = "2" initial_delay = "30" interval = "10" timeout = "3" unhealthy_threshold = "5" } name = "value" readiness_check { // One of the arguments from this list "exec_health_check http_health_check tcp_health_check" must be set http_health_check { headers = { "key1" = "value1" } host_header = "one.volterra.com" path = "/" port { // One of the arguments from this list "name num" must be set num = "num" } } healthy_threshold = "2" initial_delay = "30" interval = "10" timeout = "3" unhealthy_threshold = "5" } } // One of the arguments from this list "disabled enabled" must be set disabled = true scale_to_zero = true } } ``` ``` -------------------------------- ### volterra_cloud_link Resource Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_cloud_link.md Example of how to define a volterra_cloud_link resource in Terraform, including AWS-specific configurations. ```APIDOC ## Resource: volterra_cloud_link ### Description The Cloud Link allows CRUD of Cloud Link resource on Volterra SaaS. ### Method Not Applicable (Terraform Resource) ### Endpoint Not Applicable (Terraform Resource) ### Parameters #### Path Parameters None #### Query Parameters None #### Request Body None (Terraform configuration) ### Terraform Configuration Example ```hcl resource "volterra_cloud_link" "example" { name = "acmecorp-web" namespace = "staging" # One of the arguments from this list "aws azure gcp" must be set aws { aws_cred { name = "test1" namespace = "staging" tenant = "acmecorp" } # One of the arguments from this list "byoc f5xc_managed" must be set byoc { connections { auth_key { blindfold_secret_info_internal { decryption_provider = "value" location = "string:///U2VjcmV0SW5mb3JtYXRpb24=" store_provider = "value" } secret_encoding_type = "secret_encoding_type" # One of the arguments from this list "blindfold_secret_info clear_secret_info vault_secret_info wingman_secret_info" must be set clear_secret_info { provider = "box-provider" url = "string:///U2VjcmV0SW5mb3JtYXRpb24=" } } bgp_asn = "64512" connection_id = "dxcon-a2h48678" coordinates { latitude = "10.0" longitude = "20.0" } enable_sitelink = true # One of the arguments from this list "ipv4 ipv6" must be set ipv4 { aws_router_peer_address = "10.1.0.0/31" router_peer_address = "10.1.0.0/31" } jumbo_mtu = true metadata { description = "Virtual Host for acmecorp website" disable = true name = "acmecorp-web" } region = "us-east-1" # One of the arguments from this list "system_generated_name user_assigned_name" can be set user_assigned_name = "user_assigned_name" tags = { "key1" = "value1" } virtual_interface_type = "virtual_interface_type" vlan = "700" } } # One of the arguments from this list "auto custom_asn" must be set auto = true } # One of the arguments from this list "disabled enabled" must be set disabled = true } ``` ### Argument Reference #### Metadata Argument Reference - `annotations` (Optional) queryable and should be preserved when modifying objects. (`String`). - `description` (Optional) Human readable description for the object (`String`). - `disable` (Optional) A value of true will administratively disable the object (`Bool`). - `labels` (Optional) by selector expression (`String`). - `name` (Required) The value of name has to follow DNS-1035 format. (`String`). - `namespace` (Optional) Must be a DNS_LABEL format. For a namespace object itself, namespace value will be "" (`String`). #### Spec Argument Reference ###### One of the arguments from this list "aws, azure, gcp" must be set - `aws` (Optional) CloudLink for AWS Cloud. See [Cloud Provider Aws ](#cloud-provider-aws) below for details. - `azure` (Optional) CloudLink for Azure Cloud. See [Cloud Provider Azure ](#cloud-provider-azure) below for details.(Deprecated) - `gcp` (Optional) CloudLink for Google Cloud Platform. See [Cloud Provider Gcp ](#cloud-provider-gcp) below for details. ###### One of the arguments from this list "disabled, enabled" must be set - `disabled` (Optional) CloudLink connection to RE Site is disabled (`Bool`). - `enabled` (Optional) CloudLink connection to RE Site is enabled. See [Enable Connection To Re Choice Enabled ](#enable-connection-to-re-choice-enabled) below for details. ### Auth Key Blindfold Secret Info Internal Blindfold Secret Internal is used for the putting re-encrypted blindfold secret. - `decryption_provider` (Optional) Name of the Secret Management Access object that contains information about the backend Secret Management service. (`String`). - `location` (Required) Or it could be a path if the store provider is an http/https location (`String`). - `store_provider` (Optional) This field needs to be provided only if the url scheme is not string:/// (`String`). ``` -------------------------------- ### volterra_tcp_loadbalancer Resource Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_tcp_loadbalancer.md Example usage of the `volterra_tcp_loadbalancer` resource in Terraform, demonstrating various configuration options. ```APIDOC ## Resource volterra_tcp_loadbalancer ### Description The Tcp Loadbalancer allows CRUD of Tcp Loadbalancer resource on Volterra SaaS. ~> **Note:** Please refer to [Tcp Loadbalancer API docs](https://docs.cloud.f5.com/docs-v2/api/views-tcp-loadbalancer) to learn more ### Example Usage ```hcl resource "volterra_tcp_loadbalancer" "example" { name = "acmecorp-web" namespace = "staging" # One of the arguments from this list "advertise_custom advertise_on_public advertise_on_public_default_vip do_not_advertise" must be set do_not_advertise = true # One of the arguments from this list "do_not_retract_cluster retract_cluster" must be set retract_cluster = true # One of the arguments from this list "hash_policy_choice_least_active hash_policy_choice_random hash_policy_choice_round_robin hash_policy_choice_source_ip_stickiness" must be set hash_policy_choice_round_robin = true # One of the arguments from this list "tcp tls_tcp tls_tcp_auto_cert" must be set tcp = true # One of the arguments from this list "listen_port port_ranges" must be set listen_port = "0" # One of the arguments from this list "active_service_policies no_service_policies service_policies_from_namespace" must be set service_policies_from_namespace = true # One of the arguments from this list "default_lb_with_sni no_sni sni" must be set no_sni = true } ``` ### Argument Reference #### Metadata Argument Reference `annotations` - (Optional) queryable and should be preserved when modifying objects. (`String`). `description` - (Optional) Human readable description for the object (`String`). `disable` - (Optional) A value of true will administratively disable the object (`Bool`). `labels` - (Optional) by selector expression (`String`). `name` - (Required) The value of name has to follow DNS-1035 format. (`String`). `namespace` - (Optional) Must be a DNS_LABEL format. For a namespace object itself, namespace value will be "" (`String`). #### Spec Argument Reference ###### One of the arguments from this list "advertise_custom, advertise_on_public, advertise_on_public_default_vip, do_not_advertise" must be set `advertise_custom` - (Optional) Advertise this VIP on specific sites. See [Advertise Choice Advertise Custom ](#advertise-choice-advertise-custom) below for details. `advertise_on_public` - (Optional) Advertise this load balancer on public network. See [Advertise Choice Advertise On Public ](#advertise-choice-advertise-on-public) below for details. `advertise_on_public_default_vip` - (Optional) Advertise this load balancer on public network with default VIP (`Bool`). `do_not_advertise` - (Optional) Do not advertise this load balancer (`Bool`). ###### One of the arguments from this list "do_not_retract_cluster, retract_cluster" must be set `do_not_retract_cluster` - (Optional) configuration. (`Bool`). `retract_cluster` - (Optional) for route (`Bool`). `dns_volterra_managed` - (Optional) This requires the domain to be delegated to F5XC using the Delegated Domain feature. (`Bool`). `domains` - (Optional) Domains also indicate the list of names for which DNS resolution will be automatically resolved to IP addresses by the system. (`List of String`). ###### One of the arguments from this list "hash_policy_choice_least_active, hash_policy_choice_random, hash_policy_choice_round_robin, hash_policy_choice_source_ip_stickiness" must be set `hash_policy_choice_least_active` - (Optional) Connections are sent to origin server that has least active connections (`Bool`). `hash_policy_choice_random` - (Optional) Connections are sent to all eligible origin servers in random fashion (`Bool`). `hash_policy_choice_round_robin` - (Optional) Connections are sent to all eligible origin servers in round robin fashion (`Bool`). `hash_policy_choice_source_ip_stickiness` - (Optional) Connections are sent to all eligible origin servers using hash of source ip. Consistent hashing algorithm, ring hash, is used to select origin server (`Bool`). `idle_timeout` - (Optional) The amount of time that a stream can exist without upstream or downstream activity, in milliseconds. (`Int`). ``` -------------------------------- ### Create Volterra Virtual Host Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_virtual_host.md Use this configuration to create a virtual host resource. Ensure that one of the challenge arguments (captcha_challenge, js_challenge, no_challenge) and one of the request limit arguments (max_requests_per_connection, no_request_limit_per_connection) are set. ```hcl resource "volterra_virtual_host" "example" { name = "acmecorp-web" namespace = "staging" // One of the arguments from this list "captcha_challenge js_challenge no_challenge" must be set no_challenge = true // One of the arguments from this list "max_requests_per_connection no_request_limit_per_connection" must be set no_request_limit_per_connection = true } ``` -------------------------------- ### volterra_k8s_pod_security_policy Resource Example Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_k8s_pod_security_policy.md Example usage of the `volterra_k8s_pod_security_policy` resource in Terraform, demonstrating how to define a Pod Security Policy with various specifications. ```APIDOC ## Resource: volterra_k8s_pod_security_policy ### Description The K8s Pod Security Policy allows CRUD of K8s Pod Security Policy resource on Volterra SaaS. ### Example Usage ```hcl resource "volterra_k8s_pod_security_policy" "example" { name = "acmecorp-web" namespace = "staging" psp_spec { allow_privilege_escalation = true no_allowed_capabilities = true allowed_csi_drivers = ["value"] allowed_flex_volumes = ["value"] allowed_host_paths { path_prefix = "value" read_only = true } allowed_proc_mounts = ["value"] allowed_unsafe_sysctls = ["value"] default_allow_privilege_escalation = true default_capabilities { capabilities = ["value"] } no_drop_capabilities = true forbidden_sysctls = ["value"] no_fs_groups = true run_as_group { id_ranges { max_id = "3000" min_id = "2000" } rule = "MustRunAs" } host_ipc = true host_network = true host_pid = true host_port_ranges = "80,443,8080-8191,9080" privileged = true read_only_root_filesystem = true no_runtime_class = true no_se_linux_options = true no_supplemental_groups = true no_run_as_user = true volumes = ["gitRepo"] } } ``` ### Argument Reference #### Metadata Argument Reference - `annotations` (Optional, String) - Queryable and should be preserved when modifying objects. - `description` (Optional, String) - Human readable description for the object. - `disable` (Optional, Bool) - A value of true will administratively disable the object. - `labels` (Optional, String) - By selector expression. - `name` (Required, String) - The value of name has to follow DNS-1035 format. - `namespace` (Optional, String) - Must be a DNS_LABEL format. For a namespace object itself, namespace value will be "". #### Spec Argument Reference One of the arguments from this list "psp_spec, yaml" must be set: - `psp_spec` (Optional, Object) - Form based pod security specification. See [Config Method Choice Psp Spec](#config-method-choice-psp-spec) below for details. - `yaml` (Optional, String) - K8s YAML for Pod Security Policy. ### Allowed Capabilities Choice Allowed Capabilities Allowed Capabilities to add pod spec in addition to default capabilities. - `capabilities` (Required, String) - List of capabilities that docker container has. ### Allowed Capabilities Choice No Allowed Capabilities Add capabilities is not allowed in POD. ### Config Method Choice Psp Spec Form based pod security specification. - `allow_privilege_escalation` (Optional, Bool) - Pod can request to privilege escalation. ``` -------------------------------- ### Software Settings Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_securemesh_site_v2.md Configure operating system and F5XC software versions for the site. ```APIDOC ## Software Settings ### Operating System Version Select the Operating System version for the site. By default, latest available Operating System version will be used. One of the arguments from this list "default_os_version, operating_system_version" must be set: * `default_os_version` - (Optional) Will assign latest available OS version (`Bool`). * `operating_system_version` - (Optional) Specify a OS version to be used e.g. 9.2024.6. (`String`). ### F5XC Software Version Refer to release notes to find required released SW versions. One of the arguments from this list "default_sw_version, volterra_software_version" must be set: * `default_sw_version` - (Optional) Will assign latest available F5XC Software Version (`Bool`). * `volterra_software_version` - (Optional) Specify a F5XC Software Version to be used e.g. crt-20210329-1002. (`String`). ``` -------------------------------- ### Get Volterra Address Allocator Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/data-sources/volterra_address_allocator.md Use this data source to get the mode and allocation map of an address allocator. Specify the name and namespace of the allocator. ```hcl data "volterra_address_allocator" "example" { name = "aalloc-1" namespace = "system" } ``` -------------------------------- ### Configure Fast ACL for Internet VIPs Source: https://github.com/volterraedge/terraform-provider-volterra/blob/main/docs/resources/volterra_fast_acl_for_internet_vips.md This example demonstrates how to configure a Fast ACL for Internet VIPs. It includes the creation of a policer, a protocol policer, and a Fast ACL resource, and then associates the Fast ACL with Internet VIPs using the volterra_fast_acl_for_internet_vips resource. Ensure that the namespace and tenant are correctly specified. ```hcl data "volterra_namespace" "system" { name = "system" } resource "volterra_policer" "this" { name = "test-policer" namespace = "system" policer_type = "POLICER_SINGLE_RATE_TWO_COLOR" committed_information_rate = 10000 burst_size = 5000 policer_mode = "POLICER_MODE_SHARED" } resource "volterra_protocol_policer" "this" { name = "test-proto-policer" namespace = "system" protocol_policer { policer { name = volterra_policer.this.name namespace = "system" } protocol { tcp { flags = ["ALL_TCP_FLAGS"] } } } } resource "volterra_fast_acl" "this" { name = facl-test" namespace = "system" re_acl { all_public_vips = true fast_acl_rules { action { simple_action = "DENY" } metadata { name = "deny_certain_ip" } prefix { prefix = ["1.1.1.1/32"] } } } } resource "volterra_fast_acl_for_internet_vips" "this" { depends_on = [volterra_fast_acl.this] fast_acls { name = "%[1]s-test" tenant = data.volterra_namespace.system.tenant_name } } ```