Skip to content

Commit 7a8e527

Browse files
authored
Merge pull request #3112 from CumulusNetworks/air-testing
Add breakout ports, outbound links, DHCP disable, and cloud-init docs
2 parents 68bc0bf + 38bf1a5 commit 7a8e527

5 files changed

Lines changed: 129 additions & 4 deletions

File tree

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
title: Cloud-Init
3+
author: NVIDIA
4+
weight: 50
5+
product: NVIDIA Air 2.0
6+
---
7+
8+
## Overview
9+
10+
Cloud-init is an industry-standard tool for automating the initial configuration of virtual machines on first boot. NVIDIA Air supports cloud-init through the {{<exlink url="https://cloudinit.readthedocs.io/en/latest/reference/datasources/nocloud.html" text="NoCloud datasource">}}, which allows you to inject user-data and meta-data into your simulation nodes.
11+
12+
With cloud-init, you can automate tasks such as:
13+
- Setting hostnames
14+
- Installing packages
15+
- Writing configuration files
16+
- Running custom scripts on first boot
17+
18+
## Supported Images
19+
20+
Cloud-init works on any image that includes cloud-init with NoCloud datasource support, including custom images. The Air-provided `generic/ubuntu` images include cloud-init out of the box.
21+
22+
## Configuration
23+
24+
Cloud-init configuration consists of two components:
25+
26+
- **User-data**: Defines the actions to perform on first boot, such as installing packages, running commands, or writing files. Supports all standard {{<exlink url="https://cloudinit.readthedocs.io/en/latest/explanation/format.html" text="cloud-init user-data formats">}}.
27+
- **Meta-data**: Provides instance metadata such as the hostname. Uses a simple `key: value` format.
28+
29+
### Workflow
30+
31+
Cloud-init is configured through the API. The general workflow is:
32+
33+
1. Create a simulation with your desired topology, but do not start it yet.
34+
2. Create **UserConfig** resources containing your user-data and meta-data content. UserConfigs are reusable — for example, you can create one user-data config and share it across multiple nodes, while giving each node its own meta-data with a unique hostname.
35+
3. Assign the UserConfig resources to simulation nodes using the {{<exlink url="https://air-ngc.nvidia.com/api/docs/#tag/nodes/PATCH/api/v3/simulations/nodes/bulk-assign" text="bulk-assign endpoint">}}. This endpoint lets you assign both user-data and meta-data to multiple nodes in a single request.
36+
4. Start the simulation. Cloud-init runs automatically on each node during its first boot.
37+
38+
{{%notice note%}}
39+
Cloud-init runs during the initial boot of each node. Configure cloud-init assignments before starting the simulation for the first time. Assignments made after a node has already booted do not take effect until the node is rebuilt.
40+
{{%/notice%}}
41+
42+
### Example
43+
44+
The following `cloud-config` user-data installs packages and writes a configuration file on first boot:
45+
46+
```yaml
47+
#cloud-config
48+
49+
packages:
50+
- curl
51+
- jq
52+
53+
write_files:
54+
- path: /etc/myapp/config.yaml
55+
content: |
56+
server:
57+
listen: 0.0.0.0:8080
58+
log_level: info
59+
```
60+
61+
For information and additional examples of user-data and meta-data formats, refer to the {{<exlink url="https://cloudinit.readthedocs.io/en/latest/explanation/format.html" text="cloud-init documentation">}}.

content/nvidia-air-v2/Custom-Topology.md

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,44 @@ Air also provides advanced options, such as enabling UEFI secure boot.
8585
{{<img src="/images/guides/nvidia-air-v2/AddNode.png" alt="">}}
8686
<br>
8787
<br>
88-
After you create your topology, start the simulation. You cannot add, remove, or edit nodes after the simulation starts for the first time
88+
After you create your topology, start the simulation. You cannot add, remove, or edit nodes after the simulation starts for the first time.
89+
90+
### Breakout Ports
91+
92+
For switch nodes, you can break out a port into multiple sub-ports to simulate multi-lane configurations. For example, breaking out `swp1` into four sub-ports creates `swp1s0`, `swp1s1`, `swp1s2`, and `swp1s3`.
93+
94+
To break out a port:
95+
96+
1. Select a switch node to open its properties panel.
97+
2. In the **Connectors** section, click **Breakout Port**.
98+
3. Select the ports you want to break out.
99+
4. Choose the split type (number of sub-ports) and click **Confirm**.
100+
101+
{{<img src="/images/guides/nvidia-air-v2/BreakoutPorts.png" alt="Breakout Port dialog showing port selection and split type">}}
102+
103+
The available split options depend on the switch model. To revert a breakout, select **Delete Breakout** in the Breakout Port dialog.
104+
105+
{{%notice note%}}
106+
Breakout ports can only be configured before the simulation starts for the first time. Only data plane interfaces on switch nodes support breakout — management and OOB interfaces do not.
107+
{{%/notice%}}
108+
109+
### Outbound Links
110+
111+
Outbound links connect a node's interface directly to external networks, giving that interface internet access independently of the OOB management network. This is useful when you need a node to have a public-facing interface — for example, to simulate an edge router or a firewall with an external uplink.
112+
113+
To configure an outbound link:
114+
115+
1. Select a node to open its properties panel.
116+
2. In the **Connectors** section, click the port you want to connect externally.
117+
3. In the Connect dialog, toggle **Outbound link** on.
118+
119+
{{<img src="/images/guides/nvidia-air-v2/OutboundLink.png" alt="Connect dialog showing outbound link toggle">}}
120+
121+
Outbound interfaces appear in the **Services** tab, where you can create services (such as SSH or HTTP) that terminate on the outbound interface.
122+
123+
{{%notice note%}}
124+
An outbound interface connects directly to the external network. It cannot also be connected to another node's interface.
125+
{{%/notice%}}
89126

90127
### OOB Management Network
91128

@@ -483,7 +520,7 @@ The following topology defines two nodes (`node-1` and `node-2`) connected to ea
483520

484521
The following topology defines two nodes (`node-1` and `node-2`) connected to each other through `eth1` interfaces. The out-of-band management network is disabled (`"oob": false`). The example includes:
485522
- Custom values for configurable node fields (`cpu`, `memory`, `storage`)
486-
- A public-facing interface (with a custom `mac` address) to the outside world (`eth2` of `node-1`)
523+
- An outbound link (`eth2` of `node-1`) that connects directly to external networks. In the links array, use the string `"outbound"` as the second element instead of a node reference.
487524
- A reference to the `os` image by specific UUID (`node-2`)
488525

489526
```
@@ -503,11 +540,15 @@ The following topology defines two nodes (`node-1` and `node-2`) connected to ea
503540
},
504541
"links": [
505542
[{"node": "node-1", "interface": "eth1"}, {"node": "node-2", "interface": "eth1"}],
506-
[{"node": "node-1", "interface": "eth2", "mac": "02:00:00:00:00:07"}, "exit"]
543+
[{"node": "node-1", "interface": "eth2", "mac": "02:00:00:00:00:07"}, "outbound"]
507544
]
508545
}
509546
```
510547

548+
{{%notice note%}}
549+
The string `"exit"` is also accepted as an alias for `"outbound"` in the links array.
550+
{{%/notice%}}
551+
511552
{{< /tab >}}
512553
{{< /tabs >}}
513554

content/nvidia-air-v2/OOB-Management-Network.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
title: OOB Management Network
33
author: NVIDIA
44
weight: 45
5-
product: NVIDIA Air
5+
product: NVIDIA Air 2.0
66
---
77

88
## Overview
@@ -119,6 +119,29 @@ When you enable the OOB network, Air automatically configures:
119119
- **DHCP relay** on leaf switches to forward DHCP requests to the server
120120
- **SSH key injection** so your Air SSH keys work on the `oob-mgmt-server`
121121

122+
### Disabling the DHCP Service
123+
124+
By default, the OOB network includes a fully configured DHCP server. If you want to manage DHCP yourself — for example, to run your own DHCP server with custom configurations — you can disable the automatic DHCP service while keeping the rest of the OOB network (L2 connectivity, management interfaces, and infrastructure nodes).
125+
126+
To disable DHCP when importing a JSON topology, set `enable_dhcp` to `false` in the `oob` object:
127+
128+
```
129+
{
130+
"nodes": { ... },
131+
"links": [ ... ],
132+
"oob": {
133+
"enable_dhcp": false
134+
}
135+
}
136+
```
137+
138+
When DHCP is disabled:
139+
140+
- The `oob-mgmt-server` and OOB switch infrastructure are still created.
141+
- Management interfaces (`eth0`) are still connected to the OOB network.
142+
- No DHCP server, DNS, or NAT gateway is configured on the `oob-mgmt-server`.
143+
- Nodes do not receive automatic IP assignments. You must configure IP addresses manually or provide your own DHCP server.
144+
122145
## Accessing Your Nodes
123146

124147
The `oob-mgmt-server` is the entry point to your simulation. When you connect via SSH (using the service URL provided by Air), you land on this server.
173 KB
Loading
86.3 KB
Loading

0 commit comments

Comments
 (0)