Installation

Initialize

  1. Keep your system updated:
$ sudo apt-get update
$ sudo apt-get dist-upgrade -y
  1. Reboot to apply changes:
$ sudo reboot

OpenIO Packages Configuration

On each server:

  1. Configure OpenIO SDS repository

Install some tools to make the installation easier:

# sudo apt-get -y install lsb-release apt-transport-https curl

Add the repository configuration:

# echo "deb http://mirror.openio.io/pub/repo/openio/sds/16.10/$(lsb_release -i -s)/ $(lsb_release -c -s)/" | sudo tee /etc/apt/sources.list.d/openio-sds.list

Add the OpenIO archive key:

# curl http://mirror.openio.io/pub/repo/openio/APT-GPG-KEY-OPENIO-0 | sudo apt-key add -
  1. Install the OpenIO puppet module:
# sudo apt-get update; sudo apt-get install puppet-module-openio-openiosds -y

Puppet Manifest

Now you can create a manifest file to configure OpenIO on the Raspberry Pi to run in standalone mode.

In a file called ~/openio.pp:

# Default ipaddress to use
$ipaddr = $ipaddress
# Comma separated list of 'project:user:passwd:privileges'
$default_tempauth_users = ['demo:demo:DEMO_PASS:.admin']

# Deploy a single node
class{'openiosds':}
openiosds::namespace {'OPENIO':
  ns             => 'OPENIO',
  conscience_url => "${ipaddr}:6000",
  oioproxy_url   => "${ipaddr}:6006",
  eventagent_url => "beanstalk://${ipaddr}:6014",
  meta1_digits   => 0,
}
openiosds::account {'account-0':
  ns         => 'OPENIO',
  ipaddress  => $ipaddr,
  redis_host => $ipaddr,
}
openiosds::conscience {'conscience-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::meta0 {'meta0-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::meta1 {'meta1-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::meta2 {'meta2-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::rawx {'rawx-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::rdir {'rdir-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
  location  => "${hostname}-other",
}
openiosds::oioblobindexer {'oio-blob-indexer-rawx-0':
  ns        => 'OPENIO',
}
openiosds::oioeventagent {'oio-event-agent-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::oioproxy {'oioproxy-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::redis {'redis-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::conscienceagent {'conscienceagent-0':
  ns        => 'OPENIO',
}
openiosds::beanstalkd {'beanstalkd-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}
openiosds::oioswift {'oioswift-0':
  ns               => 'OPENIO',
  ipaddress        => '0.0.0.0',
  sds_proxy_url    => "http://${ipaddr}:6006",
  auth_system      => 'tempauth',
  tempauth_users   => $default_tempauth_users,
  memcache_servers => "${ipaddr}:6019",
}
openiosds::memcached {'memcached-0':
  ns        => 'OPENIO',
  ipaddress => $ipaddr,
}

Note

  • You can change the interface to be used to install OpenIO SDS by replacing $ipaddress by another IP of another interface on your Raspberry Pi. Defaults to the IP of the first interface. Note that name are not supported.
  • You can change the default credentials by modifying demo:demo:DEMO_PASS:.admin according to your needs. It is a comma separated list of ‘project:user:password:role’[,..]

Package Installation and Service Configuration

Using puppet, we will install the packages and configure the services for your OpenIO namespace. To do so, just apply the manifest created earlier:

$ sudo puppet apply --no-stringify_facts ~/openio.pp

This step may take a few minutes. Please be patient as it downloads and installs all necessary packages. When it’s done, you can stop and disable the default services that are unecessary:

$ sudo systemctl stop apache2 memcached redis beanstalkd puppet
$ sudo systemctl disable apache2 memcached redis beanstalkd puppet

Initialize OpenIO Namespace

As you may have noticed the namespace is, by default, called OPENIO. The namespace must remain OPENIO for the following steps to work properly.

  1. meta0 service initialization:

    First, unlock all services in the namespace:

    $ openio --oio-ns=OPENIO cluster unlockall
    

    Bootstrap the directory:

    $ openio --oio-ns=OPENIO directory bootstrap --no-rdir
    
  2. meta0 and meta1 restart

    Restart the meta0 and the meta1 services on each server:

    $ sudo gridinit_cmd restart @meta0 @meta1
    
  3. Unlock all services:

    Finally, unlock all services in the namespace:

    $ openio --oio-ns=OPENIO cluster unlockall
    
  4. Assign the rawx to a rdir

    $ openio --oio-ns=OPENIO volume admin bootstrap
    

Be sure that every score is greater that 0 using openio cluster list:

$ openio --oio-ns OPENIO cluster list

Your namespace is now up and running!