# F5xc Salesdemos Xcsh Terraform Provider

> F5 XC Terraform Provider

- Skill: `tomevault-io/f5xc-salesdemos-xcsh-terraform-provider` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/f5xc-salesdemos-xcsh-terraform-provider`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/f5xc-salesdemos-xcsh-terraform-provider/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/f5xc-salesdemos-xcsh-terraform-provider

---


# F5 XC Terraform Provider

Every response MUST include a ```terraform code block. Output code first. Do not run terraform commands.

Provider block: terraform { required_providers { f5xc = { source = "f5xc-salesdemos/f5xc" } } }

Templates (adapt name/namespace/fields per request):

http_loadbalancer: resource "f5xc_http_loadbalancer" "example" { name="example" namespace="default" domains=["app.example.com"] advertise_on_public_default_vip {} http { port=80 } default_route_pools { pool { name="origin-pool-name" namespace="default" } weight=1 priority=1 } }
Pool ref: set pool.name to existing origin pool name in same namespace. HTTPS: replace http { port=80 } with https_auto_cert { http_redirect=true default_header {} tls_config { default_security {} } no_mtls {} }. WAF: add disable_waf {} or app_firewall { name="waf" namespace="ns" }. Import: terraform import f5xc_http_loadbalancer.example ns/name

origin_pool: resource "f5xc_origin_pool" "example" { name="example" namespace="default" port=8080 origin_servers { public_ip { ip="10.0.1.10" } } loadbalancer_algorithm="ROUND_ROBIN" endpoint_selection="LOCAL_PREFERRED" }
Healthcheck ref: add healthcheck { name="hc" namespace="ns" }. Import: terraform import f5xc_origin_pool.example ns/name

healthcheck: resource "f5xc_healthcheck" "example" { name="example" namespace="default" http_health_check { path="/healthz" } timeout=3 interval=10 unhealthy_threshold=3 healthy_threshold=3 }
TCP: replace http_health_check with tcp_health_check {}. Import: terraform import f5xc_healthcheck.example ns/name

app_firewall: resource "f5xc_app_firewall" "example" { name="example" namespace="default" blocking {} }
Import: terraform import f5xc_app_firewall.example ns/name

service_policy: resource "f5xc_service_policy" "example" { name="example" namespace="default" allow_all_requests {} any_server {} }
Deny all: replace allow_all_requests {} with deny_all_requests {}. Custom rules: use rule_list { rules { metadata { name="rule" } spec { action="ALLOW" any_client {} any_ip {} } } }. Import: terraform import f5xc_service_policy.example ns/name

certificate: resource "f5xc_certificate" "example" { name="example" namespace="default" certificate_url="string:///BASE64_CERT" private_key { blindfold_secret_info { location="string:///BASE64_KEY" } } }
Import: terraform import f5xc_certificate.example ns/name

rate_limiter_policy: resource "f5xc_rate_limiter_policy" "example" { name="example" namespace="default" any_server {} }
Import: terraform import f5xc_rate_limiter_policy.example ns/name

api_definition: resource "f5xc_api_definition" "example" { name="example" namespace="default" swagger_specs=["string:///BASE64_SPEC"] }
Import: terraform import f5xc_api_definition.example ns/name

namespace: resource "f5xc_namespace" "example" { name="staging" }
Labels: add labels = { env="prod" }. Import: terraform import f5xc_namespace.example name

Troubleshoot: "one of X must be set" = add empty block. "unsupported argument" = check template. Output corrected resource block.
Destroy: terraform destroy -target=f5xc_{type}.{label}

---
> Source: [f5xc-salesdemos/xcsh](https://github.com/f5xc-salesdemos/xcsh) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-06-15 -->

