@robinmordasiewicz/f5xc-terraform-mcp 2.9.0 → 2.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.
@@ -12,11 +12,11 @@ This guide covers authentication configuration for the F5 Distributed Cloud Terr
12
12
 
13
13
  ## Quick Reference
14
14
 
15
- | Method | Complexity | Best For | Security |
16
- |--------|------------|----------|----------|
17
- | API Token | Simplest | Development, quick testing | Bearer token over TLS |
18
- | P12 Certificate | Moderate | Production, CI/CD | Mutual TLS (mTLS) |
19
- | PEM Certificate | Advanced | When tooling requires PEM format | Derived from P12, mTLS |
15
+ | Method | Complexity | Best For | Security |
16
+ | --------------- | ---------- | -------------------------------- | ---------------------- |
17
+ | API Token | Simplest | Development, quick testing | Bearer token over TLS |
18
+ | P12 Certificate | Moderate | Production, CI/CD | Mutual TLS (mTLS) |
19
+ | PEM Certificate | Advanced | When tooling requires PEM format | Derived from P12, mTLS |
20
20
 
21
21
  ## Prerequisites
22
22
 
@@ -79,7 +79,7 @@ Service credentials are managed through IAM and recommended for production. They
79
79
  7. Select an expiry date
80
80
  8. Click **Download** to get the `.p12` file
81
81
 
82
- ## Authentication Methods
82
+ ## Provider Configuration
83
83
 
84
84
  ### Method 1: API Token Authentication (Simplest)
85
85
 
@@ -170,15 +170,15 @@ provider "f5xc" {
170
170
 
171
171
  ## Environment Variable Reference
172
172
 
173
- | Variable | Description | Required |
174
- |----------|-------------|----------|
175
- | `F5XC_API_URL` | F5XC tenant API URL | Yes |
176
- | `F5XC_API_TOKEN` | API token for bearer authentication | One of: token, P12, or PEM |
177
- | `F5XC_P12_FILE` | Path to P12 certificate file | With `F5XC_P12_PASSWORD` |
178
- | `F5XC_P12_PASSWORD` | Password for P12 file | With `F5XC_P12_FILE` |
179
- | `F5XC_CERT` | Path to PEM certificate file | With `F5XC_KEY` |
180
- | `F5XC_KEY` | Path to PEM private key file | With `F5XC_CERT` |
181
- | `F5XC_CACERT` | Path to CA certificate for server verification | No |
173
+ | Variable | Description | Required |
174
+ | ------------------- | ---------------------------------------------- | ------------------------------ |
175
+ | `F5XC_API_URL` | F5XC tenant API URL | Yes |
176
+ | `F5XC_API_TOKEN` | API token for bearer authentication | One of: token, P12, or PEM |
177
+ | `F5XC_P12_FILE` | Path to P12 certificate file | With `F5XC_P12_PASSWORD` |
178
+ | `F5XC_P12_PASSWORD` | Password for P12 file | With `F5XC_P12_FILE` |
179
+ | `F5XC_CERT` | Path to PEM certificate file | With `F5XC_KEY` |
180
+ | `F5XC_KEY` | Path to PEM private key file | With `F5XC_CERT` |
181
+ | `F5XC_CACERT` | Path to CA certificate for server verification | No |
182
182
 
183
183
  **Adding to Shell Profile:**
184
184
 
@@ -241,10 +241,10 @@ jobs:
241
241
 
242
242
  **GitHub Secrets to configure:**
243
243
 
244
- | Secret Name | Value |
245
- |-------------|-------|
246
- | `F5XC_API_URL` | `https://your-tenant.console.ves.volterra.io` |
247
- | `F5XC_API_TOKEN` | Your API token value |
244
+ | Secret Name | Value |
245
+ | ------------------ | ---------------------------------------------- |
246
+ | `F5XC_API_URL` | `https://your-tenant.console.ves.volterra.io` |
247
+ | `F5XC_API_TOKEN` | Your API token value |
248
248
 
249
249
  ### GitHub Actions with P12 Certificate
250
250
 
@@ -306,11 +306,11 @@ base64 -w 0 your-credentials.p12
306
306
 
307
307
  **GitHub Secrets to configure:**
308
308
 
309
- | Secret Name | Value |
310
- |-------------|-------|
311
- | `F5XC_API_URL` | `https://your-tenant.console.ves.volterra.io` |
312
- | `F5XC_P12_BASE64` | Base64-encoded P12 file contents |
313
- | `F5XC_P12_PASSWORD` | Password for the P12 file |
309
+ | Secret Name | Value |
310
+ | ------------------- | ---------------------------------------------- |
311
+ | `F5XC_API_URL` | `https://your-tenant.console.ves.volterra.io` |
312
+ | `F5XC_P12_BASE64` | Base64-encoded P12 file contents |
313
+ | `F5XC_P12_PASSWORD` | Password for the P12 file |
314
314
 
315
315
  ## Security Best Practices
316
316
 
@@ -321,10 +321,10 @@ base64 -w 0 your-credentials.p12
321
321
 
322
322
  ### Choosing the Right Method
323
323
 
324
- | Use Case | Recommended Method | Reason |
325
- |----------|-------------------|--------|
326
- | Local development | API Token | Simplest setup |
327
- | CI/CD pipelines | P12 Certificate | mTLS security |
324
+ | Use Case | Recommended Method | Reason |
325
+ | --------------------- | ------------------- | ------------------------- |
326
+ | Local development | API Token | Simplest setup |
327
+ | CI/CD pipelines | P12 Certificate | mTLS security |
328
328
  | Production automation | Service Credentials | Role-based access control |
329
329
 
330
330
  ## Troubleshooting
@@ -366,8 +366,8 @@ export F5XC_API_TOKEN="token" # Correct
366
366
  F5XC_API_TOKEN="token" # Won't work
367
367
  ```
368
368
 
369
- 2. Verify spelling is exact (case-sensitive)
370
- 3. Check for hidden characters in values
369
+ 1. Verify spelling is exact (case-sensitive)
370
+ 2. Check for hidden characters in values
371
371
 
372
372
  ## Revoking Credentials
373
373
 
@@ -21,7 +21,7 @@ F5 Distributed Cloud Secret Management ("blindfold") provides client-side encryp
21
21
 
22
22
  ### How It Works
23
23
 
24
- ```
24
+ ```text
25
25
  ┌─────────────────────────────────────────────────────────────────────┐
26
26
  │ Your Local Machine │
27
27
  │ │
@@ -64,13 +64,15 @@ Before you begin, ensure you have:
64
64
 
65
65
  Configure one of these authentication methods via environment variables:
66
66
 
67
- **Option 1: API Token (Recommended for development)**
67
+ #### Option 1: API Token (Recommended for development)
68
+
68
69
  ```bash
69
70
  export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
70
71
  export F5XC_API_TOKEN="your-api-token"
71
72
  ```
72
73
 
73
- **Option 2: P12 Certificate (Recommended for production)**
74
+ #### Option 2: P12 Certificate (Recommended for production)
75
+
74
76
  ```bash
75
77
  export F5XC_API_URL="https://your-tenant.console.ves.volterra.io"
76
78
  export F5XC_P12_FILE="/path/to/your-credentials.p12"
@@ -143,13 +145,14 @@ Encrypts base64-encoded plaintext:
143
145
  provider::f5xc::blindfold(plaintext, policy_name, namespace)
144
146
  ```
145
147
 
146
- | Parameter | Type | Description |
147
- |-----------|------|-------------|
148
- | `plaintext` | string | Base64-encoded secret to encrypt |
149
- | `policy_name` | string | Name of the SecretPolicy |
150
- | `namespace` | string | Namespace containing the policy |
148
+ | Parameter | Type | Description |
149
+ | ------------- | ------ | -------------------------------- |
150
+ | `plaintext` | string | Base64-encoded secret to encrypt |
151
+ | `policy_name` | string | Name of the SecretPolicy |
152
+ | `namespace` | string | Namespace containing the policy |
151
153
 
152
154
  **Example:**
155
+
153
156
  ```hcl
154
157
  location = provider::f5xc::blindfold(
155
158
  base64encode(var.my_secret),
@@ -166,13 +169,14 @@ Reads a file and encrypts its contents:
166
169
  provider::f5xc::blindfold_file(path, policy_name, namespace)
167
170
  ```
168
171
 
169
- | Parameter | Type | Description |
170
- |-----------|------|-------------|
171
- | `path` | string | Path to the file to encrypt |
172
- | `policy_name` | string | Name of the SecretPolicy |
173
- | `namespace` | string | Namespace containing the policy |
172
+ | Parameter | Type | Description |
173
+ | ------------- | ------ | ------------------------------- |
174
+ | `path` | string | Path to the file to encrypt |
175
+ | `policy_name` | string | Name of the SecretPolicy |
176
+ | `namespace` | string | Namespace containing the policy |
174
177
 
175
178
  **Example:**
179
+
176
180
  ```hcl
177
181
  location = provider::f5xc::blindfold_file(
178
182
  "${path.module}/certs/server.key",
@@ -361,9 +365,9 @@ locals {
361
365
  RSA-OAEP encryption has a maximum plaintext size based on the key size:
362
366
 
363
367
  | Key Size | Maximum Plaintext |
364
- |----------|-------------------|
365
- | 2048-bit | ~190 bytes |
366
- | 4096-bit | ~446 bytes |
368
+ | -------- | ----------------- |
369
+ | 2048-bit | ~190 bytes |
370
+ | 4096-bit | ~446 bytes |
367
371
 
368
372
  ~> **Note:** If your secret exceeds the size limit, consider splitting it or using a different approach. The function will return a clear error message if the plaintext is too large.
369
373
 
@@ -371,7 +375,7 @@ RSA-OAEP encryption has a maximum plaintext size based on the key size:
371
375
 
372
376
  The blindfold functions return a sealed secret string with the `string:///` prefix followed by a base64-encoded JSON structure:
373
377
 
374
- ```
378
+ ```text
375
379
  string:///eyJrZXlfdmVyc2lvbiI6InYxLjIuMyIsInBvbGljeV9pZCI6InNoYXJlZC92ZXMtaW8tYWxsb3ctdm9sdGVycmEiLCJ0ZW5hbnQiOiJ5b3VyLXRlbmFudCIsImRhdGEiOiJBQkNERUYxMjM0NTY3ODkwLi4uIn0=
376
380
  ```
377
381
 
@@ -387,6 +391,7 @@ When base64-decoded, the sealed JSON contains these fields:
387
391
  ```
388
392
 
389
393
  Field descriptions:
394
+
390
395
  - `key_version`: Public key version used for encryption
391
396
  - `policy_id`: Reference to the SecretPolicy (namespace/name format)
392
397
  - `tenant`: Your F5XC tenant identifier
@@ -405,6 +410,7 @@ Field descriptions:
405
410
  **Symptom:** Error message about missing authentication configuration.
406
411
 
407
412
  **Solution:**
413
+
408
414
  ```bash
409
415
  # Verify environment variables are set
410
416
  echo $F5XC_API_URL
@@ -422,6 +428,7 @@ export F5XC_API_TOKEN="your-api-token"
422
428
  **Solutions:**
423
429
 
424
430
  1. Use the built-in policy:
431
+
425
432
  ```hcl
426
433
  policy_name = "ves-io-allow-volterra"
427
434
  namespace = "shared"
@@ -436,6 +443,7 @@ export F5XC_API_TOKEN="your-api-token"
436
443
  **Solutions:**
437
444
 
438
445
  1. Verify your secret size:
446
+
439
447
  ```bash
440
448
  wc -c < your-secret-file
441
449
  ```
@@ -451,6 +459,7 @@ export F5XC_API_TOKEN="your-api-token"
451
459
  **Solutions:**
452
460
 
453
461
  1. Use `${path.module}` for relative paths:
462
+
454
463
  ```hcl
455
464
  location = provider::f5xc::blindfold_file(
456
465
  "${path.module}/certs/server.key", # Correct
@@ -465,6 +474,7 @@ export F5XC_API_TOKEN="your-api-token"
465
474
  **Symptom:** Error about invalid base64 encoding.
466
475
 
467
476
  **Solution:** Ensure you're base64-encoding your plaintext:
477
+
468
478
  ```hcl
469
479
  # Correct
470
480
  location = provider::f5xc::blindfold(
@@ -89,9 +89,9 @@ Review the plan output, then type `yes` to confirm deployment.
89
89
 
90
90
  After deployment, Terraform outputs a CNAME target. Create a DNS record:
91
91
 
92
- | Type | Name | Value |
93
- |------|------|-------|
94
- | CNAME | app.example.com | ves-io-app-example-com.ac.vh.ves.io |
92
+ | Type | Name | Value |
93
+ | ----- | --------------- | ------------------------------------ |
94
+ | CNAME | app.example.com | ves-io-app-example-com.ac.vh.ves.io |
95
95
 
96
96
  ~> **Note:** DNS propagation may take up to 48 hours, though typically completes within minutes.
97
97
 
@@ -153,7 +153,7 @@ labels = {
153
153
 
154
154
  This guide creates the following resources:
155
155
 
156
- ```
156
+ ```text
157
157
  ┌─────────────────────────────────────────┐
158
158
  │ F5 Distributed Cloud │
159
159
  │ │
@@ -185,14 +185,14 @@ This guide creates the following resources:
185
185
 
186
186
  ### Resources Created
187
187
 
188
- | Resource | Purpose |
189
- |----------|---------|
190
- | `f5xc_namespace` | Isolates resources (optional) |
191
- | `f5xc_healthcheck` | Monitors origin server health |
192
- | `f5xc_origin_pool` | Defines backend servers |
193
- | `f5xc_app_firewall` | WAF configuration |
194
- | `f5xc_rate_limiter` | Rate limiting policy |
195
- | `f5xc_http_loadbalancer` | Main load balancer |
188
+ | Resource | Purpose |
189
+ | ------------------------ | ----------------------------- |
190
+ | `f5xc_namespace` | Isolates resources (optional) |
191
+ | `f5xc_healthcheck` | Monitors origin server health |
192
+ | `f5xc_origin_pool` | Defines backend servers |
193
+ | `f5xc_app_firewall` | WAF configuration |
194
+ | `f5xc_rate_limiter` | Rate limiting policy |
195
+ | `f5xc_http_loadbalancer` | Main load balancer |
196
196
 
197
197
  ## Troubleshooting
198
198
 
@@ -49,8 +49,6 @@ resource "f5xc_api_credential" "example" {
49
49
 
50
50
  <a id="name"></a>&#x2022; [`name`](#name) - Required String<br>Name of the API Credential. Must be unique within the namespace
51
51
 
52
- <a id="namespace"></a>&#x2022; [`namespace`](#namespace) - Required String<br>Namespace where the API Credential will be created
53
-
54
52
  <a id="annotations"></a>&#x2022; [`annotations`](#annotations) - Optional Map<br>Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata
55
53
 
56
54
  <a id="description"></a>&#x2022; [`description`](#description) - Optional String<br>Human readable description for the object
@@ -59,6 +57,8 @@ resource "f5xc_api_credential" "example" {
59
57
 
60
58
  <a id="labels"></a>&#x2022; [`labels`](#labels) - Optional Map<br>Labels is a user defined key value map that can be attached to resources for organization and filtering
61
59
 
60
+ <a id="namespace"></a>&#x2022; [`namespace`](#namespace) - Optional String<br>Namespace for the API Credential. For this resource type, namespace should be empty or omitted
61
+
62
62
  ### Spec Argument Reference
63
63
 
64
64
  <a id="password"></a>&#x2022; [`password`](#password) - Optional String<br>Password. Password is used for generating an API certificate P12 bundle user can use to protect access to it. this password will not be saved/persisted anywhere in the system. Applicable for credential type API_CERTIFICATE Users have to use this password when they use the certificate, e.g. in curl or while adding to key chain