What is Cloudy

From Guifi - Media-pool Common Repository

Revision as of 21:08, 12 May 2015 by Conxuro (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Clommunity-logo.png
Logo guifi.svg

Cloudy [1] is a distribution based in Debian GNU/Linux [2] developed under the CLOMMUNITY european research project.[3]

This distribution, inspired in the idea of the old Guinux [4], facilitates the deployment and the management of cloud services[5], as well as sharing them. Particulary intended to the community network[6] users.




Introduction

Prior to the general adoption of cloud services[5], users of Community Networks (CNs[6]) already shared or provided services and resources to the community, however, these users were only a minority. One of the reasons identified is the technological barrier. Before providing content, users willing to share information with the community have first to take care of the technical aspects such as the deployment of a server with a set of services.

In the past, users from the Guifi.net CN tried to overcome this problem by releasing a GNU/Linux distribution named Guinux [4], which provided end users an easy way of offering network services to the community (like HTTP proxy, DNS systems and MRTG graphic interfaces).

The key part of the distribution was a set of scripts[7] that automatised the configuration process. End users were only asked for a few parameters such as their e-mail address and the node identifier. Shortly after the distribution was made available the number of end users sharing resources proliferated.

According to that, it became clear that lowering (or removing) the technological entry barrier encouraged users to provide more services and share their resources with the community. To this end, one of the goals of the CLOMMUNITY [3] project is to release a GNU/Linux distribution, codenamed Cloudy, aimed at end users, to foster the transition and adoption of the Community Network cloud environment.


Motivation

The Cloudy distributión is thought to satisfy the following requirements:

  1. Distribution: in order to foster services distribution amongst the Community Networks (CNs), a platform to publish and discover them is required. This way, service access does not depend on static networking deployments and is aware of the dynamically-changing conditions of CNs. The software chosen for service publishing and discovering is Avahi[8].
  2. Decentralisation: a common network layer is required to allow all CN cloud nodes to communicate with each other directly. A good way to build it is to create a virtual Layer 2 based on a VPN[9] service. Among the available options, Tinc VPN[10] has been chosen, as it fulfills all the requirements while being easy to configure and manage.

To coordinate the devices with TincVPN, a tool to automate the system deployment has been developed as part of the project. This software, named Getinconf[11], takes care of the TincVPN configuration process and the exchange of keys with the rest of the cloud nodes.

  1. User-friendliness: to this end, a web-based management platform has been developed aimed to integrate all the installation and configuration steps for the cloud services enabled in the Cloudy distribution. A simple web interface[12] is available to the end user as an easy way of configure, administer and monitor the cloud services running in the node.
  2. Free, Libre, Open Source Software: the distribution has been based on Debian GNU/Linux[2]. Apart from being one of the most popular distributions and fulfilling all the technical requirements, it has been chosen because the Debian Social Contract[13] safeguards and guarantees that the software will always be open and free.


Minimum requirements

As Cloudy is based in Debian, it has the same hardware requirements.[14]

The binary image have a set of configurations and additional packages; thus are needed arround 450 MiB of free storage space. Anyway, it is recommended to have at least 1 GiB.

If you want to use some services like PeerStreamer (read below) the minimum requirements will increase, both storage, memory and processing.


Getting Cloudy

Actually you can obtain the Cloudy distribution by downloading an ISO image ready to burn in a CD or USB memory, or by downloading a template (LXC container[15] or OpenVZ[16]) ready to be executed in a virtual machine.

Alternatively you can download the source code and compile it by your own.


Downloading the image

Go to the Cloudy site where image are stored:

http://repo.clommunity-project.eu/images/

Currently is in development and is only available the unstable branch.

There you will find:

  • cloudy.README - List of additional packages included in the image.
  • cloudy.container.tar.gz - Container template.
  • cloudy.iso - ISO image

Burn the ISO image (Linux)

The ISO file is a live install CD image, it means that it has installation system which is executed from a removable device (CD/DVD/USB) at boot.

You can burn it in:

  • A CD or DVD:
$ apt-get install xorriso
$ xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed cloudy.iso
  • A USB memory:
$ dd if=cloudy.iso of=${USBSTICK}


Compiling

In order to build or compile Cloudy some programs are needed in your machine to download the sources, generate the binaries, manipulate the ISO images, etc.

1. Download the needed packages (example with the apt tool in the Debian based systems):

sudo apt-get install build-essential live-build imagemagick curl debootstrap git unzip 

2. Download the "builder" LBmake (Live-Build Make) to create the image:

git clone https://github.com/Clommunity/lbmake

3. Compile and generate the ISO image (and the Linux container):

  • Go to the directory where you have downloaded the source of LBmake and compile it using the make tool:
cd lbmake
sudo make

4. Once the image is generated you can test it virtualizing the system with QEMU.[17]

  • Generate a disk image and use the ISO image as a live CD for the installation:
qemu-img create -f qcow2 disk.qcow2 4G
qemu-system-i386 -enable-kvm -cdrom devel/binary.hybrid.iso -hda disk.qcow2

NOTE: if you have a relatively recent machine, adding the option '-enable-kvm' you will take profit from the hardware virtualization, it will increase the speed and performance.

Linux container

Optionally, from the ISO image you can create a Linux container with the following command:

sudo make container

NOTE: before generating the container you have to create the ISO image first. If not, the previous command will generate firstly the ISO and after the container.


Installation

As it is explained in the introduction, the Cloudy distribution is based in Debian GNU/Linux and made in a live ISO image.

You can boot the system from the external device (CD/DVD/USB), or start the installation process by selecting the corresponding option from the menu.

Cloudy-boot-install.png

The installation is the same as a standard Debian[18], and the steps can be sumarize in:


Services

Below you can see what processes are currently available in Cloudy to be configured easily through the web interface.

"NOTE: each service is explained in the Cloudy website[19]"


Clommunity

  • Getinconf (TincVPN client management)
  • OpenVZ Web Panel (virtual machines management)
  • Peer Streamer (distributed streaming)
  • Syncthing (network file synchronization)
  • Tahofe-LAFS (distributed file system)
  • Webdav server

Guifi

  • Proxy3 (web proxy)
Cloudy-guifi-proxy.png
  • SNPServices (monitoring/graphs)
Cloudy-guifi-snpservices.png
  • DNSServices (DNS)
Cloudy-guifi-dnsservices.png


References

  1. Cloudy: http://wiki.clommunity-project.eu/soft:cloudservices
  2. 2.0 2.1 Debian GNU/Linux: http://debian.org
  3. 3.0 3.1 CLOMMUNITY project: http://clommunity-project.eu
  4. 4.0 4.1 Guinux: http://guifi.net/node/29320
  5. 5.0 5.1 Cloud computing: http://en.wikipedia.org/wiki/Cloud_computing
  6. 6.0 6.1 Community networks: http://en.wikipedia.org/wiki/Community_network
  7. http://en.wikipedia.org/wiki/Scripting_language
  8. Avahi: http://avahi.org
  9. Virtual Private Network: http://en.wikipedia.org/wiki/Virtual_private_network
  10. Tinc VPN: http://tinc-vpn.org
  11. Getinconf: https://github.com/Clommunity/getinconf/blob/master/README.md
  12. Cloudy web interface: http://redmine.confine-project.eu/projects/getinconf
  13. Debian social contract: https://www.debian.org/social_contract
  14. Minimum requirements: https://www.debian.org/releases/stable/i386/ch03s04.html.en
  15. Linux containers (LXC): https://linuxcontainers.org/
  16. http://openvz.org
  17. QEMU processor emulator: http://wiki.qemu.org/Main_Page
  18. Debian installation procedure: http://www.debian.org/releases/stable/i386/
  19. Cloudy contents: http://cloudy.community/features/


External links

Personal tools