Controller Node

Verify Requirements
Check the operating system
Currently we only support Ubuntu 20.04.5 LTS. Verify the operating system by
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"Check disk space
Here, we see that there is more than 20GB free in the root file system.
[root@dev01 ~]# df -h /
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl_dev-root 228G 135G 94G 60% /Check available memory
We see that total memory is more than 8G.
[root@dev01 ~]# free -h
total used free shared buff/cache available
Mem: 125G 3.6G 106G 39M 15G 121G
Swap: 4.0G 0B 4.0GSet up Linux users and permissions
We need somewhere to run the tools, and an account to run them as. We recommend not using the root account to do so. Ensure you have a non-root user account, with paswordless sudo configured. We will refer to this account as deploy-user, and their group as deploy-group. Replace these with your own values.
How to make the user expeca use sudo without password. Add it to the very last line.
$ sudo visudo
...
expeca ALL = (ALL) NOPASSWD: ALLEnsure permissions and groups
# Create and join deploy-group
[deploy-user@dev01 ~]$ sudo groupadd <deploy-group>
[deploy-user@dev01 ~]$ sudo usermod -a -G <deploy-group> <deploy-user>
# Create and join docker group
[deploy-user@dev01 ~]$ sudo groupadd docker
[deploy-user@dev01 ~]$ sudo usermod -a -G docker <deploy-user>Log out and back in to refresh group membership, then verify.
[deploy-user@dev01 ~]$ groups
... <deploy-group> dockerSet directory permissions
For this example, we'll be putting files into /opt/, so we need to ensure that it can be read and written by members of deploy-group
[deploy-user@dev01 ~]$ sudo chown root:<deploy-group> /opt
[deploy-user@dev01 ~]$ sudo chmod g+rw /optInstall dependencies
Now we need to install some dependencies, then check out and set up chi-in-a-box
# Install Dependencies
sudo apt update && sudo apt install -f -y \
python3 \
python3-venv \
jq \
gitConfigure networking
Apart from the management interface, there are 2 ethernet ports available on the controller machine, simillar to the figure, we create 4 virtual interfaces with 2 bridges.
Create the file /etc/systemd/network/20-veth-internal.netdev and insert:
[NetDev]
Name=veth-internala
Kind=veth
[Peer]
Name=veth-internalbCreate the file /etc/systemd/network/20-veth-public.netdev and insert
[NetDev]
Name=veth-publica
Kind=veth
[Peer]
Name=veth-publicbCreate the virtual interfaces by restarting networkd
sudo systemctl restart systemd-networkdAssume MGMT_IF is the reserved interface with the static ip MGMT_IP and the gateway MGMT_GW_IP for ssh connection to the controller. Configure netplan by editing the config file /etc/netplan/00-installer-config.yaml:
network:
ethernets:
eno8403: {}
ens1f0: {}
ens1f1: {}
veth-publica: {}
veth-publicb: {}
veth-internala: {}
veth-internalb: {}
<MGMT_IF>:
addresses:
- <MGMT_IP>
gateway4: <MGMT_GW_IP>
nameservers:
search:
- expeca
addresses:
- <MGMT_GW_IP>
dhcp4: false
optional: true
bridges:
brpublic:
interfaces:
- ens1f1
- veth-publica
addresses:
- 10.0.87.10/24
brinternal:
interfaces:
- ens1f0
- veth-internala
addresses:
- 10.20.111.10/23
- 192.168.2.1/16
version: 2Apply the changes by running sudo netplan generate && sudo netplan apply.
Last updated