Installing RancherOS on OpenNebula
At the time of writing, Rancher does not publish VM images that are not aimed at a particular cloud provider and I therefore set about installing RancherOS with just the provided ISO.
Step 1: Download and import images
To begin, download the RancherOS ISO and then upload it into OpenNebula’s image system.
sudo -u oneadmin -i
cd /tmp
wget https://releases.rancher.com/os/latest/rancheros.iso
oneimage create --name RancherOS --path /tmp/rancheros.iso \
--prefix hd --type CDROM -d default
The image type CDROM
is used as the ISO is used to install the OS rather than as a boot disk. Although it may be possible to boot from the image with a different prefix than hd
, this is the one I got working first (using vd
did not work).
Now that we have an installer ISO, let’s create a blank qcow2 image that will be used as the OS disk and then import it into OpenNebula.
qemu-img create -f qcow2 -o size=10G /tmp/blank.qcow2
oneimage create --name Blank --path /tmp/blank.qcow2 \
--prefix vd --type OS -d default --driver qcow2
In this case, we specify the qcow2
driver, type and prefix for an OS disk.
Step 2: Creating a template
Once the images have been imported, we can create a template to use for RancherOS. It is composed of the following parts:
-
A boot disk (Blank) for the OS to be installed on.
-
A cdrom (RancherOS) to install the OS with.
-
The correct boot order for installing and then using RancherOS.
-
A network adapter.
The following template is an example of the above requirements.
CONTEXT=[
NETWORK="YES",
SSH_PUBLIC_KEY="$USER[SSH_PUBLIC_KEY]" ]
CPU="2"
DISK=[
IMAGE="Blank 10GB",
IMAGE_UNAME="james",
SIZE="10240" ]
DISK=[
IMAGE="RancherOS v0.4.4",
IMAGE_UNAME="james" ]
GRAPHICS=[
LISTEN="0.0.0.0",
TYPE="vnc" ]
MEMORY="2048"
NIC=[
NETWORK="Main",
NETWORK_UNAME="james" ]
OS=[
ARCH="x86_64",
BOOT="hd,cdrom" ]
You can either adapt the above or manually create one with the onetemplate
tool or SunStone GUI.
NB: As the RancherOS ISO does not support OpenNebula’s contextualization, we must manually configure networking (shown below).
Documentation
Step 3: Creating a VM
Create a new VM with the template that was configured in the previous step and then use the built-in VNC client (part of the SunStone GUI) to see the console. If the above was done correctly, the VM should have booted from the RancherOS ISO.
Step 4: Install RancherOS onto the main disk
Once the VM has booted, login with the username rancher
and password rancher
. Following the instructions on the RancherOS documentation, install RancherOS to /dev/vda
and then (when asked) choose to reboot. If everything was installed correctly, the VM will now boot from RancherOS on the hard drive.
An example cloud config is shown below (see the RancherOS cloud config reference).
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3...igrw== MyKey
rancher:
network:
interfaces:
eth*:
dhcp: false
eth0:
address: 192.168.100.100/24
gateway: 192.168.100.1
mtu: 1500
# If this MAC address happens to match eth0, eth0 will be programmed to use DHCP.
"mac=ea:34:71:66:90:12:01":
dhcp: true
dns:
nameservers:
- 8.8.8.8
- 8.8.4.4
Once you’ve made a cloud config file with all of the required configuration, use the ros
command to install RancherOS to the main disk.
vi cloud-config.yml
sudo ros install -c cloud-config.yml -d /dev/vda
Step 5: Install the RancherOS server
Login to the VM with one of the SSH keys configured above and then use the following command to install the server (where 1.2.3.4
is the VM IP address configured in the cloud-config.yml
above).
ssh rancher@1.2.3.4
# In the VM
sudo docker run -d --restart=always -p 8080:8080 rancher/server
In a few minutes, your new RancherOS install will be visible at http://1.2.3.4:8080
. Enjoy!
If anything isn’t clear please contact me via Twitter or the e-mail shown below and I’ll do my best to update this guide.