### Example Usage of edgecenter_instance Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/instance.md This example demonstrates how to use the edgecenter_instance data source to retrieve information about a virtual machine. It requires setting up the provider and referencing project and region data sources. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_instance" "vm" { name = "test-vm" region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_instance.vm } ``` -------------------------------- ### Retrieve all flavors Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/flavor.md This example shows how to retrieve all available flavors for a given region and project. The `include_disabled`, `exclude_windows`, and `include_prices` parameters are left to their default values. ```APIDOC ## Data Source: edgecenter_flavor ### Description Represent flavors ### Schema #### Optional - `exclude_windows` (Boolean) Set to true to exclude flavors dedicated for Windows images. - `include_disabled` (Boolean) Set to true to include disabled flavors. - `include_prices` (Boolean) Set to true if the response should include flavor prices. Default is true. - `project_id` (Number) The uuid of the project. Either 'project_id' or 'project_name' must be specified. - `project_name` (String) The name of the project. Either 'project_id' or 'project_name' must be specified. - `region_id` (Number) The uuid of the region. Either 'region_id' or 'region_name' must be specified. - `region_name` (String) The name of the region. Either 'region_id' or 'region_name' must be specified. - `type` (String) Type of flavors to return: instance, baremetal, or load_balancer. If not specified, all flavors are returned. #### Read-Only - `flavors` (List of Object) A list of available flavors. (see [below for nested schema](#nestedatt--flavors)) - `id` (String) The ID of this resource. ### Nested Schema for `flavors` Read-Only: - `currency_code` (String) - `disabled` (Boolean) - `flavor_id` (String) - `flavor_name` (String) - `hardware_description` (Map of String) - `price_per_hour` (Number) - `price_per_month` (Number) - `ram` (Number) - `resource_class` (String) - `type` (String) - `vcpus` (Number) ### Example Usage ```terraform data "edgecenter_flavor" "allFlavors" { region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } ``` ``` -------------------------------- ### Example Usage of edgecenter_k8s_client_config Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/k8s_client_config.md This example shows how to configure the edgecenter provider and use the deprecated edgecenter_k8s_client_config data source to retrieve Kubernetes cluster configuration. Ensure your permanent API token is correctly set. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_k8s_client_config" "cfg" { project_id = 1 region_id = 1 cluster_id = "dc3a3ea9-86ae-47ad-a8e8-79df0ce04839" } ``` -------------------------------- ### Example Usage of Availability Zone Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/availability_zone.md This example demonstrates how to configure the edgecenter provider, fetch region information, and then use the availability zone data source to retrieve a list of availability zones for that region. The output displays the list of availability zones. ```terraform provider "edgecenter" { permanent_api_token = "29422$4ceea35....1513a61c87c68809a4" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_availability_zone" "region_az" { region_id = data.edgecenter_region.rg.id } output "availability_zones" { value = data.edgecenter_availability_zone.region_az.availability_zones } ``` -------------------------------- ### Example Usage of edgecenter_lblistener Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/lblistener.md This example demonstrates how to use the edgecenter_lblistener data source to retrieve information about a specific load balancer listener. It requires setting up the edgecenter provider and defining data sources for project and region. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_lblistener" "l" { name = "test-listener" loadbalancer_id = "59b2eabc-c0a8-4545-8081-979bd963c6ab" //optional region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_lblistener.l } ``` -------------------------------- ### Example Usage of edgecenter_instance_port_security Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/instance_port_security.md This example demonstrates how to configure the EdgeCenter provider and use the edgecenter_instance_port_security data source to fetch port security details. It requires specifying the region, project, instance, and port IDs. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_instance_port_security" "port_security" { region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id port_id = "073947f8-8589-4104-bdff-2cedbe56239f" instance_id = "4f81e8f8-d7b8-45a4-93fd-609ad2n670f0" } output "view" { value = data.edgecenter_instance_port_security.port_security } ``` -------------------------------- ### edgecenter_cdn_origingroup Resource Example Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/cdn_origingroup.md Example of how to define and configure an origin group for your CDN. ```APIDOC ## edgecenter_cdn_origingroup Resource ### Description Represent origin group ### Schema #### Required - `consistent_balancing` (Boolean) - Consistent load balancing (consistent hashing) for the source group - `name` (String) - Add the source group name. - `origin` (Block Set, Min: 1) - Add information about your sources. (see [below for nested schema](#nestedblock--origin)) - `use_next` (Boolean) - Specify whether or not the CDN will use the next source in the list if your source responds with an HTTP status code of 4XX or 5XX. #### Optional - `authorization` (Block Set, Max: 1) - Add information about authorization. (see [below for nested schema](#nestedblock--authorization)) #### Read-Only - `id` (String) - The ID of this resource. ### Nested Schema for `origin` #### Required - `source` (String) - Enter the source’s domain name or the IP address with a custom port (if any). #### Optional - `backup` (Boolean) - If set to "true", this source will not be used until one of the active sources becomes unavailable. - `enabled` (Boolean) - Enable or disable the source. The source group must contain at least one enabled source. #### Read-Only - `id` (Number) ### Nested Schema for `authorization` #### Required - `access_key_id` (String) - Specify the access key ID in 20 alphanumeric characters. - `auth_type` (String) - The type of authorization on the source. It can take two values - aws_signature_v2 or aws_signature_v4. - `bucket_name` (String) - Specify the bucket name. The name is restricted to 255 symbols and may include alphanumeric characters, slashes, pluses, hyphens, and underscores. - `secret_key` (String) - Specify the secret access key. The value must be between 32 and 40 characters and may include alphanumeric characters, slashes, pluses, hyphens, and underscores. #### Optional - `addressing_style` (String) - The addressing style for S3 requests. Supported values: path, virtual. - `aws_region` (String) - The AWS region name.The name is restricted to 255 symbols and can contain lowercase latin letters (a-z), digits (0-9), and hyphens. Region name cannot start or end with a hyphen and cannot contain double hyphens. ``` -------------------------------- ### Example Usage of edgecenter_network Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/network.md This example demonstrates how to use the edgecenter_network data source to retrieve information about a specific network. It requires the provider configuration and details of the project and region to which the network belongs. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_network" "tnw" { name = "example" region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_network.tnw } ``` -------------------------------- ### Example Usage of edgecenter_lb_l7rule Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/lb_l7rule.md This example demonstrates how to use the edgecenter_lb_l7rule data source to retrieve information about an L7 rule. It requires provider configuration and data sources for project and region. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_lb_l7rule" "rule" { id = "59b2eabc-c0a8-4545-8081-979bd963c6ab" l7policy_id = "76r2eabc-c0a8-4545-8081-979bd963c6fgh" region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_lb_l7rule.rule } ``` -------------------------------- ### MKaaS Cluster Resource and Data Source Example Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/mkaas_cluster.md This example demonstrates how to create an MKaaS cluster using the `edgecenter_mkaas_cluster` resource and then query its details using the `edgecenter_mkaas_cluster` data source. It includes the necessary provider configuration, local variables, and dependent resources like network, subnet, and keypair. The output block shows how to access the queried cluster data. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } locals { project_id = 1 region_id = 1 } resource "edgecenter_network" "network" { name = "network_example" type = "vxlan" region_id = local.region_id project_id = local.project_id } resource "edgecenter_subnet" "subnet" { name = "subnet_example" cidr = "192.168.10.0/24" network_id = edgecenter_network.network.id dns_nameservers = ["8.8.4.4", "1.1.1.1"] enable_dhcp = true host_routes { destination = "10.0.3.0/24" nexthop = "10.0.0.13" } host_routes { destination = "10.0.4.0/24" nexthop = "10.0.0.14" } allocation_pools { start = "192.168.10.20" end = "192.168.10.50" } gateway_ip = "192.168.10.1" region_id = local.region_id project_id = local.project_id } resource "edgecenter_keypair" "kp" { project_id = local.project_id public_key = "your public key here" sshkey_name = "test" } resource "edgecenter_mkaas_cluster" "cluster" { name = "my-cluster01" project_id = local.project_id region_id = local.region_id ssh_keypair_name = edgecenter_keypair.kp.sshkey_name network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet.id publish_kube_api_to_internet = true control_plane { flavor = "mkaas-master-g3-standard-2-4" node_count = 1 volume_size = 30 volume_type = "ssd_hiiops" version = "v1.31.0" } } data "edgecenter_mkaas_cluster" "cluster" { project_id = local.project_id region_id = local.region_id id = edgecenter_mkaas_cluster.cluster.id depends_on = [edgecenter_mkaas_cluster.cluster] } output "view" { value = data.edgecenter_mkaas_cluster.cluster } ``` -------------------------------- ### Import custom certificate Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/protection_resource_certificate.md This example shows how to import an existing custom SSL certificate resource. Note that for 'custom' type certificates, the private key is not imported. ```shell # import using format # note: for "custom" type certificate and private key are not imported terraform import edgecenter_protection_resource_certificate.protection_custom_cert 12345 ``` -------------------------------- ### Example Usage of edgecenter_lb_l7policy Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/lb_l7policy.md This example demonstrates how to use the edgecenter_lb_l7policy data source to retrieve an L7 policy by its ID, region, and project. It also shows how to output the retrieved policy details. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_lb_l7policy" "l" { id = "59b2eabc-c0a8-4545-8081-979bd963c6ab" region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_lb_l7policy.l } ``` -------------------------------- ### Example Usage of edgecenter_k8s Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/k8s.md This example shows how to configure the edgecenter provider and use the edgecenter_k8s data source to retrieve information about a Kubernetes cluster. Ensure the provider is configured with a valid permanent API token. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_k8s" "cluster" { project_id = 1 region_id = 1 cluster_id = "dc3a3ea9-86ae-47ad-a8e8-79df0ce04839" } ``` -------------------------------- ### Example Usage of edgecenter_securitygroup Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/securitygroup.md This example demonstrates how to configure the edgecenter provider and use the edgecenter_securitygroup data source to retrieve information about a default security group. It requires project and region data sources to be defined first. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_securitygroup" "default" { name = "default" region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_securitygroup.default } ``` -------------------------------- ### Retrieve baremetal flavors Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/flavor.md This example shows how to filter flavors to only include those of type 'baremetal'. This is useful when you specifically need baremetal server configurations. ```APIDOC ## Data Source: edgecenter_flavor ### Description Represent flavors ### Schema #### Optional - `exclude_windows` (Boolean) Set to true to exclude flavors dedicated for Windows images. - `include_disabled` (Boolean) Set to true to include disabled flavors. - `include_prices` (Boolean) Set to true if the response should include flavor prices. Default is true. - `project_id` (Number) The uuid of the project. Either 'project_id' or 'project_name' must be specified. - `project_name` (String) The name of the project. Either 'project_id' or 'project_name' must be specified. - `region_id` (Number) The uuid of the region. Either 'region_id' or 'region_name' must be specified. - `region_name` (String) The name of the region. Either 'region_id' or 'region_name' must be specified. - `type` (String) Type of flavors to return: instance, baremetal, or load_balancer. If not specified, all flavors are returned. #### Read-Only - `flavors` (List of Object) A list of available flavors. (see [below for nested schema](#nestedatt--flavors)) - `id` (String) The ID of this resource. ### Nested Schema for `flavors` Read-Only: - `currency_code` (String) - `disabled` (Boolean) - `flavor_id` (String) - `flavor_name` (String) - `hardware_description` (Map of String) - `price_per_hour` (Number) - `price_per_month` (Number) - `ram` (Number) - `resource_class` (String) - `type` (String) - `vcpus` (Number) ### Example Usage ```terraform data "edgecenter_flavor" "bmFlavors" { region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id type = "baremetal" } ``` ``` -------------------------------- ### Example Usage of edgecenter_loadbalancerv2 Data Source Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/loadbalancerv2.md This example demonstrates how to use the edgecenter_loadbalancerv2 data source to retrieve load balancer information. It requires the edgecenter provider to be configured with an API token and uses other data sources to specify the project and region. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_project" "pr" { name = "test" } data "edgecenter_region" "rg" { name = "ED-10 Preprod" } data "edgecenter_loadbalancerv2" "lb" { name = "test-lb" region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id } output "view" { value = data.edgecenter_loadbalancerv2.lb } ``` -------------------------------- ### Create a CDN Resource Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/cdn_resource.md This example demonstrates how to create a CDN resource with a custom CNAME, link it to an origin group, and configure various options like caching, compression, and SSL. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } resource "edgecenter_cdn_origingroup" "origin_group_1" { name = "origin_group_1" use_next = true origin { source = "example.com" enabled = true } origin { source = "mirror.example.com" enabled = true backup = true } authorization { access_key_id = "test_access_key_id" auth_type = "aws_signature_v2" bucket_name = "test_bucket_name" secret_key = "keywqueiuqwiueiqweqwiueiqwiueuiqw" } consistent_balancing = true } resource "edgecenter_cdn_resource" "cdn_example_com" { cname = "cdn.example.com" origin_group = edgecenter_cdn_origingroup.origin_group_1.id origin_protocol = "MATCH" secondary_hostnames = ["cdn2.example.com"] options { edge_cache_settings { default = "8d" } browser_cache_settings { value = "1d" } redirect_http_to_https { value = true } gzip_compression { enabled = true value = [ "application/x-font-ttf", "text/javascript", "image/svg+xml", "text/html", ] } cors { value = [ "*" ] } rewrite { body = "/(.*) /$1" } image_stack { quality = 80 avif_enabled = true webp_enabled = false png_lossless = true } tls_versions { enabled = true value = [ "TLSv1.2", ] } } } ``` -------------------------------- ### edgecenter_baremetal Resource Configuration Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/baremetal.md Example of how to configure a baremetal instance using the edgecenter Terraform provider. This includes basic instance details, network interfaces, and keypair configuration. ```APIDOC ## Resource: edgecenter_baremetal ### Description Represents a baremetal instance within the edgecenter platform. ### Schema #### Required - `flavor_id` (String): The ID of the flavor to use for the baremetal instance. - `interface` (Block List, Min: 1): Configuration for network interfaces. See [Nested Schema for interface](#nestedblock--interface) for details. #### Optional - `app_config` (Map of String): Application configuration for the instance. - `apptemplate_id` (String): The ID of the application template. - `image_id` (String): The ID of the image to use for the baremetal instance. - `keypair_name` (String): The name of the keypair to use for SSH access. - `last_updated` (String): The timestamp of the last update (use with update context). - `metadata` (Block List, Deprecated): Deprecated. Use `metadata_map` instead. - `metadata_map` (Map of String): A map containing metadata, such as tags. - `name` (String): The name of the baremetal instance. - `name_template` (String): A template for naming the instance. - `name_templates` (List of String, Deprecated): Deprecated. - `password` (String): The password for the baremetal instance. - `project_id` (Number): The UUID of the project. Either 'project_id' or 'project_name' must be specified. - `project_name` (String): The name of the project. Either 'project_id' or 'project_name' must be specified. - `region_id` (Number): The UUID of the region. Either 'region_id' or 'region_name' must be specified. - `region_name` (String): The name of the region. Either 'region_id' or 'region_name' must be specified. - `timeouts` (Block, Optional): Configuration for timeouts. See [Nested Schema for timeouts](#nestedblock--timeouts) for details. - `user_data` (String): User data to be passed to the instance. - `username` (String): The username for the baremetal instance. #### Read-Only - `addresses` (List of Object): Network addresses assigned to the instance. See [Nested Schema for addresses](#nestedatt--addresses) for details. - `flavor` (Map of String): Details of the flavor used by the instance. - `id` (String): The ID of the resource. - `status` (String): The current status of the baremetal instance. - `vm_state` (String): The virtual machine state of the instance. ### Nested Schema for `interface` #### Required - `type` (String): Available value is 'subnet', 'any_subnet', 'external', 'reserved_fixed_ip'. #### Optional - `existing_fip_id` (String): The ID of an existing floating IP. - `fip_source` (String): Source for the floating IP. - `ip_address` (String): The IP address to assign. - `is_parent` (Boolean): If not set, will be calculated after creation. Trunk interface always attached first. Cannot detach interface if `is_parent` is true. Fields affect only on creation. - `network_id` (String): Required if type is 'subnet' or 'any_subnet'. - `order` (Number): Order of attaching interface. Trunk interface always attached first. Fields affect only on creation. - `port_id` (String): Required if type is 'reserved_fixed_ip'. - `subnet_id` (String): Required if type is 'subnet'. ### Nested Schema for `metadata` #### Required - `key` (String): The metadata key. - `value` (String): The metadata value. ### Nested Schema for `timeouts` #### Optional - `create` (String): Timeout for resource creation. ### Nested Schema for `addresses` #### Read-Only - `net` (List of Object): Network details. ### Nested Schema for `addresses.net` #### Read-Only - `addr` (String): The IP address. - `type` (String): The type of network address (e.g., private, public). ### Import Import is supported using the following syntax: ```shell # import using :: format terraform import edgecenter_baremetal.instance1 1:6:447d2959-8ae0-4ca0-8d47-9f050a3637d7 ``` ``` -------------------------------- ### Create an edgecenter_lblistener Resource Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/lblistener.md This example demonstrates how to create a load balancer listener with TCP protocol, a specific port, and allowed CIDRs. It depends on an existing load balancer resource. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } resource "edgecenter_loadbalancerv2" "lb" { project_id = 1 region_id = 1 name = "test" flavor = "lb1-1-2" } resource "edgecenter_lblistener" "listener" { project_id = 1 region_id = 1 name = "test" protocol = "TCP" protocol_port = 36621 allowed_cidrs = ["127.0.0.0/24", "192.168.0.0/24"] loadbalancer_id = edgecenter_loadbalancerv2.lb.id } ``` -------------------------------- ### Initialize Project with Make Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/README.md Initialize the project for development using the 'make init' command. ```bash $ make init ``` -------------------------------- ### Create an Instance with Volumes and Interfaces Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/index.md Resource to create a virtual instance. Configure flavor, name, keypair, attached volumes, network interfaces, security groups, metadata, and configuration. ```terraform resource "edgecenter_instance" "instance" { flavor_id = "g1-standard-2-4" name = "test" keypair_name = edgecenter_keypair.kp.sshkey_name volume { source = "existing-volume" volume_id = edgecenter_volume.first_volume.id boot_index = 0 } interface { type = "subnet" network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet.id } interface { type = "subnet" network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet2.id } security_group { id = "66988147-f1b9-43b2-aaef-dee6d009b5b7" name = "default" } metadata { key = "some_key" value = "some_data" } configuration { key = "some_key" value = "some_data" } region_id = 1 project_id = 1 } ``` ```terraform resource "edgecenter_instance" "instance2" { flavor_id = "g1-standard-2-4" name = "test2" keypair_name = edgecenter_keypair.kp.sshkey_name volume { source = "existing-volume" volume_id = edgecenter_volume.second_volume.id boot_index = 0 } volume { source = "existing-volume" volume_id = edgecenter_volume.third_volume.id boot_index = 1 } interface { type = "subnet" network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet.id } security_group { id = "66988147-f1b9-43b2-aaef-dee6d009b5b7" name = "default" } metadata { key = "some_key" value = "some_data" } configuration { key = "some_key" value = "some_data" } region_id = 1 project_id = 1 } ``` -------------------------------- ### Advanced Flavor Retrieval with Options Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/flavor.md This example demonstrates fetching flavors with advanced filtering. It includes disabled flavors, explicitly includes prices, and excludes Windows-specific flavors. This is useful for comprehensive analysis or specific provisioning needs. ```terraform data "edgecenter_flavor" "fullDataFlavors" { region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id include_disabled = true exclude_windows = false include_prices = true } output "fullDataFlavors" { value = data.edgecenter_flavor.fullDataFlavors } ``` -------------------------------- ### Managing DNS Zone and Records with Terraform Variables Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/dns_zone_record.md This example demonstrates how to manage DNS zones and their records using Terraform, leveraging variables for domain names. It shows the creation of a zone and then adds multiple record sets, including A records with different IP addresses and a TXT record with geo-distance filtering. ```terraform provider "edgecenter" { permanent_api_token = "179$...............45b54d" } // // example0: managing zone and records by TF using variables // variable "example_domain0" { type = string default = "examplezone.com" } resource "edgecenter_dns_zone" "examplezone0" { name = var.example_domain0 } resource "edgecenter_dns_zone_record" "example_rrset0" { zone = edgecenter_dns_zone.examplezone0.name domain = edgecenter_dns_zone.examplezone0.name type = "A" ttl = 100 meta { } resource_record { content = "127.0.0.100" } resource_record { content = "127.0.0.200" // enabled = false } } ``` -------------------------------- ### edgecenter_k8s_pool Data Source Example Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/k8s_pool.md This example shows how to configure the edgecenter provider and use the edgecenter_k8s_pool data source to retrieve information about a specific Kubernetes pool. Ensure you have the correct permanent API token. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } data "edgecenter_k8s_pool" "pool" { project_id = 1 region_id = 1 cluster_id = "6bf878c1-1ce4-47c3-a39b-6b5f1d79bf25" pool_id = "dc3a3ea9-86ae-47ad-a8e8-79df0ce04839" } ``` -------------------------------- ### Create a CDN Rule with Various Options Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/cdn_rule.md This example demonstrates how to create a CDN rule with extensive options, including edge and browser caching, HTTP to HTTPS redirection, gzip compression, CORS settings, image optimization, and query string handling. It's useful for fine-tuning CDN behavior for specific file patterns. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } resource "edgecenter_cdn_rule" "cdn_example_com_rule_1" { resource_id = edgecenter_cdn_resource.cdn_example_com.id name = "All PNG images" rule = "/folder/images/*.svg" options { edge_cache_settings { default = "14d" } browser_cache_settings { value = "14d" } redirect_http_to_https { value = true } gzip_compression { enabled = true value = [ "text/html", "image/svg+xml", ] } cors { value = [ "*" ] } rewrite { body = "/(.*) /$1" } image_stack { quality = 80 avif_enabled = true webp_enabled = false png_lossless = true } ignore_query_string { value = true } } } ``` -------------------------------- ### Create an edgecenter instance with multiple volumes and a subnet interface Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/instance.md This example demonstrates how to create a cloud instance with two attached volumes and a network interface connected to a specific subnet. It also shows how to configure instance metadata and custom configurations. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } resource "edgecenter_network" "network" { name = "network_example" type = "vxlan" region_id = 1 project_id = 1 } resource "edgecenter_subnet" "subnet" { name = "subnet_example" cidr = "192.168.10.0/24" network_id = edgecenter_network.network.id dns_nameservers = ["8.8.4.4", "1.1.1.1"] host_routes { destination = "10.0.3.0/24" nexthop = "10.0.0.13" } gateway_ip = "192.168.10.1" region_id = 1 project_id = 1 } resource "edgecenter_volume" "first_volume" { name = "boot volume" type_name = "ssd_hiiops" size = 5 image_id = "f4ce3d30-e29c-4cfd-811f-46f383b6081f" region_id = 1 project_id = 1 } resource "edgecenter_volume" "second_volume" { name = "second volume" type_name = "ssd_hiiops" size = 5 region_id = 1 project_id = 1 } resource "edgecenter_instance" "instance" { flavor_id = "g1-standard-2-4" name = "test" volume { source = "existing-volume" volume_id = edgecenter_volume.first_volume.id boot_index = 0 } volume { source = "existing-volume" volume_id = edgecenter_volume.second_volume.id boot_index = 1 } interface { type = "subnet" network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet.id security_groups = ["d75db0b2-58f1-4a11-88c6-a932bb897310"] port_security_disabled = true } metadata_map = { some_key = "some_value" stage = "dev" } configuration { key = "some_key" value = "some_data" } region_id = 1 project_id = 1 } ``` -------------------------------- ### Create an InstanceV2 with Volumes and Interfaces Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/instanceV2.md Provisions a virtual machine instance specifying its flavor, name, boot and data volumes, network interfaces, metadata, and configuration. Requires pre-defined network, subnet, and volumes. ```terraform resource "edgecenter_instanceV2" "instance" { flavor_id = "g1-standard-2-4" name = "test" boot_volumes { volume_id = edgecenter_volume.first_volume.id boot_index = 0 } data_volumes { volume_id = edgecenter_volume.second_volume.id } interfaces { is_default = true type = "subnet" network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet.id } metadata = { some_key = "some_value" stage = "dev" } configuration { key = "some_key" value = "some_data" } region_id = var.region_id project_id = var.project_id } ``` -------------------------------- ### edgecenter_instanceV2 Source: https://context7.com/edge-center/terraform-provider-edgecenter/llms.txt Creates a virtual machine (cloud instance). This is the current recommended resource (replaces deprecated `edgecenter_instance`). Requires pre-created boot volumes and network interfaces. ```APIDOC ## Resource: edgecenter_instanceV2 Creates a virtual machine (cloud instance). This is the current recommended resource (replaces deprecated `edgecenter_instance`). Requires pre-created boot volumes and network interfaces. ```terraform resource "edgecenter_instanceV2" "app_server" { name = "app-server-01" flavor_id = "g1-standard-2-4" region_id = var.region_id project_id = var.project_id keypair_name = edgecenter_keypair.deployer.sshkey_name vm_state = "active" # "active" or "stopped" user_data = base64encode("#!/bin/bash\napt-get update -y") boot_volumes { volume_id = edgecenter_volume.boot_volume.id boot_index = 0 } data_volumes { volume_id = edgecenter_volume.data_volume.id } interfaces { is_default = true type = "subnet" network_id = edgecenter_network.network.id subnet_id = edgecenter_subnet.subnet.id } metadata = { env = "production" role = "app" } configuration { key = "gitlab_external_url" value = "https://gitlab.example.com" } } # Import: terraform import edgecenter_instanceV2.app_server 1:1:447d2959-8ae0-4ca0-8d47-9f050a3637d7 ``` ``` -------------------------------- ### Retrieve all flavors with specific options Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/data-sources/flavor.md This example demonstrates how to retrieve flavors while explicitly including disabled flavors, excluding Windows-specific flavors, and including pricing information. This provides a more comprehensive view of available resources. ```APIDOC ## Data Source: edgecenter_flavor ### Description Represent flavors ### Schema #### Optional - `exclude_windows` (Boolean) Set to true to exclude flavors dedicated for Windows images. - `include_disabled` (Boolean) Set to true to include disabled flavors. - `include_prices` (Boolean) Set to true if the response should include flavor prices. Default is true. - `project_id` (Number) The uuid of the project. Either 'project_id' or 'project_name' must be specified. - `project_name` (String) The name of the project. Either 'project_id' or 'project_name' must be specified. - `region_id` (Number) The uuid of the region. Either 'region_id' or 'region_name' must be specified. - `region_name` (String) The name of the region. Either 'region_id' or 'region_name' must be specified. - `type` (String) Type of flavors to return: instance, baremetal, or load_balancer. If not specified, all flavors are returned. #### Read-Only - `flavors` (List of Object) A list of available flavors. (see [below for nested schema](#nestedatt--flavors)) - `id` (String) The ID of this resource. ### Nested Schema for `flavors` Read-Only: - `currency_code` (String) - `disabled` (Boolean) - `flavor_id` (String) - `flavor_name` (String) - `hardware_description` (Map of String) - `price_per_hour` (Number) - `price_per_month` (Number) - `ram` (Number) - `resource_class` (String) - `type` (String) - `vcpus` (Number) ### Example Usage ```terraform data "edgecenter_flavor" "fullDataFlavors" { region_id = data.edgecenter_region.rg.id project_id = data.edgecenter_project.pr.id include_disabled = true exclude_windows = false include_prices = true } ``` ``` -------------------------------- ### Create an edgecenter router Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/router.md This example demonstrates how to create a router with a name, region, project, external gateway information, interfaces, and static routes. Ensure the provider is configured with your API token. ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } resource "edgecenter_router" "router" { name = "router_example" dynamic "external_gateway_info" { iterator = egi for_each = var.external_gateway_info content { type = egi.value.type network_id = egi.value.network_id } } dynamic "interfaces" { iterator = ifaces for_each = var.interfaces content { type = ifaces.value.type subnet_id = ifaces.value.subnet_id } } dynamic "routes" { iterator = rs for_each = var.routes content { destination = rs.value.destination nexthop = rs.value.nexthop } } region_id = 1 project_id = 1 } ``` -------------------------------- ### edgecenter_rmon_check_tcp Resource Configuration Source: https://github.com/edge-center/terraform-provider-edgecenter/blob/master/docs/resources/rmon_check_tcp.md Example of how to configure the edgecenter_rmon_check_tcp resource in Terraform. ```APIDOC ## edgecenter_rmon_check_tcp (Resource) ### Description This resource is used to configure TCP checks for monitoring network services. ### Schema #### Required - `enabled` (Boolean) - Enabled state of the Check TCP. - `entities` (List of Number) - List of entities where check must be created. - `ip` (String) - IP address or domain name for TCP check. - `name` (String) - Name of the Check TCP. - `place` (String) - Place scope for Check TCP. - `port` (Number) - Port for TCP check. - `priority` (String) - Where checks must be deployed. #### Optional - `check_group` (String) - Name of the check group for group TCP checks. - `check_timeout` (Number) - Answer timeout in seconds. - `description` (String) - Description of the Check TCP. - `email_channel_id` (Number) - Email channel ID (optional) - `interval` (Number) - Interval in seconds between checks. - `mm_channel_id` (Number) - Mattermost channel ID for alerts. - `pd_channel_id` (Number) - PagerDuty channel ID for alerts. - `retries` (Number) - Number of retries before check is marked down. - `runbook` (String) - Runbook URL for alerts. - `slack_channel_id` (Number) - Slack channel ID for alerts. - `telegram_channel_id` (Number) - Telegram channel ID for alerts. #### Read-Only - `id` (String) - The ID of this resource. ### Example Usage ```terraform provider "edgecenter" { permanent_api_token = "251$d3361.............1b35f26d8" } resource "edgecenter_rmon_check_tcp" "example" { name = "tcp-example" enabled = true place = "region" priority = "warning" entities = [10] ip = "example.com" port = 443 } ``` ```