Install

This section covers the standard procedure to install Rio/OS 2.0 *Aventura* using an ISO and an alternative manual method in an existing OS.

Getting Started Command Center

Install

Rio/OS offering two types of installation

  • Bootable USB Stick.
  • Existing OS using native packages (deb, rpm) and docker containers.

What is installed ?

The Rio OS components are grouped as per the pic.

Rio/OS Components

Name Description
Command center Command center for Rio/OS
Controller Controller to manage state of the Rio OS abstractions
Scheduler Scheduler that schedules jobs across the datacenter
PostgreSQL Persistent storage
API Server API for Rio/OS. The heart of the system which acts as the mediator for all of the Rio/OS system components.
Telemetry Metrics collector and analytics for Rio OS
PowerDNS Assign domain names for Rio/OS (Base Rio, digital cloud, containers and blockchain-backed apps)
Machine Console A VNC console proxy to access digital cloud
Blockchain Events storage based on blockchain.
Nodelet Rio OS compute enabler. Runs on nodes which will provide compute.
Fluent Bit Logs collector
Storlet Rio OS storage enabler. Runs on nodes that provides storage.

Rio/OS Hub and Spoke

Master

A Master contains the core Rio OS components.

  • Command Center
  • API Server
  • Controller
  • Scheduler
  • Telemetry
  • PowerDNS
  • PostgreSQL

Node

Each and every single server is considered as a node in Rio/OS. We can even use a master node as one of the servers (node) itself.

A Node contains the compute, storage and networking components.

  • Nodelet
  • Fluent Bit

Storage

Digital cloud, container and blockchain apps consume space from storage server.

A Storage component.

  • Storlet

Option 1: ISO Installation

ISO is packed with Rio OS components that is sufficient to make a private cloud environment.

Request accessContact sales@rio.company for requesting access to the private link.

Download the ISO from the private link here. Burn the ISO into the USB using your platform specific instructions.

Installing! Insert the USB in the server. Follow the instructions and you are done.

Rio/OS comes packaged as a combination of native debs/rpm packages and docker containers stored in a private registry.

Pre requistes

Pre requisitesRuby 2.5.x installed in your workstation.

Install

Visit Autorio for detailed instruction.

Rollback

Visit Autorio for detailed instruction.

Option 3: Manual

Rio/OS comes packaged as a combination of native debs/rpm packages and docker containers stored in a private registry.

Planning

Every site has its own ip addresses. Hence a common set of variables are exported before the install.

Cautionexported variables are persistent in your current bash terminal only. If you open another terminal then perform the export again in the new terminal.

export MY_IP_ADDRESS=192.168.2.47

export RIOOS_VERSION=2.0.0.rc4

export RIOOS_REPO=get.rioos.xyz

export RIOOS_REGISTRY=registry.rioos.xyz:5000

export RIOOS_HOME=/var/lib/rioos

export RIOOS_CONFIG_HOME=$RIOOS_HOME/config

export DNS_ENDPOINT=http://console.rioos.xyz:8081

export API_SERVER=https://console.rioos.xyz:7443

export WATCH_SERVER=https://console.rioos.xyz:8443

Install Docker

Debian based


sudo apt-get install wget curl

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu  $(lsb_release -cs) stable"

sudo apt-get update -y

sudo apt-get install -y docker-ce

RedHat based


sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
    
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

sudo yum install docker-ce

Elevate docker user to sudoer. Helps not to type sudo docker <command> for all the commands.

sudo usermod -aG docker ${USER}

Run Docker

sudo systemctl start docker

sudo systemctl status docker

Access Private Registry

Request accessContact sales@rio.company for requesting access to the private registry CA certificate.

Contact sales requesting access to the below link.

Download the private registry CA certificate

The CA certificate is needed to access the private registry behind TLS.

Create /etc/docker/certs.d

Copy the downloaded ca.crt into /etc/docker/certs.d/$RIOOS_REGISTRY directory

mv $CA_CRT /etc/docker/certs.d/$RIOOS_REGISTRY

exit

sudo -s

export CA_CRT=$PWD/ca.crt

mkdir -p /etc/docker/certs.d/$RIOOS_REGISTRY

mv $CA_CRT /etc/docker/certs.d/$RIOOS_REGISTRY

exit

Login to registry


docker login $RIOOS_REGISTRY

userid: rioosadmin    
password: team4rio 

Add Debian based Repo

Add deb testing packaging repo using the instructions below in systems running Rio OS Aventura, Ubuntu 16.04/18.04 and Debian 8/9.


sudo apt-add-repository "deb [arch=amd64] https://$RIOOS_REPO/repo/rioos/aventura/$RIOOS_VERSION/testing aventura testing"

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 02789828

sudo apt-get update


Add RedHat based Repo

Add yum testing packaging repo using the instructions below in systems running CentOS 7.x.


cat << EOT > /etc/yum.repos.d/rioos.repo
[RioOS]
name=RioOS
baseurl=https://$RIOOS_REPO/repo/centos/centos7/$RIOOS_VERSION/testing/centos7/
enabled=1
gpgcheck=0
EOT

sudo yum update


Install Master

After successfully accessing the Rio/OS private registry.

Master IP Address$MY_IP_ADDRESS contains the master ip address. In this case 192.168.2.47. Replace it with the ip address of your server.

Version2.0.0-rc3 is the latest version referenced as $RIOOS_VERSION. Verify the release notes for newer versions.

Environment Variables

  • $DNS_ENDPOINT contains the PowerDNS endpoint. In this case http://console.rioos.xyz:8081. Replace it with your ip address of your dns endpoint.
  • $API_SERVER contains the Rio OS API Server endpoint. In this case https://console.rioos.xyz:7443. Replace it with your api server's endpoint.
  • $WATCH_SERVER contains the Rio OS Watch Server (http2 based) endpoint. In this case https://console.rioos.xyz:8443. Replace it with your watch server's endpoint.

  • Command center for Rio/OS.

sudo docker run -d -p $MY_IP_ADDRESS:443:8000 --name=rioosui_$RIOOS_VERSION -v $RIOOS_CONFIG_HOME:$RIOOS_CONFIG_HOME --restart always $RIOOS_REGISTRY/rioosui:$RIOOS_VERSION

  • Controller & Scheduler

sudo docker run -d --net=host -p $MY_IP_ADDRESS:10252:10252 --name=riooscontroller_$RIOOS_VERSION -e DNS_ENDPOINT=$DNS_ENDPOINT -e API_SERVER=$API_SERVER -e WATCH_SERVER=$WATCH_SERVER -v $RIOOS_CONFIG_HOME:$RIOOS_CONFIG_HOME --restart always $RIOOS_REGISTRY/riooscontroller:$RIOOS_VERSION
<<<<<<< HEAD


=======


>>>>>>> origin/master
sudo docker run -d --net=host -p $MY_IP_ADDRESS:10251:10251 --name=rioosscheduler_$RIOOS_VERSION -e API_SERVER=$API_SERVER -e WATCH_SERVER=$WATCH_SERVER -v $RIOOS_CONFIG_HOME:$RIOOS_CONFIG_HOME --restart always $RIOOS_REGISTRY/rioosscheduler:$RIOOS_VERSION

  • PostgreSQL

This is used to store all Rio/OS data and DNS records


sudo docker run -d --name postgresql -e POSTGRES_PASSWORD=supersecret -v $RIOOS_HOME/pg-data:/var/lib/postgresql --restart always $RIOOS_REGISTRY/rioospostgres:10.3


  • API Server

Heart of Rio/OS. This is an Intermediary to the UI, controller, scheduler, nodelet and storlet.


sudo docker run --net=host -d --name rioosapiserver_$RIOOS_VERSION -p $MY_IP_ADDRESS:7443:7443 -p $MY_IP_ADDRESS:8443 -p $MY_IP_ADDRESS:9443:9443 -e RIOOS_HOME=$RIOOS_HOME/ -v $RIOOS_CONFIG_HOME=$RIOOS_CONFIG_HOME --restart always $RIOOS_REGISTRY/rioosapiserver:$RIOOS_VERSION


  • Blockchain Events Server

sudo docker run -d --name rioosblockchain_$RIOOS_VERSION -p $MY_IP_ADDRESS:7000:7000 -v $RIOOS_CONFIG_HOME:$RIOOS_CONFIG_HOME -v $RIOOS_HOME/blockchain:$RIOOS_HOME/blockchain --restart always $RIOOS_REGISTRY/rioosblockchain:$RIOOS_VERSION


  • Telemetry

This is used to pull metrics for all digital cloud, containers, blockchain-backed apps, nodes.


sudo docker run -d --net=host -p $MY_IP_ADDRESS:9090:9090 --name rioosprometheus_$RIOOS_VERSION -v $RIOOS_CONFIG_HOME:$RIOOS_CONFIG_HOME  --restart always $RIOOS_REGISTRY/rioosprometheus:$RIOOS_VERSION

  • PowerDNS

Assign domain name to Rio/OS components, digital cloud, containers and blockchain-backed apps deployed by Rio/OS.

Pre requisites

  • postgresql container is available and running..
  • Make sure jq package for your operating sytem is installed.

    Debian based: sudo apt-get install jq

    RedHat based: sudo yum install -y jq

AUTOCONF environment variable is defined to usePostgreSQL backed database for PowerDNS.


sudo docker run -d --name rioospowerdns --link postgresql:postgresql -p $MY_IP_ADDRESS:8081:8081 -p $MY_IP_ADDRESS:53:53 -p $MY_IP_ADDRESS:53:53/udp -e AUTOCONF=postgres -e PGSQL_USER=postgres -e PGSQL_PASS=supersecret --restart always $RIOOS_REGISTRY/rioospowerdns:4.0.3 --cache-ttl=120 --allow-axfr-ips=127.0.0.1


Create a private domain named rioosbox.com in PowerDNS


curl -X POST --data '{"name":"rioosbox.com.", "kind": "Native", "masters": [], "nameservers": ["ns1.rioosbox.com.", "ns2.rioosbox.com."]}' -v -H 'X-API-Key: rioos_api_key' http://$DNS_ENDPOINT/api/v1/servers/localhost/zones | jq .

Verify rioosbox.com


curl -H 'X-API-Key: rioos_api_key' $DNS_ENDPOINT/api/v1/servers/localhost/zones | jq .

  • Logs Collector

Fluent Bit is used to collect logs from nodes, digitalcloud, containers and blockchain-backed apps.

  • Logs Storage plugin - InfluxDB

This is a logs storage for Fluent Bit. All logs collected gets stored in influxDB


sudo docker run -d -p $MY_IP_ADDRESS:8086:8086 --name=influxdb -v $RIOOS_HOME/influxdb:$RIOOS_HOME/influxdb --restart always $RIOOS_REGISTRY/rioosinfluxdb:1.3.7

  • Logs Storage plugin - Elastic Search «««< HEAD

Yet another logs storage for Fluent Bit.


=======

Yet another logs storage for Fluent Bit.

origin/master docker run -d r$RIOOS_REGISTRY/riooselasticsearch:5.6.9


* Visualize Logs for Elastic Search using Kibana.

Here the elastic search's ip address is `172.17.0.2` 

docker run –name kibana -e ELASTICSEARCH_URL=http://172.17.0.2:9200 -p 5601:5601 -d $RIOOS_REGISTRY/riooskibana:5.6.9


* Visualize Logs for InfluxDB using Chronograf

docker run -p 8888:8888 $RIOOS_REGISTRY/riooschronograf:1.3.10.0



* Machine console server

The following operating systems are supported. 
 
- Debian  8/9
- CentOS 7.x
- Rio OS Aventura
- Ubuntu 16.0/18.04


#### Debian based


[Add Debian based repo](#add-debian-based-repo) must be addded before attempting an install.


sudo apt-get install -y rioos-vnc


#### RedHat based

[Add RedHat based repo](#add-redhat-based-repo) must be added before attempting an install. 


sudo yum install -y rioos-vnc



### Instal Nodelet

Nodelet is installed in every compute node. 

The following operating systems are supported. 
 
- Debian  8/9
- CentOS 7.x
- Rio OS Aventura
- Ubuntu 16.0/18.04


#### Debian

[Add Debian based repo](#add-debian-based-repo) must be addded before attempting an install.

sudo apt-get install -y rioos-nodelet


#### RedHat based

[Add RedHat based repo](#add-redhat-based-repo) must be added before attempting an install. 


sudo yum install -y rioos-nodelet


See [Nodes guide](/docs/nodes) to configure and use the nodes

### Storage

The following operating systems are supported. 
 
- Debian  8/9
- CentOS 7.x
- Rio OS Aventura
- Ubuntu 16.0/18.04


#### Debian based

[Add Debian based repo](#add-debian-based-repo) must be addded before attempting an install.

sudo apt-get install -y rioos-storlet


#### RedHat based

[Add RedHat based repo](#add-redhat-based-repo) must be added before attempting an install. 

sudo yum install -y rioos-storlet

```

Read more about Storage to configure and use the storage.

Location

Now that the basic constructs are setup, its time to setup a location.

The taks that are needed are

  • Connecting Compute
  • Create Storage and mount disks
  • Configure Networking (subnets)
  • Create Datacenter and attach compute nodes, storage and netoworking.

Read more about Locations to configure and use the datacenter.