Virtual machine template
Prepare VM template
This template will be used for all new VM's to be linked and cloned from.
- Download Ubuntu server LTS for arm via Ubuntu website
- Once downloaded open Parallels control centre and select new from the menu
- Choose: Install Windows, Linux, or macOS from an image file and continue
- Select a file: choose this option and select the iso from your downloads folder and then continue
- Change the name from Ubuntu Linux to dev-template, tick the box: Customise settings before installation and create
- The configuration options will display
- Name: dev-template
- Sharing: disable all sharing
- Hardware. CPU & Memory: 2 Processors with 2048MB memory
- Hardware. Shared Printers: Do not share mac printers
- Hardware. Network: Change to Wi-Fi
- Hardware. Sound and Camera: Disable all
- Hardware. Boot order: only enable Hard Disk
- Continue install
- Allocate all space to VM
- Enable SSH server
- Create username
- username: dev
- Install completed
- From parallels dashboard
- Start dev-template VM and console window will launch
- Right click and select configure
- Option: Startup and Shutdown
- Change to custom: On Window Close change to Keep running in background
- Option: Startup and Shutdown
- Console
- Choose a password and repeat it
- Login using username: dev and new password
- Start interactive shell as root:
sudo -i - Update packages:
apt update - Upgrade packages:
apt upgrade - Install additional packages:
apt install net-tools traceroute ntp locate - Check ethernet name and IP address:
ifconfig - Run the following command to edit the Netplan config:
vi /etc/netplan/50-cloud-init.yaml - Then change the contents in the file to your IP and gateway, making a note of the ethernet adapter - in my virtual environment it is:
enp0s5network:
version: 2
ethernets:
enp0s5:
addresses:
- '192.168.30.209/24'
routes:
- to: 'default'
via: '192.168.30.254' - Apply the changes:
netplan apply
- Close console (the VM will continue to run in the background)
Template preparation
Continue from ssh session.
- Connect to VM IP address in a new terminal session:
ssh dev@192.168.30.209 - Login with username:
devand password - Switch to
rootuser:sudo -i - Check routing table:
ip route - Check ping to google:
ping 8.8.8.8 - Check time and date:
timedatectl - Check swap usage:
swapon - Disable swap temporarily (reboot clears it):
swapoff -a - Disable swap perm
vi /etc/fstab - Comment out swap
# /swap.img none swap sw 0 0 - Prepare DNS - my router provides DNS
mkdir /etc/systemd/resolved.conf.d
vi /etc/systemd/resolved.conf.d/dns_servers.conf[Resolve]
DNS=192.168.30.254
Domains=~. - Enable and restart services
systemctl enable systemd-resolved
sudo systemctl restart systemd-resolved - Confirm local name resolution:
ping lab.reids.net.au - Confirm external name resolution:
ping www.google.com.au - Configure NTP (note NTP is now part of NTPSEC)
vi /etc/ntpsec/ntp.conf - Add local NTP server and comment out the defaults - my router provides NTP
pool 192.168.30.254 iburst
# pool 0.ubuntu.pool.ntp.org iburst
# pool 1.ubuntu.pool.ntp.org iburst
# pool 2.ubuntu.pool.ntp.org iburst
# pool 3.ubuntu.pool.ntp.org iburst
# server ntp.ubuntu.com - Restart NTP services for changes to take effect:
service ntp restart - Check that NTP services are being picked up:
ntpq -p - Check time and date:
timedatectl - Set timezone:
timedatectl set-timezone Australia/Perth - Update database for locate package:
updatedb - Add additional user:
adduser andy - Add new user to sudo list:
usermod -aG sudo andy - Disable IPv6
vi /etc/default/grub - Change the default
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 ipv6.disable=1 quiet splash" - Update grub for changes to take effect:
update-grub - Disable cloud init:
touch /etc/cloud/cloud-init.disabled - Install NFS:
apt install nfs-common -y - Reboot VM to ensure all changes have taken effect:
reboot - Log back into the VM and shutdown template VM so that it can be linked and cloned from (DO NOT power up again):
shutdown -P now- Once a linked clone is created, it’s frozen to the parent’s disk as it was at clone time. Future changes to the parent (template) — package installs, updates, config edits, etc. — will NOT propagate to existing clones but could break their dependency chain
Link and clone VM's from template VM
From Parallels desktop control panel
- Right click on
dev-templateand select Linked-clone and repeat for each linked clone, naming them:- dev-ansible
- dev-lb-v1
- dev-m-v1
- dev-w-v1
- DON'T start them yet
- Only one will be powered on at a time until its IP address has been changed and rebooted
- Each will start with the template IP address:
192.168.30.209
- Start dev-ansible by right clicking on it
-
Console will display
- Change the IP address to 192.168.30.208
sudo vi /etc/netplan/50-cloud-init.yamlnetwork:
version: 2
ethernets:
enp0s5:
addresses:
- '192.168.30.208/24'- Apply the changes:
sudo netplan apply - Check new IP:
ifconfig - Change hostname:
sudo hostnamectl set-hostname dev-ansible - Reboot:
sudo reboot
-
- Start dev-lb-v1 by right clicking on it
-
Console will display
- Change the IP address to 192.168.30.201
sudo vi /etc/netplan/50-cloud-init.yamlnetwork:
version: 2
ethernets:
enp0s5:
addresses:
- '192.168.30.201/24'- Apply the changes:
sudo netplan apply - Check new IP:
ifconfig - Change hostname:
sudo hostnamectl set-hostname dev-lb-v1 - Reboot:
sudo reboot
-
- Configure
dev-m-v1by right clicking on it-
Increase the number of processors to 4 and memory to 4096MB
-
Power on VM
-
Console will display
- Change the IP address to 192.168.30.203
sudo vi /etc/netplan/50-cloud-init.yamlnetwork:
version: 2
ethernets:
enp0s5:
addresses:
- '192.168.30.203/24'- Apply the changes:
sudo netplan apply - Check new IP:
ifconfig - Change hostname:
sudo hostnamectl set-hostname dev-m-v1 - Reboot:
sudo reboot
-

-
Configure
dev-w-v1- Increase the memory to 4096MB
- Power on VM
- Console will display
- Change the IP address to 192.168.30.206
sudo vi /etc/netplan/50-cloud-init.yamlnetwork:
version: 2
ethernets:
enp0s5:
addresses:
- "192.168.30.206/24"- Apply the changes:
sudo netplan apply - Check new IP:
ifconfig - Change hostname:
sudo hostnamectl set-hostname dev-w-v1 - Reboot:
sudo reboot
