Skip to content

Commit b80cb17

Browse files
committed
Doc: Wrap table cells in multiserver plugin documentation
Plus: slight editing
1 parent 30f21ad commit b80cb17

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

docs/plugins/multiserver.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ The plugin runs during `netlab create` on the controller and generates self-cont
2626

2727
The plugin is configured with the **multiserver** topology-level dictionary that has these parameters:
2828

29+
:::{table}
30+
:class: table-wrap
31+
2932
| Parameter | Type | Meaning |
3033
|-----------|------|---------|
3134
| **assignment** | string | How to assign nodes to workers: `explicit` (default) or `auto` |
@@ -35,14 +38,18 @@ The plugin is configured with the **multiserver** topology-level dictionary that
3538
| **output_dir** | string | Template for per-worker directory names (default: `server-{server_name}`); supports `{server_name}`, `{server_id}`, and `{name}` (topology name) |
3639
| **copy_dirs** | list | Subdirectories copied into every worker directory (default: `[group_vars, templates]`); overrides the default list |
3740
| **copy_files** | list | Top-level files copied into every worker directory (default: `[ansible.cfg]`); overrides the default list |
38-
| **extra_copy_dirs** | list | Additional subdirectories to copy on top of **copy_dirs** |
39-
| **extra_copy_files** | list | Additional top-level files to copy on top of **copy_files** |
41+
| **extra_copy_dirs** | list | Additional subdirectories to copy on top of **copy_dirs**. Use to copy plugins or configuration template directories to worker nodes. |
42+
| **extra_copy_files** | list | Additional top-level files to copy on top of **copy_files**. Use to copy standalone configuration templates to worker nodes. |
43+
:::
4044

4145
(multiserver-servers)=
4246
### Worker Parameters
4347

4448
The **multiserver.servers** dictionary is keyed by worker name (e.g. `srv1`, `dc-east`). Each entry represents one worker. The name is used for per-worker directory names and log messages, and because workers are a dictionary, duplicate worker names are impossible. Each entry supports these parameters:
4549

50+
:::{table}
51+
:class: table-wrap
52+
4653
| Parameter | Type | Meaning |
4754
|-----------|------|---------|
4855
| **id** | integer | Numeric identifier used for VXLAN bookkeeping; auto-assigned if omitted |
@@ -51,17 +58,22 @@ The **multiserver.servers** dictionary is keyed by worker name (e.g. `srv1`, `dc
5158
| **members** | list | Individual node names assigned to this worker |
5259
| **vxlan_dev** | string | Worker interface to bind VXLAN tunnels to this worker |
5360
| **weight** | integer | Relative capacity for auto-assignment (default: `1`); a worker with `weight: 2` absorbs twice as many nodes before being considered as loaded as a worker with `weight: 1` |
61+
:::
5462

5563
(multiserver-vxlan)=
5664
### VXLAN Parameters
5765

5866
Global VXLAN settings are specified in the **multiserver.vxlan** dictionary:
5967

68+
:::{table}
69+
:class: table-wrap
70+
6071
| Parameter | Type | Meaning |
6172
|-----------|------|---------|
6273
| **vni_base** | integer | Starting VNI for cross-worker links (default: `10000`) |
6374
| **dstport** | integer | UDP destination port for VXLAN traffic (default: `4789`) |
6475
| **dev** | string | **Required.** Default worker interface to bind VXLAN tunnels |
76+
:::
6577

6678
VXLAN tunnels bind to the global interface specified in **multiserver.vxlan.dev**. If your workers use different interface names, you can override this interface per-worker using the **vxlan_dev** parameter under each worker in the **multiserver.servers** dictionary.
6779

@@ -227,15 +239,15 @@ Each per-worker directory is self-contained and includes:
227239
* A tailored `clab.yml` with only the relevant nodes and cross-worker VXLAN interfaces
228240
* A filtered `netlab.snapshot.pickle` for use with `netlab up --snapshot`
229241
* A filtered `hosts.yml` containing only the nodes assigned to that worker, so `netlab initial` does not attempt to configure nodes on other workers
230-
* Copies of `node_files/` and `host_vars/` for only the nodes on that worker
242+
* Copies of `node_files/` and `host_vars/` for the nodes on that worker
231243
* Copies of the directories and files listed in **multiserver.copy_dirs** and **multiserver.copy_files**
232244
* Per-worker `vxlan-setup.sh` and `vxlan-teardown.sh` scripts (when multi-access VXLAN tunnels are needed), registered in that worker's snapshot as [CLI hooks](dev-cli-hooks) (`netlab.up.post_start_clab` / `netlab.down.pre_stop_clab`) so `netlab up` and `netlab down` run them automatically on the worker
233245

234246
(multiserver-deployment)=
235247
## Deployment Workflow
236248

237249
```{note}
238-
The plugin does **not** orchestrate workers. It runs only on the controller during `netlab create`, where it generates a self-contained directory per worker. It never opens SSH connections, runs commands remotely, or copies files to other systems. You copy each directory to its worker yourself (Step 2), and `netlab` then runs **independently on each worker** (Step 3) — the per-worker VXLAN CLI hooks fire locally on that worker, not from the controller.
250+
The plugin does **not** orchestrate workers. It runs only on the controller during `netlab create`, where it generates a self-contained directory per worker. It never opens SSH connections, runs commands remotely, or copies files to other systems. Copy each directory to its worker yourself (Step 2), and start the local nodes with `netlab up --snapshot` **independently on each worker** (Step 3) — the per-worker VXLAN CLI hooks fire locally on that worker, not from the controller.
239251
```
240252

241253
**Step 1: Generate configurations** on the controller:

0 commit comments

Comments
 (0)