You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/plugins/multiserver.md
+16-4Lines changed: 16 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -26,6 +26,9 @@ The plugin runs during `netlab create` on the controller and generates self-cont
26
26
27
27
The plugin is configured with the **multiserver** topology-level dictionary that has these parameters:
28
28
29
+
:::{table}
30
+
:class: table-wrap
31
+
29
32
| Parameter | Type | Meaning |
30
33
|-----------|------|---------|
31
34
|**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
35
38
|**output_dir**| string | Template for per-worker directory names (default: `server-{server_name}`); supports `{server_name}`, `{server_id}`, and `{name}` (topology name) |
36
39
|**copy_dirs**| list | Subdirectories copied into every worker directory (default: `[group_vars, templates]`); overrides the default list |
37
40
|**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
+
:::
40
44
41
45
(multiserver-servers)=
42
46
### Worker Parameters
43
47
44
48
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:
45
49
50
+
:::{table}
51
+
:class: table-wrap
52
+
46
53
| Parameter | Type | Meaning |
47
54
|-----------|------|---------|
48
55
|**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
51
58
|**members**| list | Individual node names assigned to this worker |
52
59
|**vxlan_dev**| string | Worker interface to bind VXLAN tunnels to this worker |
53
60
|**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
+
:::
54
62
55
63
(multiserver-vxlan)=
56
64
### VXLAN Parameters
57
65
58
66
Global VXLAN settings are specified in the **multiserver.vxlan** dictionary:
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.
67
79
@@ -227,15 +239,15 @@ Each per-worker directory is self-contained and includes:
227
239
* A tailored `clab.yml` with only the relevant nodes and cross-worker VXLAN interfaces
228
240
* A filtered `netlab.snapshot.pickle` for use with `netlab up --snapshot`
229
241
* 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
231
243
* Copies of the directories and files listed in **multiserver.copy_dirs** and **multiserver.copy_files**
232
244
* 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
233
245
234
246
(multiserver-deployment)=
235
247
## Deployment Workflow
236
248
237
249
```{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.
239
251
```
240
252
241
253
**Step 1: Generate configurations** on the controller:
0 commit comments