@robinmordasiewicz/f5xc-terraform-mcp 3.10.5 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -70,7 +70,7 @@ docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:v1.0.0
70
70
  docker run -p 8080:8080 ghcr.io/modelcontextprotocol/registry:main-20250906-abc123d
71
71
  ```
72
72
 
73
- **Available tags:**
73
+ **Available tags:**
74
74
  - **Releases**: `latest`, `v1.0.0`, `v1.1.0`, etc.
75
75
  - **Continuous**: `main` (latest main branch build)
76
76
  - **Development**: `main-<date>-<sha>` (specific commit builds)
@@ -0,0 +1,25 @@
1
+ # Data Sources
2
+
3
+ Data sources allow you to query existing F5 Distributed Cloud resources.
4
+
5
+ ## Available Data Sources
6
+
7
+ For a complete list of available data sources, see the [Terraform Registry documentation](https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest/docs/data-sources).
8
+
9
+ ### Core Data Sources
10
+
11
+ - `f5xc_namespace` - Query namespace details
12
+ - `f5xc_addon_service` - Query addon service information
13
+ - `f5xc_addon_service_activation_status` - Check addon activation status
14
+ - And more...
15
+
16
+ ## Data Source Documentation
17
+
18
+ Each data source is automatically generated from F5's official OpenAPI specifications and includes:
19
+
20
+ - **Schema** - All available attributes
21
+ - **Examples** - Working Terraform configurations
22
+
23
+ ## Finding Data Sources
24
+
25
+ Visit the [Terraform Registry](https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest/docs/data-sources) to search and browse all available data sources.
@@ -0,0 +1,39 @@
1
+ # Provider Functions
2
+
3
+ Provider-defined functions offer utility capabilities beyond resource management.
4
+
5
+ !!! info "Terraform 1.8+ Required"
6
+ Provider functions require Terraform 1.8.0 or later.
7
+
8
+ ## Available Functions
9
+
10
+ ### Secret Management
11
+
12
+ - **`provider::f5xc::blindfold`** - Encrypt base64-encoded plaintext using F5XC Secret Management
13
+ - **`provider::f5xc::blindfold_file`** - Read and encrypt file contents using F5XC Secret Management
14
+
15
+ ## Usage Example
16
+
17
+ ```hcl
18
+ terraform {
19
+ required_version = ">= 1.8.0"
20
+ required_providers {
21
+ f5xc = {
22
+ source = "robinmordasiewicz/f5xc"
23
+ version = "~> 3.0"
24
+ }
25
+ }
26
+ }
27
+
28
+ locals {
29
+ encrypted = provider::f5xc::blindfold(
30
+ base64encode("my-secret-value"),
31
+ "secret-policy-name",
32
+ "namespace"
33
+ )
34
+ }
35
+ ```
36
+
37
+ ## Function Documentation
38
+
39
+ For complete function documentation, see the [Terraform Registry](https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest/docs/functions).
@@ -0,0 +1,22 @@
1
+ # Guides
2
+
3
+ Step-by-step tutorials for common F5 Distributed Cloud scenarios.
4
+
5
+ ## Available Guides
6
+
7
+ ### Security & Load Balancing
8
+
9
+ - **[HTTP Load Balancer with Security Features](http-loadbalancer.md)** - Deploy a production-ready HTTP Load Balancer with WAF, bot defense, and rate limiting
10
+
11
+ ## Coming Soon
12
+
13
+ Additional guides are being developed. Check back soon for:
14
+
15
+ - Origin pool configuration patterns
16
+ - Multi-cloud deployment strategies
17
+ - Service mesh integration
18
+ - Advanced security configurations
19
+
20
+ ## Contributing
21
+
22
+ Have a guide idea? [Open an issue](https://github.com/robinmordasiewicz/terraform-provider-f5xc/issues) or [submit a PR](https://github.com/robinmordasiewicz/terraform-provider-f5xc/pulls)!
@@ -1,276 +1,152 @@
1
1
  ---
2
- page_title: "F5XC Provider"
3
- description: |-
4
- Terraform provider for F5 Distributed Cloud (F5XC) enabling infrastructure as code for load balancers, security policies, sites, and networking. Community-maintained provider built from public F5 API documentation.
2
+ title: F5 Distributed Cloud Terraform Provider
5
3
  ---
6
4
 
7
- # F5XC Provider
8
-
9
- The F5XC Terraform provider enables infrastructure as code management for F5 Distributed Cloud (F5XC) resources. Configure HTTP/TCP load balancers, origin pools, application firewalls, service policies, cloud sites, and more through declarative Terraform configurations.
10
-
11
- This is a community-maintained provider built from public F5 API documentation.
12
-
13
- ## Requirements
14
-
15
- | Name | Version |
16
- |-----------|---------|
17
- | terraform | >= 1.8 |
18
-
19
- -> **Note:** This provider uses provider-defined functions which require Terraform 1.8 or later. For details, see the [Functions](/docs/functions) documentation.
20
-
21
- ## Authenticating to F5 Distributed Cloud
22
-
23
- The F5XC Terraform provider supports multiple authentication methods:
24
-
25
- 1. **API Token** - Simplest method using a personal API token
26
- 2. **P12 Certificate** - Certificate-based authentication using PKCS#12 bundle
27
- 3. **PEM Certificate** - Certificate-based authentication using separate cert/key files
28
-
29
- Learn more about [how to generate API credentials](https://docs.cloud.f5.com/docs/how-to/user-mgmt/credentials).
30
-
31
- ## Example Usage
32
-
33
- ```terraform
34
- # Configure the F5XC Provider with API Token Authentication
35
- provider "f5xc" {
36
- api_url = "https://your-tenant.console.ves.volterra.io"
37
- api_token = var.f5xc_api_token
38
- }
39
-
40
- # Alternatively, use environment variables:
41
- # export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
42
- # export F5XC_API_TOKEN="your-api-token"
43
-
44
- variable "f5xc_api_token" {
45
- description = "F5 Distributed Cloud API Token"
46
- type = string
47
- sensitive = true
48
- }
49
-
50
- # Or use P12 Certificate Authentication:
51
- # provider "f5xc" {
52
- # api_url = "https://your-tenant.console.ves.volterra.io"
53
- # api_p12_file = "/path/to/certificate.p12"
54
- # p12_password = var.f5xc_p12_password
55
- # }
56
- #
57
- # Environment variables for P12 authentication:
58
- # export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
59
- # export F5XC_P12_FILE="/path/to/certificate.p12"
60
- # export F5XC_P12_PASSWORD="your-p12-password"
61
- ```
62
-
63
- ## Argument Reference
64
-
65
- ### Required (one of the following authentication methods)
66
-
67
- * `api_token` - F5 Distributed Cloud API Token (`String`, Sensitive). Can also be set via `F5XC_API_TOKEN` environment variable.
68
-
69
- * `api_p12_file` - Path to PKCS#12 certificate bundle file (`String`). Can also be set via `F5XC_P12_FILE` environment variable. Requires `p12_password`.
70
-
71
- * `api_cert` and `api_key` - Paths to PEM-encoded certificate and private key files (`String`). Can also be set via `F5XC_CERT` and `F5XC_KEY` environment variables.
72
-
73
- ### Optional
74
-
75
- * `api_url` - F5 Distributed Cloud API URL (`String`). Base URL **without** `/api` suffix. Defaults to `https://console.ves.volterra.io`. Can also be set via `F5XC_API_URL` environment variable.
76
-
77
- * `p12_password` - Password for PKCS#12 certificate bundle (`String`, Sensitive). Required when using `api_p12_file`. Can also be set via `F5XC_P12_PASSWORD` environment variable.
78
-
79
- * `api_ca_cert` - Path to PEM-encoded CA certificate file (`String`). Optional, used for server certificate verification. Can also be set via `F5XC_CACERT` environment variable.
80
-
81
- ## Authentication Options
82
-
83
- ### Option 1: API Token Authentication
84
-
85
- The simplest authentication method using a personal API token.
86
-
87
- **Provider Configuration:**
5
+ # F5 Distributed Cloud Terraform Provider
6
+
7
+ <div class="landing-page">
8
+
9
+ <div class="hero">
10
+ <h2>Manage F5 Distributed Cloud Resources with Terraform</h2>
11
+ <p>Community-driven Terraform provider for F5 Distributed Cloud (F5XC) built using the HashiCorp Terraform Plugin Framework. Implements F5's public OpenAPI specifications to manage F5XC resources via Infrastructure as Code.</p>
12
+
13
+ <div class="buttons">
14
+ <a href="getting-started/installation/" class="md-button md-button--primary">Get Started</a>
15
+ <a href="https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest" class="md-button">Terraform Registry</a>
16
+ </div>
17
+ </div>
18
+
19
+ ## Key Features
20
+
21
+ <div class="feature-grid">
22
+ <div class="feature">
23
+ <div class="feature-icon">🚀</div>
24
+ <h3>Complete Resource Coverage</h3>
25
+ <p>Manage HTTP load balancers, namespaces, security policies, and more through Terraform</p>
26
+ </div>
27
+
28
+ <div class="feature">
29
+ <div class="feature-icon">🔒</div>
30
+ <h3>Secure Authentication</h3>
31
+ <p>Support for API tokens and P12 certificate authentication</p>
32
+ </div>
33
+
34
+ <div class="feature">
35
+ <div class="feature-icon">📖</div>
36
+ <h3>OpenAPI-Based</h3>
37
+ <p>Automatically generated from F5's official OpenAPI specifications</p>
38
+ </div>
39
+
40
+ <div class="feature">
41
+ <div class="feature-icon">🧪</div>
42
+ <h3>Well-Tested</h3>
43
+ <p>Comprehensive acceptance tests ensure reliability</p>
44
+ </div>
45
+
46
+ <div class="feature">
47
+ <div class="feature-icon">🔄</div>
48
+ <h3>Import Support</h3>
49
+ <p>Import existing F5XC resources into Terraform state</p>
50
+ </div>
51
+
52
+ <div class="feature">
53
+ <div class="feature-icon">🛠️</div>
54
+ <h3>Provider Functions</h3>
55
+ <p>Utility functions for Secret Management and more</p>
56
+ </div>
57
+ </div>
58
+
59
+ ## Quick Example
88
60
 
89
61
  ```hcl
90
- provider "f5xc" {
91
- api_url = "https://your-tenant.console.ves.volterra.io"
92
- api_token = var.f5xc_api_token
93
- }
94
- ```
95
-
96
- **Environment Variables:**
97
-
98
- ```bash
99
- export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
100
- export F5XC_API_TOKEN="your-api-token"
101
- ```
102
-
103
- ### Option 2: P12 Certificate Authentication
104
-
105
- Certificate-based authentication using a PKCS#12 bundle downloaded from F5 Distributed Cloud.
106
-
107
- **Provider Configuration:**
108
-
109
- ```hcl
110
- provider "f5xc" {
111
- api_url = "https://your-tenant.console.ves.volterra.io"
112
- api_p12_file = "/path/to/certificate.p12"
113
- p12_password = var.f5xc_p12_password
62
+ terraform {
63
+ required_providers {
64
+ f5xc = {
65
+ source = "robinmordasiewicz/f5xc"
66
+ version = "~> 3.0"
67
+ }
68
+ }
114
69
  }
115
- ```
116
-
117
- **Environment Variables:**
118
-
119
- ```bash
120
- export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
121
- export F5XC_P12_FILE="/path/to/certificate.p12"
122
- export F5XC_P12_PASSWORD="your-p12-password"
123
- ```
124
-
125
- ### Option 3: PEM Certificate Authentication
126
70
 
127
- Certificate-based authentication using separate PEM-encoded certificate and key files.
128
-
129
- **Provider Configuration:**
130
-
131
- ```hcl
132
71
  provider "f5xc" {
133
- api_url = "https://your-tenant.console.ves.volterra.io"
134
- api_cert = "/path/to/certificate.crt"
135
- api_key = "/path/to/private.key"
136
- api_ca_cert = "/path/to/ca-certificate.crt" # Optional
72
+ api_url = "https://console.ves.volterra.io"
73
+ # api_token set via F5XC_API_TOKEN environment variable
137
74
  }
138
- ```
139
-
140
- **Environment Variables:**
141
-
142
- ```bash
143
- export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
144
- export F5XC_CERT="/path/to/certificate.crt"
145
- export F5XC_KEY="/path/to/private.key"
146
- export F5XC_CACERT="/path/to/ca-certificate.crt" # Optional
147
- ```
148
-
149
- -> **Note:** Environment variables are the recommended approach for CI/CD pipelines and to avoid storing sensitive credentials in version control.
150
-
151
- ## Getting Started
152
-
153
- 1. **Generate API Credentials**: Navigate to your F5 Distributed Cloud console, go to **Administration** > **Personal Management** > **Credentials**, and create either an API Token or download a certificate bundle.
154
-
155
- 2. **Configure the Provider**: Add the provider configuration to your Terraform files using one of the authentication options above.
156
-
157
- 3. **Create Resources**: Start managing F5XC resources like namespaces, load balancers, and origin pools.
158
75
 
159
- ### Example: Create a Namespace
160
-
161
- ```hcl
162
76
  resource "f5xc_namespace" "example" {
163
77
  name = "example-namespace"
164
78
  }
165
- ```
166
79
 
167
- ### Example: Create an HTTP Load Balancer
168
-
169
- ```hcl
170
80
  resource "f5xc_http_loadbalancer" "example" {
171
- name = "example-load-balancer"
172
- namespace = "example-namespace"
173
- domains = ["example.com"]
174
- }
175
- ```
176
-
177
- ## MCP Configuration
178
-
179
- This provider includes a Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with F5 Distributed Cloud resources. The MCP server provides schema information, documentation, and example configurations.
81
+ name = "example-lb"
82
+ namespace = f5xc_namespace.example.name
180
83
 
181
- ### Quick Setup for Claude Desktop
84
+ domains = ["example.com"]
182
85
 
183
- Add the following to your Claude Desktop configuration file:
184
-
185
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
186
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
86
+ https_auto_cert {
87
+ http_redirect = true
88
+ add_hsts = false
89
+ no_mtls = true
90
+ default_header = true
91
+ enable_path_normalize = true
92
+ }
187
93
 
188
- ```json
189
- {
190
- "mcpServers": {
191
- "f5xc-terraform": {
192
- "command": "npx",
193
- "args": ["@robinmordasiewicz/f5xc-terraform-mcp"]
94
+ default_route_pools {
95
+ pool {
96
+ name = f5xc_origin_pool.example.name
97
+ namespace = f5xc_namespace.example.name
194
98
  }
99
+ weight = 1
100
+ priority = 1
195
101
  }
196
- }
197
- ```
198
-
199
- ### Quick Setup for Claude Code (CLI)
200
-
201
- Install the MCP server with a single command:
202
-
203
- ```bash
204
- claude mcp add f5xc-terraform -- npx -y @robinmordasiewicz/f5xc-terraform-mcp
205
- ```
206
-
207
- **Scope Options:**
208
-
209
- * `--scope local` (default) - Available only in the current directory
210
- * `--scope user` - Available in all your Claude Code sessions
211
- * `--scope project` - Shared with anyone who clones the repository (saved in `.mcp.json`)
212
102
 
213
- Example with user scope (recommended for personal use):
214
-
215
- ```bash
216
- claude mcp add --scope user f5xc-terraform -- npx -y @robinmordasiewicz/f5xc-terraform-mcp
217
- ```
218
-
219
- **Verify Installation:**
220
-
221
- ```bash
222
- claude mcp list
103
+ advertise_on_public_default_vip = true
104
+ }
223
105
  ```
224
106
 
225
- You should see `f5xc-terraform` listed with a `✓ Connected` status.
226
-
227
- ### Quick Setup for Visual Studio Code
228
-
229
- VS Code 1.99+ supports MCP servers through GitHub Copilot. Choose the installation method that best fits your environment:
230
-
231
- #### Option 1: Workspace Configuration (Recommended)
107
+ ## Getting Started
232
108
 
233
- Create a `.vscode/mcp.json` file in your workspace:
109
+ <div class="highlight-boxes">
110
+ <div class="highlight">
111
+ <h3>📦 Installation</h3>
112
+ <p>Install the provider from the Terraform Registry</p>
113
+ <a href="getting-started/installation/">Learn more →</a>
114
+ </div>
234
115
 
235
- ```json
236
- {
237
- "servers": {
238
- "f5xc-terraform": {
239
- "command": "npx",
240
- "args": ["-y", "@robinmordasiewicz/f5xc-terraform-mcp"]
241
- }
242
- }
243
- }
244
- ```
116
+ <div class="highlight">
117
+ <h3>🔐 Authentication</h3>
118
+ <p>Configure API token or P12 certificate authentication</p>
119
+ <a href="getting-started/authentication/">Learn more →</a>
120
+ </div>
245
121
 
246
- #### Option 2: Corporate Environments (No Node.js Required)
122
+ <div class="highlight">
123
+ <h3>⚡ Quick Start</h3>
124
+ <p>Deploy your first F5XC resource in minutes</p>
125
+ <a href="getting-started/quick-start/">Learn more →</a>
126
+ </div>
127
+ </div>
247
128
 
248
- For environments where npm/Node.js cannot be installed:
129
+ ## Resources
249
130
 
250
- 1. Download the latest `.mcpb` bundle from [GitHub Releases](https://github.com/robinmordasiewicz/terraform-provider-f5xc/releases)
251
- 2. Place the file in a known location (e.g., `~/.mcp/f5xc-terraform-mcp.mcpb`)
252
- 3. Create a `.vscode/mcp.json` file:
131
+ Explore the available resources and data sources:
253
132
 
254
- ```json
255
- {
256
- "servers": {
257
- "f5xc-terraform": {
258
- "command": "/path/to/f5xc-terraform-mcp.mcpb"
259
- }
260
- }
261
- }
262
- ```
133
+ - **[Resources](resources/)**: Create and manage F5XC infrastructure
134
+ - **[Data Sources](data-sources/)**: Query existing F5XC resources
135
+ - **[Functions](functions/)**: Utility functions for advanced use cases
136
+ - **[Guides](guides/)**: Step-by-step tutorials for common scenarios
263
137
 
264
- #### Verify Installation
138
+ ## Community & Support
265
139
 
266
- 1. Press `Ctrl+Shift+P` / `Cmd+Shift+P`
267
- 2. Run `MCP: List Servers`
268
- 3. Look for `f5xc-terraform` with a green status indicator
140
+ This is a community-driven provider. Contributions are welcome!
269
141
 
270
- For complete MCP server documentation including all available tools and advanced configuration options, see the [NPM package page](https://www.npmjs.com/package/@robinmordasiewicz/f5xc-terraform-mcp).
142
+ - **GitHub**: [robinmordasiewicz/terraform-provider-f5xc](https://github.com/robinmordasiewicz/terraform-provider-f5xc)
143
+ - **Issues**: [Report bugs or request features](https://github.com/robinmordasiewicz/terraform-provider-f5xc/issues)
144
+ - **Contributing**: [Development guide](contributing/development/)
271
145
 
272
- ## Resources and Data Sources
146
+ ---
273
147
 
274
- Browse the documentation sidebar for the complete list of resources and data sources organized by category.
148
+ <div class="footer-note">
149
+ Built with ❤️ by the community • <a href="https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest">View on Terraform Registry</a>
150
+ </div>
275
151
 
276
- <!-- Template version: 1.0.1 - MCP token optimization (#592) -->
152
+ </div>
@@ -0,0 +1,27 @@
1
+ # Resources
2
+
3
+ Resources allow you to create and manage F5 Distributed Cloud infrastructure.
4
+
5
+ ## Available Resources
6
+
7
+ For a complete list of available resources, see the [Terraform Registry documentation](https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest/docs).
8
+
9
+ ### Core Resources
10
+
11
+ - `f5xc_namespace` - Manage namespaces
12
+ - `f5xc_http_loadbalancer` - HTTP/HTTPS load balancers
13
+ - `f5xc_origin_pool` - Backend origin pools
14
+ - `f5xc_app_firewall` - Web Application Firewall policies
15
+ - And many more...
16
+
17
+ ## Resource Documentation
18
+
19
+ Each resource is automatically generated from F5's official OpenAPI specifications and includes:
20
+
21
+ - **Schema** - All available attributes and their types
22
+ - **Import** - How to import existing resources
23
+ - **Examples** - Working Terraform configurations
24
+
25
+ ## Finding Resources
26
+
27
+ Visit the [Terraform Registry](https://registry.terraform.io/providers/robinmordasiewicz/f5xc/latest/docs) to search and browse all available resources.
@@ -13080,4 +13080,4 @@
13080
13080
  }
13081
13081
  }
13082
13082
  }
13083
- }
13083
+ }
@@ -66,4 +66,4 @@
66
66
  ]
67
67
  }
68
68
  }
69
- }
69
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robinmordasiewicz/f5xc-terraform-mcp",
3
- "version": "3.10.5",
3
+ "version": "3.11.0",
4
4
  "description": "MCP server for F5 Distributed Cloud Terraform provider - documentation, 270+ OpenAPI specs, subscription info, and addon activation workflows for AI assistants",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",