Statistics
| Branch: | Tag: | Revision:

root / docs / quick-install-admin-guide.rst @ 04c1254b

History | View | Annotate | Download (58.9 kB)

1 bdb83fd6 cven
.. _quick-install-admin-guide:
2 bdb83fd6 cven
3 bdb83fd6 cven
Administrator's Quick Installation Guide
4 a96ec00f Constantinos Venetsanopoulos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5 a96ec00f Constantinos Venetsanopoulos
6 a96ec00f Constantinos Venetsanopoulos
This is the Administrator's quick installation guide.
7 a96ec00f Constantinos Venetsanopoulos
8 a96ec00f Constantinos Venetsanopoulos
It describes how to install the whole synnefo stack on two (2) physical nodes,
9 a96ec00f Constantinos Venetsanopoulos
with minimum configuration. It installs synnefo from Debian packages, and
10 a96ec00f Constantinos Venetsanopoulos
assumes the nodes run Debian Squeeze. After successful installation, you will
11 a96ec00f Constantinos Venetsanopoulos
have the following services running:
12 a96ec00f Constantinos Venetsanopoulos
13 a96ec00f Constantinos Venetsanopoulos
 * Identity Management (Astakos)
14 dad708b4 Antony Chazapis
 * Object Storage Service (Pithos+)
15 a96ec00f Constantinos Venetsanopoulos
 * Compute Service (Cyclades)
16 a96ec00f Constantinos Venetsanopoulos
 * Image Registry Service (Plankton)
17 a96ec00f Constantinos Venetsanopoulos
18 a96ec00f Constantinos Venetsanopoulos
and a single unified Web UI to manage them all.
19 a96ec00f Constantinos Venetsanopoulos
20 a96ec00f Constantinos Venetsanopoulos
The Volume Storage Service (Archipelago) and the Billing Service (Aquarium) are
21 a96ec00f Constantinos Venetsanopoulos
not released yet.
22 a96ec00f Constantinos Venetsanopoulos
23 dad708b4 Antony Chazapis
If you just want to install the Object Storage Service (Pithos+), follow the guide
24 a96ec00f Constantinos Venetsanopoulos
and just stop after the "Testing of Pithos+" section.
25 a96ec00f Constantinos Venetsanopoulos
26 a96ec00f Constantinos Venetsanopoulos
27 a96ec00f Constantinos Venetsanopoulos
Installation of Synnefo / Introduction
28 a96ec00f Constantinos Venetsanopoulos
======================================
29 a96ec00f Constantinos Venetsanopoulos
30 a96ec00f Constantinos Venetsanopoulos
We will install the services with the above list's order. Cyclades and Plankton
31 a96ec00f Constantinos Venetsanopoulos
will be installed in a single step (at the end), because at the moment they are
32 a96ec00f Constantinos Venetsanopoulos
contained in the same software component. Furthermore, we will install all
33 a96ec00f Constantinos Venetsanopoulos
services in the first physical node, except Pithos+ which will be installed in
34 a96ec00f Constantinos Venetsanopoulos
the second, due to a conflict between the snf-pithos-app and snf-cyclades-app
35 a96ec00f Constantinos Venetsanopoulos
component (scheduled to be fixed in the next version).
36 a96ec00f Constantinos Venetsanopoulos
37 a96ec00f Constantinos Venetsanopoulos
For the rest of the documentation we will refer to the first physical node as
38 a96ec00f Constantinos Venetsanopoulos
"node1" and the second as "node2". We will also assume that their domain names
39 a96ec00f Constantinos Venetsanopoulos
are "node1.example.com" and "node2.example.com" and their IPs are "4.3.2.1" and
40 a96ec00f Constantinos Venetsanopoulos
"4.3.2.2" respectively.
41 a96ec00f Constantinos Venetsanopoulos
42 a96ec00f Constantinos Venetsanopoulos
43 a96ec00f Constantinos Venetsanopoulos
General Prerequisites
44 a96ec00f Constantinos Venetsanopoulos
=====================
45 a96ec00f Constantinos Venetsanopoulos
46 a96ec00f Constantinos Venetsanopoulos
These are the general synnefo prerequisites, that you need on node1 and node2
47 a96ec00f Constantinos Venetsanopoulos
and are related to all the services (Astakos, Pithos+, Cyclades, Plankton).
48 a96ec00f Constantinos Venetsanopoulos
49 a96ec00f Constantinos Venetsanopoulos
To be able to download all synnefo components you need to add the following
50 a96ec00f Constantinos Venetsanopoulos
lines in your ``/etc/apt/sources.list`` file:
51 a96ec00f Constantinos Venetsanopoulos
52 d109485a Constantinos Venetsanopoulos
| ``deb http://apt.dev.grnet.gr squeeze main``
53 d109485a Constantinos Venetsanopoulos
| ``deb-src http://apt.dev.grnet.gr squeeze main``
54 a96ec00f Constantinos Venetsanopoulos
55 a96ec00f Constantinos Venetsanopoulos
You also need a shared directory visible by both nodes. Pithos+ will save all
56 a96ec00f Constantinos Venetsanopoulos
data inside this directory. By 'all data', we mean files, images, and pithos
57 a96ec00f Constantinos Venetsanopoulos
specific mapping data. If you plan to upload more than one basic image, this
58 a96ec00f Constantinos Venetsanopoulos
directory should have at least 50GB of free space. During this guide, we will
59 a96ec00f Constantinos Venetsanopoulos
assume that node1 acts as an NFS server and serves the directory ``/srv/pithos``
60 a96ec00f Constantinos Venetsanopoulos
to node2. Node2 has this directory mounted under ``/srv/pithos``, too.
61 a96ec00f Constantinos Venetsanopoulos
62 a96ec00f Constantinos Venetsanopoulos
Before starting the synnefo installation, you will need basic third party
63 a96ec00f Constantinos Venetsanopoulos
software to be installed and configured on the physical nodes. We will describe
64 a96ec00f Constantinos Venetsanopoulos
each node's general prerequisites separately. Any additional configuration,
65 a96ec00f Constantinos Venetsanopoulos
specific to a synnefo service for each node, will be described at the service's
66 a96ec00f Constantinos Venetsanopoulos
section.
67 a96ec00f Constantinos Venetsanopoulos
68 a96ec00f Constantinos Venetsanopoulos
Node1
69 a96ec00f Constantinos Venetsanopoulos
-----
70 a96ec00f Constantinos Venetsanopoulos
71 a96ec00f Constantinos Venetsanopoulos
General Synnefo dependencies
72 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73 a96ec00f Constantinos Venetsanopoulos
74 a96ec00f Constantinos Venetsanopoulos
 * apache (http server)
75 a96ec00f Constantinos Venetsanopoulos
 * gunicorn (WSGI http server)
76 a96ec00f Constantinos Venetsanopoulos
 * postgresql (database)
77 a96ec00f Constantinos Venetsanopoulos
 * rabbitmq (message queue)
78 a96ec00f Constantinos Venetsanopoulos
79 a96ec00f Constantinos Venetsanopoulos
You can install the above by running:
80 a96ec00f Constantinos Venetsanopoulos
81 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
82 a96ec00f Constantinos Venetsanopoulos
83 bdfd94c9 Constantinos Venetsanopoulos
   # apt-get install apache2 postgresql rabbitmq-server
84 a96ec00f Constantinos Venetsanopoulos
85 73ff1d54 Constantinos Venetsanopoulos
Make sure to install gunicorn >= v0.12.2. You can do this by installing from
86 73ff1d54 Constantinos Venetsanopoulos
the official debian backports:
87 73ff1d54 Constantinos Venetsanopoulos
88 73ff1d54 Constantinos Venetsanopoulos
.. code-block:: console
89 73ff1d54 Constantinos Venetsanopoulos
90 73ff1d54 Constantinos Venetsanopoulos
   # apt-get -t squeeze-backports install gunicorn
91 73ff1d54 Constantinos Venetsanopoulos
92 73ff1d54 Constantinos Venetsanopoulos
On node1, we will create our databases, so you will also need the
93 73ff1d54 Constantinos Venetsanopoulos
python-psycopg2 package:
94 a96ec00f Constantinos Venetsanopoulos
95 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
96 a96ec00f Constantinos Venetsanopoulos
97 a96ec00f Constantinos Venetsanopoulos
   # apt-get install python-psycopg2
98 a96ec00f Constantinos Venetsanopoulos
99 a96ec00f Constantinos Venetsanopoulos
Database setup
100 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~
101 a96ec00f Constantinos Venetsanopoulos
102 a96ec00f Constantinos Venetsanopoulos
On node1, we create a database called ``snf_apps``, that will host all django
103 a96ec00f Constantinos Venetsanopoulos
apps related tables. We also create the user ``synnefo`` and grant him all
104 a96ec00f Constantinos Venetsanopoulos
privileges on the database. We do this by running:
105 a96ec00f Constantinos Venetsanopoulos
106 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
107 a96ec00f Constantinos Venetsanopoulos
108 a96ec00f Constantinos Venetsanopoulos
   root@node1:~ # su - postgres
109 a96ec00f Constantinos Venetsanopoulos
   postgres@node1:~ $ psql
110 a96ec00f Constantinos Venetsanopoulos
   postgres=# CREATE DATABASE snf_apps WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
111 a96ec00f Constantinos Venetsanopoulos
   postgres=# CREATE USER synnefo WITH PASSWORD 'example_passw0rd';
112 a96ec00f Constantinos Venetsanopoulos
   postgres=# GRANT ALL PRIVILEGES ON DATABASE snf_apps TO synnefo;
113 a96ec00f Constantinos Venetsanopoulos
114 a96ec00f Constantinos Venetsanopoulos
We also create the database ``snf_pithos`` needed by the pithos+ backend and
115 a96ec00f Constantinos Venetsanopoulos
grant the ``synnefo`` user all privileges on the database. This database could
116 a96ec00f Constantinos Venetsanopoulos
be created on node2 instead, but we do it on node1 for simplicity. We will
117 a96ec00f Constantinos Venetsanopoulos
create all needed databases on node1 and then node2 will connect to them.
118 a96ec00f Constantinos Venetsanopoulos
119 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
120 a96ec00f Constantinos Venetsanopoulos
121 73ff1d54 Constantinos Venetsanopoulos
   postgres=# CREATE DATABASE snf_pithos WITH ENCODING 'UTF8' LC_COLLATE='C' LC_CTYPE='C' TEMPLATE=template0;
122 a96ec00f Constantinos Venetsanopoulos
   postgres=# GRANT ALL PRIVILEGES ON DATABASE snf_pithos TO synnefo;
123 a96ec00f Constantinos Venetsanopoulos
124 a96ec00f Constantinos Venetsanopoulos
Configure the database to listen to all network interfaces. You can do this by
125 a96ec00f Constantinos Venetsanopoulos
editting the file ``/etc/postgresql/8.4/main/postgresql.conf`` and change
126 a96ec00f Constantinos Venetsanopoulos
``listen_addresses`` to ``'*'`` :
127 a96ec00f Constantinos Venetsanopoulos
128 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
129 a96ec00f Constantinos Venetsanopoulos
130 a96ec00f Constantinos Venetsanopoulos
   listen_addresses = '*'
131 a96ec00f Constantinos Venetsanopoulos
132 a96ec00f Constantinos Venetsanopoulos
Furthermore, edit ``/etc/postgresql/8.4/main/pg_hba.conf`` to allow node1 and
133 a96ec00f Constantinos Venetsanopoulos
node2 to connect to the database. Add the following lines under ``#IPv4 local
134 a96ec00f Constantinos Venetsanopoulos
connections:`` :
135 a96ec00f Constantinos Venetsanopoulos
136 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
137 a96ec00f Constantinos Venetsanopoulos
138 a96ec00f Constantinos Venetsanopoulos
   host		all	all	4.3.2.1/32	md5
139 a96ec00f Constantinos Venetsanopoulos
   host		all	all	4.3.2.2/32	md5
140 a96ec00f Constantinos Venetsanopoulos
141 a96ec00f Constantinos Venetsanopoulos
Make sure to substitute "4.3.2.1" and "4.3.2.2" with node1's and node2's
142 a96ec00f Constantinos Venetsanopoulos
actual IPs. Now, restart the server to apply the changes:
143 a96ec00f Constantinos Venetsanopoulos
144 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
145 a96ec00f Constantinos Venetsanopoulos
146 a96ec00f Constantinos Venetsanopoulos
   # /etc/init.d/postgresql restart
147 a96ec00f Constantinos Venetsanopoulos
148 a96ec00f Constantinos Venetsanopoulos
Gunicorn setup
149 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~
150 a96ec00f Constantinos Venetsanopoulos
151 a96ec00f Constantinos Venetsanopoulos
Create the file ``synnefo`` under ``/etc/gunicorn.d/`` containing the following:
152 a96ec00f Constantinos Venetsanopoulos
153 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
154 a96ec00f Constantinos Venetsanopoulos
155 a96ec00f Constantinos Venetsanopoulos
   CONFIG = {
156 a96ec00f Constantinos Venetsanopoulos
    'mode': 'django',
157 a96ec00f Constantinos Venetsanopoulos
    'environment': {
158 a96ec00f Constantinos Venetsanopoulos
      'DJANGO_SETTINGS_MODULE': 'synnefo.settings',
159 a96ec00f Constantinos Venetsanopoulos
    },
160 a96ec00f Constantinos Venetsanopoulos
    'working_dir': '/etc/synnefo',
161 a96ec00f Constantinos Venetsanopoulos
    'user': 'www-data',
162 a96ec00f Constantinos Venetsanopoulos
    'group': 'www-data',
163 a96ec00f Constantinos Venetsanopoulos
    'args': (
164 a96ec00f Constantinos Venetsanopoulos
      '--bind=127.0.0.1:8080',
165 a96ec00f Constantinos Venetsanopoulos
      '--workers=4',
166 a96ec00f Constantinos Venetsanopoulos
      '--log-level=debug',
167 a96ec00f Constantinos Venetsanopoulos
    ),
168 a96ec00f Constantinos Venetsanopoulos
   }
169 a96ec00f Constantinos Venetsanopoulos
170 0c40b4ac Kostas Papadimitriou
.. warning:: Do NOT start the server yet, because it won't find the
171 1ec63d8a Kostas Papadimitriou
    ``synnefo.settings`` module. We will start the server after successful
172 4de94e15 Kostas Papadimitriou
    installation of astakos. If the server is running::
173 a96ec00f Constantinos Venetsanopoulos
174 4de94e15 Kostas Papadimitriou
       # /etc/init.d/gunicorn stop
175 a96ec00f Constantinos Venetsanopoulos
176 a96ec00f Constantinos Venetsanopoulos
Apache2 setup
177 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~
178 a96ec00f Constantinos Venetsanopoulos
179 a96ec00f Constantinos Venetsanopoulos
Create the file ``synnefo`` under ``/etc/apache2/sites-available/`` containing
180 a96ec00f Constantinos Venetsanopoulos
the following:
181 a96ec00f Constantinos Venetsanopoulos
182 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
183 a96ec00f Constantinos Venetsanopoulos
184 a96ec00f Constantinos Venetsanopoulos
   <VirtualHost *:80>
185 a96ec00f Constantinos Venetsanopoulos
     ServerName node1.example.com
186 a96ec00f Constantinos Venetsanopoulos
187 a96ec00f Constantinos Venetsanopoulos
     RewriteEngine On
188 d2a9f85f Sofia Papagiannaki
     RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC]
189 d2a9f85f Sofia Papagiannaki
     RewriteRule ^(.*)$ - [F,L]
190 a96ec00f Constantinos Venetsanopoulos
     RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
191 a96ec00f Constantinos Venetsanopoulos
   </VirtualHost>
192 a96ec00f Constantinos Venetsanopoulos
193 a96ec00f Constantinos Venetsanopoulos
Create the file ``synnefo-ssl`` under ``/etc/apache2/sites-available/``
194 a96ec00f Constantinos Venetsanopoulos
containing the following:
195 a96ec00f Constantinos Venetsanopoulos
196 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
197 a96ec00f Constantinos Venetsanopoulos
198 a96ec00f Constantinos Venetsanopoulos
   <IfModule mod_ssl.c>
199 a96ec00f Constantinos Venetsanopoulos
   <VirtualHost _default_:443>
200 a96ec00f Constantinos Venetsanopoulos
     ServerName node1.example.com
201 a96ec00f Constantinos Venetsanopoulos
202 a96ec00f Constantinos Venetsanopoulos
     Alias /static "/usr/share/synnefo/static"
203 a96ec00f Constantinos Venetsanopoulos
204 a96ec00f Constantinos Venetsanopoulos
   #  SetEnv no-gzip
205 a96ec00f Constantinos Venetsanopoulos
   #  SetEnv dont-vary
206 a96ec00f Constantinos Venetsanopoulos
207 04427415 Constantinos Venetsanopoulos
     AllowEncodedSlashes On
208 04427415 Constantinos Venetsanopoulos
209 a96ec00f Constantinos Venetsanopoulos
     RequestHeader set X-Forwarded-Protocol "https"
210 a96ec00f Constantinos Venetsanopoulos
211 a96ec00f Constantinos Venetsanopoulos
     <Proxy * >
212 a96ec00f Constantinos Venetsanopoulos
       Order allow,deny
213 a96ec00f Constantinos Venetsanopoulos
       Allow from all
214 a96ec00f Constantinos Venetsanopoulos
     </Proxy>
215 a96ec00f Constantinos Venetsanopoulos
216 a96ec00f Constantinos Venetsanopoulos
     SetEnv                proxy-sendchunked
217 a96ec00f Constantinos Venetsanopoulos
     SSLProxyEngine        off
218 a96ec00f Constantinos Venetsanopoulos
     ProxyErrorOverride    off
219 a96ec00f Constantinos Venetsanopoulos
220 a96ec00f Constantinos Venetsanopoulos
     ProxyPass        /static !
221 a96ec00f Constantinos Venetsanopoulos
     ProxyPass        / http://localhost:8080/ retry=0
222 a96ec00f Constantinos Venetsanopoulos
     ProxyPassReverse / http://localhost:8080/
223 a96ec00f Constantinos Venetsanopoulos
224 a96ec00f Constantinos Venetsanopoulos
     RewriteEngine On
225 d2a9f85f Sofia Papagiannaki
     RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC]
226 d2a9f85f Sofia Papagiannaki
     RewriteRule ^(.*)$ - [F,L]
227 a96ec00f Constantinos Venetsanopoulos
     RewriteRule ^/login(.*) /im/login/redirect$1 [PT,NE]
228 a96ec00f Constantinos Venetsanopoulos
229 a96ec00f Constantinos Venetsanopoulos
     SSLEngine on
230 a96ec00f Constantinos Venetsanopoulos
     SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
231 a96ec00f Constantinos Venetsanopoulos
     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
232 a96ec00f Constantinos Venetsanopoulos
   </VirtualHost>
233 a96ec00f Constantinos Venetsanopoulos
   </IfModule>
234 a96ec00f Constantinos Venetsanopoulos
235 a96ec00f Constantinos Venetsanopoulos
Now enable sites and modules by running:
236 a96ec00f Constantinos Venetsanopoulos
237 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
238 a96ec00f Constantinos Venetsanopoulos
239 a96ec00f Constantinos Venetsanopoulos
   # a2enmod ssl
240 a96ec00f Constantinos Venetsanopoulos
   # a2enmod rewrite
241 a96ec00f Constantinos Venetsanopoulos
   # a2dissite default
242 a96ec00f Constantinos Venetsanopoulos
   # a2ensite synnefo
243 a96ec00f Constantinos Venetsanopoulos
   # a2ensite synnefo-ssl
244 a96ec00f Constantinos Venetsanopoulos
   # a2enmod headers
245 a96ec00f Constantinos Venetsanopoulos
   # a2enmod proxy_http
246 a96ec00f Constantinos Venetsanopoulos
247 4de94e15 Kostas Papadimitriou
.. warning:: Do NOT start/restart the server yet. If the server is running::
248 a96ec00f Constantinos Venetsanopoulos
249 4de94e15 Kostas Papadimitriou
       # /etc/init.d/apache2 stop
250 a96ec00f Constantinos Venetsanopoulos
251 2c85833e Constantinos Venetsanopoulos
.. _rabbitmq-setup:
252 2c85833e Constantinos Venetsanopoulos
253 bdfd94c9 Constantinos Venetsanopoulos
Message Queue setup
254 bdfd94c9 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~
255 bdfd94c9 Constantinos Venetsanopoulos
256 bdfd94c9 Constantinos Venetsanopoulos
The message queue will run on node1, so we need to create the appropriate
257 bdfd94c9 Constantinos Venetsanopoulos
rabbitmq user. The user is named ``synnefo`` and gets full privileges on all
258 bdfd94c9 Constantinos Venetsanopoulos
exchanges:
259 bdfd94c9 Constantinos Venetsanopoulos
260 bdfd94c9 Constantinos Venetsanopoulos
.. code-block:: console
261 bdfd94c9 Constantinos Venetsanopoulos
262 bdfd94c9 Constantinos Venetsanopoulos
   # rabbitmqctl add_user synnefo "examle_rabbitmq_passw0rd"
263 bdfd94c9 Constantinos Venetsanopoulos
   # rabbitmqctl set_permissions synnefo ".*" ".*" ".*"
264 bdfd94c9 Constantinos Venetsanopoulos
265 bdfd94c9 Constantinos Venetsanopoulos
We do not need to initialize the exchanges. This will be done automatically,
266 bdfd94c9 Constantinos Venetsanopoulos
during the Cyclades setup.
267 bdfd94c9 Constantinos Venetsanopoulos
268 a96ec00f Constantinos Venetsanopoulos
Pithos+ data directory setup
269 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
270 a96ec00f Constantinos Venetsanopoulos
271 a96ec00f Constantinos Venetsanopoulos
As mentioned in the General Prerequisites section, there is a directory called
272 a96ec00f Constantinos Venetsanopoulos
``/srv/pithos`` visible by both nodes. We create and setup the ``data``
273 a96ec00f Constantinos Venetsanopoulos
directory inside it:
274 a96ec00f Constantinos Venetsanopoulos
275 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
276 a96ec00f Constantinos Venetsanopoulos
277 a96ec00f Constantinos Venetsanopoulos
   # cd /srv/pithos
278 a96ec00f Constantinos Venetsanopoulos
   # mkdir data
279 a96ec00f Constantinos Venetsanopoulos
   # chown www-data:www-data data
280 a96ec00f Constantinos Venetsanopoulos
   # chmod g+ws data
281 a96ec00f Constantinos Venetsanopoulos
282 a96ec00f Constantinos Venetsanopoulos
You are now ready with all general prerequisites concerning node1. Let's go to
283 a96ec00f Constantinos Venetsanopoulos
node2.
284 a96ec00f Constantinos Venetsanopoulos
285 a96ec00f Constantinos Venetsanopoulos
Node2
286 a96ec00f Constantinos Venetsanopoulos
-----
287 a96ec00f Constantinos Venetsanopoulos
288 a96ec00f Constantinos Venetsanopoulos
General Synnefo dependencies
289 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
290 a96ec00f Constantinos Venetsanopoulos
291 a96ec00f Constantinos Venetsanopoulos
 * apache (http server)
292 a96ec00f Constantinos Venetsanopoulos
 * gunicorn (WSGI http server)
293 a96ec00f Constantinos Venetsanopoulos
 * postgresql (database)
294 a96ec00f Constantinos Venetsanopoulos
295 a96ec00f Constantinos Venetsanopoulos
You can install the above by running:
296 a96ec00f Constantinos Venetsanopoulos
297 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
298 a96ec00f Constantinos Venetsanopoulos
299 73ff1d54 Constantinos Venetsanopoulos
   # apt-get install apache2 postgresql
300 73ff1d54 Constantinos Venetsanopoulos
301 73ff1d54 Constantinos Venetsanopoulos
Make sure to install gunicorn >= v0.12.2. You can do this by installing from
302 73ff1d54 Constantinos Venetsanopoulos
the official debian backports:
303 73ff1d54 Constantinos Venetsanopoulos
304 73ff1d54 Constantinos Venetsanopoulos
.. code-block:: console
305 73ff1d54 Constantinos Venetsanopoulos
306 73ff1d54 Constantinos Venetsanopoulos
   # apt-get -t squeeze-backports install gunicorn
307 a96ec00f Constantinos Venetsanopoulos
308 73ff1d54 Constantinos Venetsanopoulos
Node2 will connect to the databases on node1, so you will also need the
309 73ff1d54 Constantinos Venetsanopoulos
python-psycopg2 package:
310 a96ec00f Constantinos Venetsanopoulos
311 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
312 a96ec00f Constantinos Venetsanopoulos
313 a96ec00f Constantinos Venetsanopoulos
   # apt-get install python-psycopg2
314 a96ec00f Constantinos Venetsanopoulos
315 a96ec00f Constantinos Venetsanopoulos
Database setup
316 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~
317 a96ec00f Constantinos Venetsanopoulos
318 a96ec00f Constantinos Venetsanopoulos
All databases have been created and setup on node1, so we do not need to take
319 a96ec00f Constantinos Venetsanopoulos
any action here. From node2, we will just connect to them. When you get familiar
320 a96ec00f Constantinos Venetsanopoulos
with the software you may choose to run different databases on different nodes,
321 a96ec00f Constantinos Venetsanopoulos
for performance/scalability/redundancy reasons, but those kind of setups are out
322 a96ec00f Constantinos Venetsanopoulos
of the purpose of this guide.
323 a96ec00f Constantinos Venetsanopoulos
324 a96ec00f Constantinos Venetsanopoulos
Gunicorn setup
325 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~~
326 a96ec00f Constantinos Venetsanopoulos
327 a96ec00f Constantinos Venetsanopoulos
Create the file ``synnefo`` under ``/etc/gunicorn.d/`` containing the following
328 a96ec00f Constantinos Venetsanopoulos
(same contents as in node1; you can just copy/paste the file):
329 a96ec00f Constantinos Venetsanopoulos
330 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
331 a96ec00f Constantinos Venetsanopoulos
332 a96ec00f Constantinos Venetsanopoulos
   CONFIG = {
333 a96ec00f Constantinos Venetsanopoulos
    'mode': 'django',
334 a96ec00f Constantinos Venetsanopoulos
    'environment': {
335 a96ec00f Constantinos Venetsanopoulos
      'DJANGO_SETTINGS_MODULE': 'synnefo.settings',
336 a96ec00f Constantinos Venetsanopoulos
    },
337 a96ec00f Constantinos Venetsanopoulos
    'working_dir': '/etc/synnefo',
338 a96ec00f Constantinos Venetsanopoulos
    'user': 'www-data',
339 a96ec00f Constantinos Venetsanopoulos
    'group': 'www-data',
340 a96ec00f Constantinos Venetsanopoulos
    'args': (
341 a96ec00f Constantinos Venetsanopoulos
      '--bind=127.0.0.1:8080',
342 a96ec00f Constantinos Venetsanopoulos
      '--workers=4',
343 a96ec00f Constantinos Venetsanopoulos
      '--log-level=debug',
344 699c8773 Sofia Papagiannaki
      '--timeout=43200'
345 a96ec00f Constantinos Venetsanopoulos
    ),
346 a96ec00f Constantinos Venetsanopoulos
   }
347 a96ec00f Constantinos Venetsanopoulos
348 0c40b4ac Kostas Papadimitriou
.. warning:: Do NOT start the server yet, because it won't find the
349 1ec63d8a Kostas Papadimitriou
    ``synnefo.settings`` module. We will start the server after successful
350 4de94e15 Kostas Papadimitriou
    installation of astakos. If the server is running::
351 a96ec00f Constantinos Venetsanopoulos
352 4de94e15 Kostas Papadimitriou
       # /etc/init.d/gunicorn stop
353 bdb83fd6 cven
354 a96ec00f Constantinos Venetsanopoulos
Apache2 setup
355 a96ec00f Constantinos Venetsanopoulos
~~~~~~~~~~~~~
356 5b6feb88 Vangelis Koukis
357 a96ec00f Constantinos Venetsanopoulos
Create the file ``synnefo`` under ``/etc/apache2/sites-available/`` containing
358 a96ec00f Constantinos Venetsanopoulos
the following:
359 5b6feb88 Vangelis Koukis
360 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
361 a96ec00f Constantinos Venetsanopoulos
362 a96ec00f Constantinos Venetsanopoulos
   <VirtualHost *:80>
363 a96ec00f Constantinos Venetsanopoulos
     ServerName node2.example.com
364 a96ec00f Constantinos Venetsanopoulos
365 a96ec00f Constantinos Venetsanopoulos
     RewriteEngine On
366 d2a9f85f Sofia Papagiannaki
     RewriteCond %{THE_REQUEST} ^.*(\\r|\\n|%0A|%0D).* [NC]
367 d2a9f85f Sofia Papagiannaki
     RewriteRule ^(.*)$ - [F,L]
368 a96ec00f Constantinos Venetsanopoulos
     RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
369 a96ec00f Constantinos Venetsanopoulos
   </VirtualHost>
370 a96ec00f Constantinos Venetsanopoulos
371 a96ec00f Constantinos Venetsanopoulos
Create the file ``synnefo-ssl`` under ``/etc/apache2/sites-available/``
372 a96ec00f Constantinos Venetsanopoulos
containing the following:
373 a96ec00f Constantinos Venetsanopoulos
374 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
375 a96ec00f Constantinos Venetsanopoulos
376 a96ec00f Constantinos Venetsanopoulos
   <IfModule mod_ssl.c>
377 a96ec00f Constantinos Venetsanopoulos
   <VirtualHost _default_:443>
378 a96ec00f Constantinos Venetsanopoulos
     ServerName node2.example.com
379 a96ec00f Constantinos Venetsanopoulos
380 a96ec00f Constantinos Venetsanopoulos
     Alias /static "/usr/share/synnefo/static"
381 a96ec00f Constantinos Venetsanopoulos
382 a96ec00f Constantinos Venetsanopoulos
     SetEnv no-gzip
383 a96ec00f Constantinos Venetsanopoulos
     SetEnv dont-vary
384 04427415 Constantinos Venetsanopoulos
     AllowEncodedSlashes On
385 a96ec00f Constantinos Venetsanopoulos
386 a96ec00f Constantinos Venetsanopoulos
     RequestHeader set X-Forwarded-Protocol "https"
387 a96ec00f Constantinos Venetsanopoulos
388 a96ec00f Constantinos Venetsanopoulos
     <Proxy * >
389 a96ec00f Constantinos Venetsanopoulos
       Order allow,deny
390 a96ec00f Constantinos Venetsanopoulos
       Allow from all
391 a96ec00f Constantinos Venetsanopoulos
     </Proxy>
392 a96ec00f Constantinos Venetsanopoulos
393 a96ec00f Constantinos Venetsanopoulos
     SetEnv                proxy-sendchunked
394 a96ec00f Constantinos Venetsanopoulos
     SSLProxyEngine        off
395 a96ec00f Constantinos Venetsanopoulos
     ProxyErrorOverride    off
396 a96ec00f Constantinos Venetsanopoulos
397 a96ec00f Constantinos Venetsanopoulos
     ProxyPass        /static !
398 a96ec00f Constantinos Venetsanopoulos
     ProxyPass        / http://localhost:8080/ retry=0
399 a96ec00f Constantinos Venetsanopoulos
     ProxyPassReverse / http://localhost:8080/
400 a96ec00f Constantinos Venetsanopoulos
401 a96ec00f Constantinos Venetsanopoulos
     SSLEngine on
402 a96ec00f Constantinos Venetsanopoulos
     SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
403 a96ec00f Constantinos Venetsanopoulos
     SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
404 a96ec00f Constantinos Venetsanopoulos
   </VirtualHost>
405 a96ec00f Constantinos Venetsanopoulos
   </IfModule>
406 a96ec00f Constantinos Venetsanopoulos
407 a96ec00f Constantinos Venetsanopoulos
As in node1, enable sites and modules by running:
408 a96ec00f Constantinos Venetsanopoulos
409 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
410 a96ec00f Constantinos Venetsanopoulos
411 a96ec00f Constantinos Venetsanopoulos
   # a2enmod ssl
412 a96ec00f Constantinos Venetsanopoulos
   # a2enmod rewrite
413 a96ec00f Constantinos Venetsanopoulos
   # a2dissite default
414 a96ec00f Constantinos Venetsanopoulos
   # a2ensite synnefo
415 a96ec00f Constantinos Venetsanopoulos
   # a2ensite synnefo-ssl
416 a96ec00f Constantinos Venetsanopoulos
   # a2enmod headers
417 a96ec00f Constantinos Venetsanopoulos
   # a2enmod proxy_http
418 a96ec00f Constantinos Venetsanopoulos
419 4de94e15 Kostas Papadimitriou
.. warning:: Do NOT start/restart the server yet. If the server is running::
420 a96ec00f Constantinos Venetsanopoulos
421 4de94e15 Kostas Papadimitriou
       # /etc/init.d/apache2 stop
422 a96ec00f Constantinos Venetsanopoulos
423 a96ec00f Constantinos Venetsanopoulos
We are now ready with all general prerequisites for node2. Now that we have
424 a96ec00f Constantinos Venetsanopoulos
finished with all general prerequisites for both nodes, we can start installing
425 a96ec00f Constantinos Venetsanopoulos
the services. First, let's install Astakos on node1.
426 a96ec00f Constantinos Venetsanopoulos
427 a96ec00f Constantinos Venetsanopoulos
428 a96ec00f Constantinos Venetsanopoulos
Installation of Astakos on node1
429 a96ec00f Constantinos Venetsanopoulos
================================
430 a96ec00f Constantinos Venetsanopoulos
431 a96ec00f Constantinos Venetsanopoulos
To install astakos, grab the package from our repository (make sure  you made
432 a96ec00f Constantinos Venetsanopoulos
the additions needed in your ``/etc/apt/sources.list`` file, as described
433 a96ec00f Constantinos Venetsanopoulos
previously), by running:
434 a96ec00f Constantinos Venetsanopoulos
435 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
436 a96ec00f Constantinos Venetsanopoulos
437 a96ec00f Constantinos Venetsanopoulos
   # apt-get install snf-astakos-app
438 a96ec00f Constantinos Venetsanopoulos
439 a96ec00f Constantinos Venetsanopoulos
After successful installation of snf-astakos-app, make sure that also
440 a96ec00f Constantinos Venetsanopoulos
snf-webproject has been installed (marked as "Recommended" package). By default
441 a96ec00f Constantinos Venetsanopoulos
Debian installs "Recommended" packages, but if you have changed your
442 a96ec00f Constantinos Venetsanopoulos
configuration and the package didn't install automatically, you should
443 a96ec00f Constantinos Venetsanopoulos
explicitly install it manually running:
444 a96ec00f Constantinos Venetsanopoulos
445 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
446 a96ec00f Constantinos Venetsanopoulos
447 a96ec00f Constantinos Venetsanopoulos
   # apt-get install snf-webproject
448 a96ec00f Constantinos Venetsanopoulos
449 a96ec00f Constantinos Venetsanopoulos
The reason snf-webproject is "Recommended" and not a hard dependency, is to give
450 a96ec00f Constantinos Venetsanopoulos
the experienced administrator the ability to install synnefo in a custom made
451 a96ec00f Constantinos Venetsanopoulos
django project. This corner case concerns only very advanced users that know
452 a96ec00f Constantinos Venetsanopoulos
what they are doing and want to experiment with synnefo.
453 a96ec00f Constantinos Venetsanopoulos
454 04c1254b Constantinos Venetsanopoulos
455 04c1254b Constantinos Venetsanopoulos
.. _conf-astakos:
456 04c1254b Constantinos Venetsanopoulos
457 a96ec00f Constantinos Venetsanopoulos
Configuration of Astakos
458 a96ec00f Constantinos Venetsanopoulos
========================
459 a96ec00f Constantinos Venetsanopoulos
460 a96ec00f Constantinos Venetsanopoulos
Conf Files
461 a96ec00f Constantinos Venetsanopoulos
----------
462 a96ec00f Constantinos Venetsanopoulos
463 a96ec00f Constantinos Venetsanopoulos
After astakos is successfully installed, you will find the directory
464 a96ec00f Constantinos Venetsanopoulos
``/etc/synnefo`` and some configuration files inside it. The files contain
465 a96ec00f Constantinos Venetsanopoulos
commented configuration options, which are the default options. While installing
466 a96ec00f Constantinos Venetsanopoulos
new snf-* components, new configuration files will appear inside the directory.
467 a96ec00f Constantinos Venetsanopoulos
In this guide (and for all services), we will edit only the minimum necessary
468 a96ec00f Constantinos Venetsanopoulos
configuration options, to reflect our setup. Everything else will remain as is.
469 a96ec00f Constantinos Venetsanopoulos
470 a96ec00f Constantinos Venetsanopoulos
After getting familiar with synnefo, you will be able to customize the software
471 a96ec00f Constantinos Venetsanopoulos
as you wish and fits your needs. Many options are available, to empower the
472 a96ec00f Constantinos Venetsanopoulos
administrator with extensively customizable setups.
473 a96ec00f Constantinos Venetsanopoulos
474 a96ec00f Constantinos Venetsanopoulos
For the snf-webproject component (installed as an astakos dependency), we
475 a96ec00f Constantinos Venetsanopoulos
need the following:
476 a96ec00f Constantinos Venetsanopoulos
477 a96ec00f Constantinos Venetsanopoulos
Edit ``/etc/synnefo/10-snf-webproject-database.conf``. You will need to
478 a96ec00f Constantinos Venetsanopoulos
uncomment and edit the ``DATABASES`` block to reflect our database:
479 a96ec00f Constantinos Venetsanopoulos
480 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
481 a96ec00f Constantinos Venetsanopoulos
482 a96ec00f Constantinos Venetsanopoulos
   DATABASES = {
483 a96ec00f Constantinos Venetsanopoulos
    'default': {
484 a96ec00f Constantinos Venetsanopoulos
        # 'postgresql_psycopg2', 'postgresql','mysql', 'sqlite3' or 'oracle'
485 a96ec00f Constantinos Venetsanopoulos
        'ENGINE': 'postgresql_psycopg2',
486 a96ec00f Constantinos Venetsanopoulos
         # ATTENTION: This *must* be the absolute path if using sqlite3.
487 a96ec00f Constantinos Venetsanopoulos
         # See: http://docs.djangoproject.com/en/dev/ref/settings/#name
488 a96ec00f Constantinos Venetsanopoulos
        'NAME': 'snf_apps',
489 a96ec00f Constantinos Venetsanopoulos
        'USER': 'synnefo',                      # Not used with sqlite3.
490 a96ec00f Constantinos Venetsanopoulos
        'PASSWORD': 'examle_passw0rd',          # Not used with sqlite3.
491 a96ec00f Constantinos Venetsanopoulos
        # Set to empty string for localhost. Not used with sqlite3.
492 a96ec00f Constantinos Venetsanopoulos
        'HOST': '4.3.2.1',
493 a96ec00f Constantinos Venetsanopoulos
        # Set to empty string for default. Not used with sqlite3.
494 a96ec00f Constantinos Venetsanopoulos
        'PORT': '5432',
495 a96ec00f Constantinos Venetsanopoulos
    }
496 a96ec00f Constantinos Venetsanopoulos
   }
497 a96ec00f Constantinos Venetsanopoulos
498 a96ec00f Constantinos Venetsanopoulos
Edit ``/etc/synnefo/10-snf-webproject-deploy.conf``. Uncomment and edit
499 a96ec00f Constantinos Venetsanopoulos
``SECRET_KEY``. This is a django specific setting which is used to provide a
500 a96ec00f Constantinos Venetsanopoulos
seed in secret-key hashing algorithms. Set this to a random string of your
501 a96ec00f Constantinos Venetsanopoulos
choise and keep it private:
502 a96ec00f Constantinos Venetsanopoulos
503 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
504 a96ec00f Constantinos Venetsanopoulos
505 a96ec00f Constantinos Venetsanopoulos
   SECRET_KEY = 'sy6)mw6a7x%n)-example_secret_key#zzk4jo6f2=uqu!1o%)'
506 a96ec00f Constantinos Venetsanopoulos
507 a96ec00f Constantinos Venetsanopoulos
For astakos specific configuration, edit the following options in
508 73ff1d54 Constantinos Venetsanopoulos
``/etc/synnefo/20-snf-astakos-app-settings.conf`` :
509 a96ec00f Constantinos Venetsanopoulos
510 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
511 a96ec00f Constantinos Venetsanopoulos
512 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_IM_MODULES = ['local']
513 a96ec00f Constantinos Venetsanopoulos
514 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_COOKIE_DOMAIN = '.example.com'
515 a96ec00f Constantinos Venetsanopoulos
516 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_BASEURL = 'https://node1.example.com'
517 a96ec00f Constantinos Venetsanopoulos
518 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_SITENAME = '~okeanos demo example'
519 a96ec00f Constantinos Venetsanopoulos
520 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_CLOUD_SERVICES = (
521 a96ec00f Constantinos Venetsanopoulos
           { 'url':'https://node1.example.com/im/', 'name':'~okeanos home', 'id':'cloud', 'icon':'home-icon.png' },
522 a96ec00f Constantinos Venetsanopoulos
           { 'url':'https://node1.example.com/ui/', 'name':'cyclades', 'id':'cyclades' },
523 a96ec00f Constantinos Venetsanopoulos
           { 'url':'https://node2.example.com/ui/', 'name':'pithos+', 'id':'pithos' })
524 a96ec00f Constantinos Venetsanopoulos
525 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_PUBLIC_KEY = 'example_recaptcha_public_key!@#$%^&*('
526 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_PRIVATE_KEY = 'example_recaptcha_private_key!@#$%^&*('
527 5b6feb88 Vangelis Koukis
528 a96ec00f Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_USE_SSL = True
529 5b6feb88 Vangelis Koukis
530 a96ec00f Constantinos Venetsanopoulos
``ASTAKOS_IM_MODULES`` refers to the astakos login methods. For now only local
531 a96ec00f Constantinos Venetsanopoulos
is supported. The ``ASTAKOS_COOKIE_DOMAIN`` should be the base url of our
532 a96ec00f Constantinos Venetsanopoulos
domain (for all services). ``ASTAKOS_BASEURL`` is the astakos home page.
533 a96ec00f Constantinos Venetsanopoulos
``ASTAKOS_CLOUD_SERVICES`` contains all services visible to and served by
534 a96ec00f Constantinos Venetsanopoulos
astakos. The first element of the dictionary is used to point to a generic
535 a96ec00f Constantinos Venetsanopoulos
landing page for your services (cyclades, pithos). If you don't have such a
536 a96ec00f Constantinos Venetsanopoulos
page it can be omitted. The second and third element point to our services
537 a96ec00f Constantinos Venetsanopoulos
themselves (the apps) and should be set as above.
538 5b6feb88 Vangelis Koukis
539 a96ec00f Constantinos Venetsanopoulos
For the ``ASTAKOS_RECAPTCHA_PUBLIC_KEY`` and ``ASTAKOS_RECAPTCHA_PRIVATE_KEY``
540 a96ec00f Constantinos Venetsanopoulos
go to https://www.google.com/recaptcha/admin/create and create your own pair.
541 5b6feb88 Vangelis Koukis
542 d189d11c Constantinos Venetsanopoulos
If you are an advanced user and want to use the Shibboleth Authentication method,
543 d189d11c Constantinos Venetsanopoulos
read the relative :ref:`section <shibboleth-auth>`.
544 d2a9f85f Sofia Papagiannaki
545 a96ec00f Constantinos Venetsanopoulos
Servers Initialization
546 a96ec00f Constantinos Venetsanopoulos
----------------------
547 5b6feb88 Vangelis Koukis
548 a96ec00f Constantinos Venetsanopoulos
After configuration is done, we initialize the servers on node1:
549 5b6feb88 Vangelis Koukis
550 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
551 a96ec00f Constantinos Venetsanopoulos
552 a96ec00f Constantinos Venetsanopoulos
   root@node1:~ # /etc/init.d/gunicorn restart
553 a96ec00f Constantinos Venetsanopoulos
   root@node1:~ # /etc/init.d/apache2 restart
554 a96ec00f Constantinos Venetsanopoulos
555 a96ec00f Constantinos Venetsanopoulos
Database Initialization
556 a96ec00f Constantinos Venetsanopoulos
-----------------------
557 a96ec00f Constantinos Venetsanopoulos
558 a96ec00f Constantinos Venetsanopoulos
Then, we initialize the database by running:
559 5b6feb88 Vangelis Koukis
560 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
561 a96ec00f Constantinos Venetsanopoulos
562 a96ec00f Constantinos Venetsanopoulos
   # snf-manage syncdb
563 a96ec00f Constantinos Venetsanopoulos
564 a96ec00f Constantinos Venetsanopoulos
At this example we don't need to create a django superuser, so we select
565 a96ec00f Constantinos Venetsanopoulos
``[no]`` to the question. After a successful sync, we run the migration needed
566 a96ec00f Constantinos Venetsanopoulos
for astakos:
567 5b6feb88 Vangelis Koukis
568 5b6feb88 Vangelis Koukis
.. code-block:: console
569 5b6feb88 Vangelis Koukis
570 a96ec00f Constantinos Venetsanopoulos
   # snf-manage migrate im
571 a96ec00f Constantinos Venetsanopoulos
572 d2a9f85f Sofia Papagiannaki
Finally we load the pre-defined user groups
573 d2a9f85f Sofia Papagiannaki
574 d2a9f85f Sofia Papagiannaki
.. code-block:: console
575 d2a9f85f Sofia Papagiannaki
576 d2a9f85f Sofia Papagiannaki
   # snf-manage loaddata groups
577 d2a9f85f Sofia Papagiannaki
578 a96ec00f Constantinos Venetsanopoulos
You have now finished the Astakos setup. Let's test it now.
579 a96ec00f Constantinos Venetsanopoulos
580 a96ec00f Constantinos Venetsanopoulos
581 a96ec00f Constantinos Venetsanopoulos
Testing of Astakos
582 a96ec00f Constantinos Venetsanopoulos
==================
583 a96ec00f Constantinos Venetsanopoulos
584 a96ec00f Constantinos Venetsanopoulos
Open your favorite browser and go to:
585 a96ec00f Constantinos Venetsanopoulos
586 a96ec00f Constantinos Venetsanopoulos
``http://node1.example.com/im``
587 a96ec00f Constantinos Venetsanopoulos
588 a96ec00f Constantinos Venetsanopoulos
If this redirects you to ``https://node1.example.com/im`` and you can see
589 a96ec00f Constantinos Venetsanopoulos
the "welcome" door of Astakos, then you have successfully setup Astakos.
590 a96ec00f Constantinos Venetsanopoulos
591 a96ec00f Constantinos Venetsanopoulos
Let's create our first user. At the homepage click the "CREATE ACCOUNT" button
592 a96ec00f Constantinos Venetsanopoulos
and fill all your data at the sign up form. Then click "SUBMIT". You should now
593 a96ec00f Constantinos Venetsanopoulos
see a green box on the top, which informs you that you made a successful request
594 caa6c07d Constantinos Venetsanopoulos
and the request has been sent to the administrators. So far so good, let's assume
595 caa6c07d Constantinos Venetsanopoulos
that you created the user with username ``user@example.com``.
596 a96ec00f Constantinos Venetsanopoulos
597 a96ec00f Constantinos Venetsanopoulos
Now we need to activate that user. Return to a command prompt at node1 and run:
598 a96ec00f Constantinos Venetsanopoulos
599 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
600 a96ec00f Constantinos Venetsanopoulos
601 a96ec00f Constantinos Venetsanopoulos
   root@node1:~ # snf-manage listusers
602 a96ec00f Constantinos Venetsanopoulos
603 a96ec00f Constantinos Venetsanopoulos
This command should show you a list with only one user; the one we just created.
604 a96ec00f Constantinos Venetsanopoulos
This user should have an id with a value of ``1``. It should also have an
605 a96ec00f Constantinos Venetsanopoulos
"active" status with the value of ``0`` (inactive). Now run:
606 a96ec00f Constantinos Venetsanopoulos
607 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
608 a96ec00f Constantinos Venetsanopoulos
609 a96ec00f Constantinos Venetsanopoulos
   root@node1:~ # snf-manage modifyuser --set-active 1
610 a96ec00f Constantinos Venetsanopoulos
611 a96ec00f Constantinos Venetsanopoulos
This modifies the active value to ``1``, and actually activates the user.
612 a96ec00f Constantinos Venetsanopoulos
When running in production, the activation is done automatically with different
613 a96ec00f Constantinos Venetsanopoulos
types of moderation, that Astakos supports. You can see the moderation methods
614 a96ec00f Constantinos Venetsanopoulos
(by invitation, whitelists, matching regexp, etc.) at the Astakos specific
615 f846d8df Constantinos Venetsanopoulos
documentation. In production, you can also manually activate a user, by sending
616 f846d8df Constantinos Venetsanopoulos
him/her an activation email. See how to do this at the :ref:`User
617 f846d8df Constantinos Venetsanopoulos
activation <user_activation>` section.
618 a96ec00f Constantinos Venetsanopoulos
619 a96ec00f Constantinos Venetsanopoulos
Now let's go back to the homepage. Open ``http://node1.example.com/im`` with
620 a96ec00f Constantinos Venetsanopoulos
your browser again. Try to sign in using your new credentials. If the astakos
621 a96ec00f Constantinos Venetsanopoulos
menu appears and you can see your profile, then you have successfully setup
622 a96ec00f Constantinos Venetsanopoulos
Astakos.
623 a96ec00f Constantinos Venetsanopoulos
624 a96ec00f Constantinos Venetsanopoulos
Let's continue to install Pithos+ now.
625 a96ec00f Constantinos Venetsanopoulos
626 a96ec00f Constantinos Venetsanopoulos
627 a96ec00f Constantinos Venetsanopoulos
Installation of Pithos+ on node2
628 a96ec00f Constantinos Venetsanopoulos
================================
629 a96ec00f Constantinos Venetsanopoulos
630 138253bc Constantinos Venetsanopoulos
To install pithos+, grab the packages from our repository (make sure  you made
631 a96ec00f Constantinos Venetsanopoulos
the additions needed in your ``/etc/apt/sources.list`` file, as described
632 a96ec00f Constantinos Venetsanopoulos
previously), by running:
633 a96ec00f Constantinos Venetsanopoulos
634 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
635 a96ec00f Constantinos Venetsanopoulos
636 a96ec00f Constantinos Venetsanopoulos
   # apt-get install snf-pithos-app
637 a96ec00f Constantinos Venetsanopoulos
638 a96ec00f Constantinos Venetsanopoulos
After successful installation of snf-pithos-app, make sure that also
639 a96ec00f Constantinos Venetsanopoulos
snf-webproject has been installed (marked as "Recommended" package). Refer to
640 a96ec00f Constantinos Venetsanopoulos
the "Installation of Astakos on node1" section, if you don't remember why this
641 138253bc Constantinos Venetsanopoulos
should happen. Now, install the pithos web interface:
642 a96ec00f Constantinos Venetsanopoulos
643 138253bc Constantinos Venetsanopoulos
.. code-block:: console
644 138253bc Constantinos Venetsanopoulos
645 138253bc Constantinos Venetsanopoulos
   # apt-get install snf-pithos-webclient
646 138253bc Constantinos Venetsanopoulos
647 138253bc Constantinos Venetsanopoulos
This package provides the standalone pithos web client. The web client is the
648 138253bc Constantinos Venetsanopoulos
web UI for pithos+ and will be accessible by clicking "pithos+" on the Astakos
649 138253bc Constantinos Venetsanopoulos
interface's cloudbar, at the top of the Astakos homepage.
650 a96ec00f Constantinos Venetsanopoulos
651 caa6c07d Constantinos Venetsanopoulos
652 04c1254b Constantinos Venetsanopoulos
.. _conf-pithos:
653 04c1254b Constantinos Venetsanopoulos
654 a96ec00f Constantinos Venetsanopoulos
Configuration of Pithos+
655 a96ec00f Constantinos Venetsanopoulos
========================
656 a96ec00f Constantinos Venetsanopoulos
657 a96ec00f Constantinos Venetsanopoulos
Conf Files
658 a96ec00f Constantinos Venetsanopoulos
----------
659 a96ec00f Constantinos Venetsanopoulos
660 a96ec00f Constantinos Venetsanopoulos
After pithos+ is successfully installed, you will find the directory
661 a96ec00f Constantinos Venetsanopoulos
``/etc/synnefo`` and some configuration files inside it, as you did in node1
662 a96ec00f Constantinos Venetsanopoulos
after installation of astakos. Here, you will not have to change anything that
663 a96ec00f Constantinos Venetsanopoulos
has to do with snf-common or snf-webproject. Everything is set at node1. You
664 138253bc Constantinos Venetsanopoulos
only need to change settings that have to do with pithos+. Specifically:
665 a96ec00f Constantinos Venetsanopoulos
666 a96ec00f Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-pithos-app-settings.conf``. There you need to set
667 a96ec00f Constantinos Venetsanopoulos
only the two options:
668 a96ec00f Constantinos Venetsanopoulos
669 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
670 a96ec00f Constantinos Venetsanopoulos
671 a96ec00f Constantinos Venetsanopoulos
   PITHOS_BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@node1.example.com:5432/snf_pithos'
672 a96ec00f Constantinos Venetsanopoulos
673 a96ec00f Constantinos Venetsanopoulos
   PITHOS_BACKEND_BLOCK_PATH = '/srv/pithos/data'
674 bdfd94c9 Constantinos Venetsanopoulos
675 01bd066a Sofia Papagiannaki
   PITHOS_AUTHENTICATION_URL = 'https://node1.example.com/im/authenticate'
676 01bd066a Sofia Papagiannaki
   PITHOS_AUTHENTICATION_USERS = None
677 a96ec00f Constantinos Venetsanopoulos
678 bdfd94c9 Constantinos Venetsanopoulos
The ``PITHOS_BACKEND_DB_CONNECTION`` option tells to the pithos+ app where to
679 bdfd94c9 Constantinos Venetsanopoulos
find the pithos+ backend database. Above we tell pithos+ that its database is
680 bdfd94c9 Constantinos Venetsanopoulos
``snf_pithos`` at node1 and to connect as user ``synnefo`` with password
681 bdfd94c9 Constantinos Venetsanopoulos
``example_passw0rd``.  All those settings where setup during node1's "Database
682 bdfd94c9 Constantinos Venetsanopoulos
setup" section.
683 a96ec00f Constantinos Venetsanopoulos
684 bdfd94c9 Constantinos Venetsanopoulos
The ``PITHOS_BACKEND_BLOCK_PATH`` option tells to the pithos+ app where to find
685 bdfd94c9 Constantinos Venetsanopoulos
the pithos+ backend data. Above we tell pithos+ to store its data under
686 a96ec00f Constantinos Venetsanopoulos
``/srv/pithos/data``, which is visible by both nodes. We have already setup this
687 a96ec00f Constantinos Venetsanopoulos
directory at node1's "Pithos+ data directory setup" section.
688 a96ec00f Constantinos Venetsanopoulos
689 8f85321e Sofia Papagiannaki
The ``PITHOS_AUTHENTICATION_URL`` option tells to the pithos+ app in which URI
690 bdfd94c9 Constantinos Venetsanopoulos
is available the astakos authentication api. If not set, pithos+ tries to
691 8f85321e Sofia Papagiannaki
authenticate using the ``PITHOS_AUTHENTICATION_USERS`` user pool.
692 8f85321e Sofia Papagiannaki
693 138253bc Constantinos Venetsanopoulos
Then we need to setup the web UI and connect it to astakos. To do so, edit
694 138253bc Constantinos Venetsanopoulos
``/etc/synnefo/20-snf-pithos-webclient-settings.conf``:
695 138253bc Constantinos Venetsanopoulos
696 138253bc Constantinos Venetsanopoulos
.. code-block:: console
697 138253bc Constantinos Venetsanopoulos
698 138253bc Constantinos Venetsanopoulos
   PITHOS_UI_LOGIN_URL = "https://node1.example.com/im/login?next="
699 138253bc Constantinos Venetsanopoulos
   PITHOS_UI_FEEDBACK_URL = "https://node1.example.com/im/feedback"
700 138253bc Constantinos Venetsanopoulos
701 138253bc Constantinos Venetsanopoulos
The ``PITHOS_UI_LOGIN_URL`` option tells the client where to redirect you, if
702 138253bc Constantinos Venetsanopoulos
you are not logged in. The ``PITHOS_UI_FEEDBACK_URL`` option points at the
703 138253bc Constantinos Venetsanopoulos
pithos+ feedback form. Astakos already provides a generic feedback form for all
704 138253bc Constantinos Venetsanopoulos
services, so we use this one.
705 138253bc Constantinos Venetsanopoulos
706 138253bc Constantinos Venetsanopoulos
Then edit ``/etc/synnefo/20-snf-pithos-webclient-cloudbar.conf``, to connect the
707 138253bc Constantinos Venetsanopoulos
pithos+ web UI with the astakos web UI (through the top cloudbar):
708 138253bc Constantinos Venetsanopoulos
709 138253bc Constantinos Venetsanopoulos
.. code-block:: console
710 138253bc Constantinos Venetsanopoulos
711 138253bc Constantinos Venetsanopoulos
   CLOUDBAR_LOCATION = 'https://node1.example.com/static/im/cloudbar/'
712 bdfd94c9 Constantinos Venetsanopoulos
   PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE = 'pithos'
713 138253bc Constantinos Venetsanopoulos
   CLOUDBAR_SERVICES_URL = 'https://node1.example.com/im/get_services'
714 138253bc Constantinos Venetsanopoulos
   CLOUDBAR_MENU_URL = 'https://node1.example.com/im/get_menu'
715 138253bc Constantinos Venetsanopoulos
716 138253bc Constantinos Venetsanopoulos
The ``CLOUDBAR_LOCATION`` tells the client where to find the astakos common
717 138253bc Constantinos Venetsanopoulos
cloudbar.
718 138253bc Constantinos Venetsanopoulos
719 bdfd94c9 Constantinos Venetsanopoulos
The ``PITHOS_UI_CLOUDBAR_ACTIVE_SERVICE`` registers the client as a new service
720 bdfd94c9 Constantinos Venetsanopoulos
served by astakos. It's name should be identical with the ``id`` name given at
721 bdfd94c9 Constantinos Venetsanopoulos
the astakos' ``ASTAKOS_CLOUD_SERVICES`` variable. Note that at the Astakos "Conf
722 138253bc Constantinos Venetsanopoulos
Files" section, we actually set the third item of the ``ASTAKOS_CLOUD_SERVICES``
723 bdfd94c9 Constantinos Venetsanopoulos
list, to the dictionary: ``{ 'url':'https://nod...', 'name':'pithos+',
724 bdfd94c9 Constantinos Venetsanopoulos
'id':'pithos }``. This item represents the pithos+ service. The ``id`` we set
725 bdfd94c9 Constantinos Venetsanopoulos
there, is the ``id`` we want here.
726 138253bc Constantinos Venetsanopoulos
727 138253bc Constantinos Venetsanopoulos
The ``CLOUDBAR_SERVICES_URL`` and ``CLOUDBAR_MENU_URL`` options are used by the
728 138253bc Constantinos Venetsanopoulos
pithos+ web client to get from astakos all the information needed to fill its
729 bdfd94c9 Constantinos Venetsanopoulos
own cloudbar. So we put our astakos deployment urls there.
730 138253bc Constantinos Venetsanopoulos
731 a96ec00f Constantinos Venetsanopoulos
Servers Initialization
732 a96ec00f Constantinos Venetsanopoulos
----------------------
733 a96ec00f Constantinos Venetsanopoulos
734 a96ec00f Constantinos Venetsanopoulos
After configuration is done, we initialize the servers on node2:
735 a96ec00f Constantinos Venetsanopoulos
736 a96ec00f Constantinos Venetsanopoulos
.. code-block:: console
737 a96ec00f Constantinos Venetsanopoulos
738 a96ec00f Constantinos Venetsanopoulos
   root@node2:~ # /etc/init.d/gunicorn restart
739 a96ec00f Constantinos Venetsanopoulos
   root@node2:~ # /etc/init.d/apache2 restart
740 a96ec00f Constantinos Venetsanopoulos
741 a96ec00f Constantinos Venetsanopoulos
You have now finished the Pithos+ setup. Let's test it now.
742 a96ec00f Constantinos Venetsanopoulos
743 a96ec00f Constantinos Venetsanopoulos
744 a96ec00f Constantinos Venetsanopoulos
Testing of Pithos+
745 a96ec00f Constantinos Venetsanopoulos
==================
746 a96ec00f Constantinos Venetsanopoulos
747 bdfd94c9 Constantinos Venetsanopoulos
Open your browser and go to the Astakos homepage:
748 bdfd94c9 Constantinos Venetsanopoulos
749 bdfd94c9 Constantinos Venetsanopoulos
``http://node1.example.com/im``
750 bdfd94c9 Constantinos Venetsanopoulos
751 bdfd94c9 Constantinos Venetsanopoulos
Login, and you will see your profile page. Now, click the "pithos+" link on the
752 bdfd94c9 Constantinos Venetsanopoulos
top black cloudbar. If everything was setup correctly, this will redirect you
753 bdfd94c9 Constantinos Venetsanopoulos
to:
754 bdfd94c9 Constantinos Venetsanopoulos
755 bdfd94c9 Constantinos Venetsanopoulos
``https://node2.example.com/ui``
756 bdfd94c9 Constantinos Venetsanopoulos
757 bdfd94c9 Constantinos Venetsanopoulos
and you will see the blue interface of the Pithos+ application.  Click the
758 bdfd94c9 Constantinos Venetsanopoulos
orange "Upload" button and upload your first file. If the file gets uploaded
759 bdfd94c9 Constantinos Venetsanopoulos
successfully, then this is your first sign of a successful Pithos+ installation.
760 bdfd94c9 Constantinos Venetsanopoulos
Go ahead and experiment with the interface to make sure everything works
761 bdfd94c9 Constantinos Venetsanopoulos
correctly.
762 bdfd94c9 Constantinos Venetsanopoulos
763 bdfd94c9 Constantinos Venetsanopoulos
You can also use the Pithos+ clients to sync data from your Windows PC or MAC.
764 bdfd94c9 Constantinos Venetsanopoulos
765 bdfd94c9 Constantinos Venetsanopoulos
If you don't stumble on any problems, then you have successfully installed
766 bdfd94c9 Constantinos Venetsanopoulos
Pithos+, which you can use as a standalone File Storage Service.
767 bdfd94c9 Constantinos Venetsanopoulos
768 bdfd94c9 Constantinos Venetsanopoulos
If you would like to do more, such as:
769 bdfd94c9 Constantinos Venetsanopoulos
770 bdfd94c9 Constantinos Venetsanopoulos
 * Spawning VMs
771 bdfd94c9 Constantinos Venetsanopoulos
 * Spawning VMs from Images stored on Pithos+
772 bdfd94c9 Constantinos Venetsanopoulos
 * Uploading your custom Images to Pithos+
773 bdfd94c9 Constantinos Venetsanopoulos
 * Spawning VMs from those custom Images
774 bdfd94c9 Constantinos Venetsanopoulos
 * Registering existing Pithos+ files as Images
775 7a8df455 Constantinos Venetsanopoulos
 * Connect VMs to the Internet
776 7a8df455 Constantinos Venetsanopoulos
 * Create Private Networks
777 7a8df455 Constantinos Venetsanopoulos
 * Add VMs to Private Networks
778 bdfd94c9 Constantinos Venetsanopoulos
779 bdfd94c9 Constantinos Venetsanopoulos
please continue with the rest of the guide.
780 a96ec00f Constantinos Venetsanopoulos
781 caa6c07d Constantinos Venetsanopoulos
782 7a8df455 Constantinos Venetsanopoulos
Cyclades (and Plankton) Prerequisites
783 7a8df455 Constantinos Venetsanopoulos
=====================================
784 bc055d09 Constantinos Venetsanopoulos
785 caa6c07d Constantinos Venetsanopoulos
Before proceeding with the Cyclades (and Plankton) installation, make sure you
786 caa6c07d Constantinos Venetsanopoulos
have successfully set up Astakos and Pithos+ first, because Cyclades depends
787 caa6c07d Constantinos Venetsanopoulos
on them. If you don't have a working Astakos and Pithos+ installation yet,
788 caa6c07d Constantinos Venetsanopoulos
please return to the :ref:`top <quick-install-admin-guide>` of this guide.
789 bc055d09 Constantinos Venetsanopoulos
790 caa6c07d Constantinos Venetsanopoulos
Besides Astakos and Pithos+, you will also need a number of additional working
791 caa6c07d Constantinos Venetsanopoulos
prerequisites, before you start the Cyclades installation.
792 bc055d09 Constantinos Venetsanopoulos
793 caa6c07d Constantinos Venetsanopoulos
Ganeti
794 7a8df455 Constantinos Venetsanopoulos
------
795 bc055d09 Constantinos Venetsanopoulos
796 caa6c07d Constantinos Venetsanopoulos
`Ganeti <http://code.google.com/p/ganeti/>`_ handles the low level VM management
797 caa6c07d Constantinos Venetsanopoulos
for Cyclades, so Cyclades requires a working Ganeti installation at the backend.
798 caa6c07d Constantinos Venetsanopoulos
Please refer to the
799 caa6c07d Constantinos Venetsanopoulos
`ganeti documentation <http://docs.ganeti.org/ganeti/2.5/html>`_ for all the
800 bc055d09 Constantinos Venetsanopoulos
gory details. A successful Ganeti installation concludes with a working
801 caa6c07d Constantinos Venetsanopoulos
:ref:`GANETI-MASTER <GANETI_NODES>` and a number of :ref:`GANETI-NODEs
802 caa6c07d Constantinos Venetsanopoulos
<GANETI_NODES>`.
803 caa6c07d Constantinos Venetsanopoulos
804 caa6c07d Constantinos Venetsanopoulos
The above Ganeti cluster can run on different physical machines than node1 and
805 caa6c07d Constantinos Venetsanopoulos
node2 and can scale independently, according to your needs.
806 caa6c07d Constantinos Venetsanopoulos
807 caa6c07d Constantinos Venetsanopoulos
For the purpose of this guide, we will assume that the :ref:`GANETI-MASTER
808 caa6c07d Constantinos Venetsanopoulos
<GANETI_NODES>` runs on node1 and is VM-capable. Also, node2 is a
809 caa6c07d Constantinos Venetsanopoulos
:ref:`GANETI-NODE <GANETI_NODES>` and is Master-capable and VM-capable too.
810 caa6c07d Constantinos Venetsanopoulos
811 caa6c07d Constantinos Venetsanopoulos
We highly recommend that you read the official Ganeti documentation, if you are
812 caa6c07d Constantinos Venetsanopoulos
not familiar with Ganeti. If you are extremely impatient, you can result with
813 caa6c07d Constantinos Venetsanopoulos
the above assumed setup by running:
814 caa6c07d Constantinos Venetsanopoulos
815 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
816 caa6c07d Constantinos Venetsanopoulos
817 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # apt-get install ganeti2
818 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # apt-get install ganeti-htools
819 caa6c07d Constantinos Venetsanopoulos
   root@node2:~ # apt-get install ganeti2
820 caa6c07d Constantinos Venetsanopoulos
   root@node2:~ # apt-get install ganeti-htools
821 caa6c07d Constantinos Venetsanopoulos
822 caa6c07d Constantinos Venetsanopoulos
We assume that Ganeti will use the KVM hypervisor. After installing Ganeti on
823 caa6c07d Constantinos Venetsanopoulos
both nodes, choose a domain name that resolves to a valid floating IP (let's say
824 caa6c07d Constantinos Venetsanopoulos
it's ``ganeti.node1.example.com``). Make sure node1 and node2 have root access
825 caa6c07d Constantinos Venetsanopoulos
between each other using ssh keys and not passwords. Also, make sure there is an
826 caa6c07d Constantinos Venetsanopoulos
lvm volume group named ``ganeti`` that will host your VMs' disks. Finally, setup
827 caa6c07d Constantinos Venetsanopoulos
a bridge interface on the host machines (e.g:: br0). Then run on node1:
828 caa6c07d Constantinos Venetsanopoulos
829 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
830 caa6c07d Constantinos Venetsanopoulos
831 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # gnt-cluster init --enabled-hypervisors=kvm --no-ssh-init
832 caa6c07d Constantinos Venetsanopoulos
                                   --no-etc-hosts --vg-name=ganeti
833 caa6c07d Constantinos Venetsanopoulos
                                   --nic-parameters link=br0 --master-netdev eth0
834 caa6c07d Constantinos Venetsanopoulos
                                   ganeti.node1.example.com
835 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # gnt-cluster modify --default-iallocator hail
836 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # gnt-cluster modify --hypervisor-parameters kvm:kernel_path=
837 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # gnt-cluster modify --hypervisor-parameters kvm:vnc_bind_address=0.0.0.0
838 caa6c07d Constantinos Venetsanopoulos
839 caa6c07d Constantinos Venetsanopoulos
   root@node1:~ # gnt-node add --no-node-setup --master-capable=yes
840 caa6c07d Constantinos Venetsanopoulos
                               --vm-capable=yes node2.example.com
841 caa6c07d Constantinos Venetsanopoulos
842 caa6c07d Constantinos Venetsanopoulos
For any problems you may stumble upon installing Ganeti, please refer to the
843 caa6c07d Constantinos Venetsanopoulos
`official documentation <http://docs.ganeti.org/ganeti/2.5/html>`_. Installation
844 caa6c07d Constantinos Venetsanopoulos
of Ganeti is out of the scope of this guide.
845 caa6c07d Constantinos Venetsanopoulos
846 caa6c07d Constantinos Venetsanopoulos
.. _cyclades-install-snfimage:
847 caa6c07d Constantinos Venetsanopoulos
848 caa6c07d Constantinos Venetsanopoulos
snf-image
849 7a8df455 Constantinos Venetsanopoulos
---------
850 caa6c07d Constantinos Venetsanopoulos
851 caa6c07d Constantinos Venetsanopoulos
Installation
852 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~
853 caa6c07d Constantinos Venetsanopoulos
For :ref:`Cyclades <cyclades>` to be able to launch VMs from specified Images,
854 caa6c07d Constantinos Venetsanopoulos
you need the :ref:`snf-image <snf-image>` OS Definition installed on *all*
855 caa6c07d Constantinos Venetsanopoulos
VM-capable Ganeti nodes. This means we need :ref:`snf-image <snf-image>` on
856 caa6c07d Constantinos Venetsanopoulos
node1 and node2. You can do this by running on *both* nodes:
857 caa6c07d Constantinos Venetsanopoulos
858 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
859 caa6c07d Constantinos Venetsanopoulos
860 caa6c07d Constantinos Venetsanopoulos
   # apt-get install snf-image-host
861 caa6c07d Constantinos Venetsanopoulos
862 caa6c07d Constantinos Venetsanopoulos
Now, you need to download and save the corresponding helper package. Please see
863 caa6c07d Constantinos Venetsanopoulos
`here <https://code.grnet.gr/projects/snf-image/files>`_ for the latest package. Let's
864 caa6c07d Constantinos Venetsanopoulos
assume that you installed snf-image-host version 0.3.5-1. Then, you need
865 caa6c07d Constantinos Venetsanopoulos
snf-image-helper v0.3.5-1 on *both* nodes:
866 caa6c07d Constantinos Venetsanopoulos
867 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
868 caa6c07d Constantinos Venetsanopoulos
869 caa6c07d Constantinos Venetsanopoulos
   # cd /var/lib/snf-image/helper/
870 caa6c07d Constantinos Venetsanopoulos
   # wget https://code.grnet.gr/attachments/download/1058/snf-image-helper_0.3.5-1_all.deb
871 caa6c07d Constantinos Venetsanopoulos
872 caa6c07d Constantinos Venetsanopoulos
.. warning:: Be careful: Do NOT install the snf-image-helper debian package.
873 caa6c07d Constantinos Venetsanopoulos
             Just put it under /var/lib/snf-image/helper/
874 caa6c07d Constantinos Venetsanopoulos
875 caa6c07d Constantinos Venetsanopoulos
Once, you have downloaded the snf-image-helper package, create the helper VM by
876 caa6c07d Constantinos Venetsanopoulos
running on *both* nodes:
877 caa6c07d Constantinos Venetsanopoulos
878 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
879 caa6c07d Constantinos Venetsanopoulos
880 caa6c07d Constantinos Venetsanopoulos
   # ln -s snf-image-helper_0.3.5-1_all.deb snf-image-helper.deb
881 caa6c07d Constantinos Venetsanopoulos
   # snf-image-update-helper
882 caa6c07d Constantinos Venetsanopoulos
883 caa6c07d Constantinos Venetsanopoulos
This will create all the needed files under ``/var/lib/snf-image/helper/`` for
884 caa6c07d Constantinos Venetsanopoulos
snf-image-host to run successfully.
885 caa6c07d Constantinos Venetsanopoulos
886 caa6c07d Constantinos Venetsanopoulos
Configuration
887 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~
888 caa6c07d Constantinos Venetsanopoulos
snf-image supports native access to Images stored on Pithos+. This means that
889 caa6c07d Constantinos Venetsanopoulos
snf-image can talk directly to the Pithos+ backend, without the need of providing
890 caa6c07d Constantinos Venetsanopoulos
a public URL. More details, are described in the next section. For now, the only
891 caa6c07d Constantinos Venetsanopoulos
thing we need to do, is configure snf-image to access our Pithos+ backend.
892 caa6c07d Constantinos Venetsanopoulos
893 caa6c07d Constantinos Venetsanopoulos
To do this, we need to set the corresponding variables in
894 caa6c07d Constantinos Venetsanopoulos
``/etc/default/snf-image``, to reflect our Pithos+ setup:
895 caa6c07d Constantinos Venetsanopoulos
896 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
897 caa6c07d Constantinos Venetsanopoulos
898 caa6c07d Constantinos Venetsanopoulos
   PITHOS_DB="postgresql://synnefo:example_passw0rd@node1.example.com:5432/snf_pithos"
899 caa6c07d Constantinos Venetsanopoulos
900 caa6c07d Constantinos Venetsanopoulos
   PITHOS_DATA="/srv/pithos/data"
901 caa6c07d Constantinos Venetsanopoulos
902 caa6c07d Constantinos Venetsanopoulos
If you have installed your Ganeti cluster on different nodes than node1 and node2 make
903 caa6c07d Constantinos Venetsanopoulos
sure that ``/srv/pithos/data`` is visible by all of them.
904 caa6c07d Constantinos Venetsanopoulos
905 caa6c07d Constantinos Venetsanopoulos
If you would like to use Images that are also/only stored locally, you need to
906 caa6c07d Constantinos Venetsanopoulos
save them under ``IMAGE_DIR``, however this guide targets Images stored only on
907 caa6c07d Constantinos Venetsanopoulos
Pithos+.
908 caa6c07d Constantinos Venetsanopoulos
909 caa6c07d Constantinos Venetsanopoulos
Testing
910 7a8df455 Constantinos Venetsanopoulos
~~~~~~~
911 caa6c07d Constantinos Venetsanopoulos
You can test that snf-image is successfully installed by running on the
912 caa6c07d Constantinos Venetsanopoulos
:ref:`GANETI-MASTER <GANETI_NODES>` (in our case node1):
913 caa6c07d Constantinos Venetsanopoulos
914 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
915 caa6c07d Constantinos Venetsanopoulos
916 caa6c07d Constantinos Venetsanopoulos
   # gnt-os diagnose
917 caa6c07d Constantinos Venetsanopoulos
918 caa6c07d Constantinos Venetsanopoulos
This should return ``valid`` for snf-image.
919 caa6c07d Constantinos Venetsanopoulos
920 caa6c07d Constantinos Venetsanopoulos
If you are interested to learn more about snf-image's internals (and even use
921 caa6c07d Constantinos Venetsanopoulos
it alongside Ganeti without Synnefo), please see
922 caa6c07d Constantinos Venetsanopoulos
`here <https://code.grnet.gr/projects/snf-image/wiki>`_ for information concerning
923 caa6c07d Constantinos Venetsanopoulos
installation instructions, documentation on the design and implementation, and
924 caa6c07d Constantinos Venetsanopoulos
supported Image formats.
925 caa6c07d Constantinos Venetsanopoulos
926 caa6c07d Constantinos Venetsanopoulos
snf-image's actual Images
927 7a8df455 Constantinos Venetsanopoulos
-------------------------
928 caa6c07d Constantinos Venetsanopoulos
929 caa6c07d Constantinos Venetsanopoulos
Now that snf-image is installed successfully we need to provide it with some
930 caa6c07d Constantinos Venetsanopoulos
Images. :ref:`snf-image <snf-image>` supports Images stored in ``extdump``,
931 caa6c07d Constantinos Venetsanopoulos
``ntfsdump`` or ``diskdump`` format. We recommend the use of the ``diskdump``
932 caa6c07d Constantinos Venetsanopoulos
format. For more information about snf-image's Image formats see `here
933 caa6c07d Constantinos Venetsanopoulos
<https://code.grnet.gr/projects/snf-image/wiki/Image_Format>`_.
934 caa6c07d Constantinos Venetsanopoulos
935 caa6c07d Constantinos Venetsanopoulos
:ref:`snf-image <snf-image>` also supports three (3) different locations for the
936 caa6c07d Constantinos Venetsanopoulos
above Images to be stored:
937 caa6c07d Constantinos Venetsanopoulos
938 caa6c07d Constantinos Venetsanopoulos
 * Under a local folder (usually an NFS mount, configurable as ``IMAGE_DIR`` in
939 caa6c07d Constantinos Venetsanopoulos
   :file:`/etc/default/snf-image`)
940 caa6c07d Constantinos Venetsanopoulos
 * On a remote host (accessible via a public URL e.g: http://... or ftp://...)
941 caa6c07d Constantinos Venetsanopoulos
 * On Pithos+ (accessible natively, not only by its public URL)
942 caa6c07d Constantinos Venetsanopoulos
943 caa6c07d Constantinos Venetsanopoulos
For the purpose of this guide, we will use the `Debian Squeeze Base Image
944 caa6c07d Constantinos Venetsanopoulos
<https://pithos.okeanos.grnet.gr/public/9epgb>`_ found on the official
945 caa6c07d Constantinos Venetsanopoulos
`snf-image page
946 caa6c07d Constantinos Venetsanopoulos
<https://code.grnet.gr/projects/snf-image/wiki#Sample-Images>`_. The image is
947 caa6c07d Constantinos Venetsanopoulos
of type ``diskdump``. We will store it in our new Pithos+ installation.
948 caa6c07d Constantinos Venetsanopoulos
949 caa6c07d Constantinos Venetsanopoulos
To do so, do the following:
950 caa6c07d Constantinos Venetsanopoulos
951 caa6c07d Constantinos Venetsanopoulos
a) Download the Image from the official snf-image page (`image link
952 caa6c07d Constantinos Venetsanopoulos
   <https://pithos.okeanos.grnet.gr/public/9epgb>`_).
953 caa6c07d Constantinos Venetsanopoulos
954 caa6c07d Constantinos Venetsanopoulos
b) Upload the Image to your Pithos+ installation, either using the Pithos+ Web UI
955 caa6c07d Constantinos Venetsanopoulos
   or the command line client `kamaki
956 caa6c07d Constantinos Venetsanopoulos
   <http://docs.dev.grnet.gr/kamaki/latest/index.html>`_.
957 caa6c07d Constantinos Venetsanopoulos
958 caa6c07d Constantinos Venetsanopoulos
Once the Image is uploaded successfully, download the Image's metadata file
959 caa6c07d Constantinos Venetsanopoulos
from the official snf-image page (`image_metadata link
960 caa6c07d Constantinos Venetsanopoulos
<https://pithos.okeanos.grnet.gr/public/gwqcv>`_). You will need it, for
961 caa6c07d Constantinos Venetsanopoulos
spawning a VM from Ganeti, in the next section.
962 caa6c07d Constantinos Venetsanopoulos
963 caa6c07d Constantinos Venetsanopoulos
Of course, you can repeat the procedure to upload more Images, available from the
964 caa6c07d Constantinos Venetsanopoulos
`official snf-image page
965 caa6c07d Constantinos Venetsanopoulos
<https://code.grnet.gr/projects/snf-image/wiki#Sample-Images>`_.
966 caa6c07d Constantinos Venetsanopoulos
967 caa6c07d Constantinos Venetsanopoulos
Spawning a VM from a Pithos+ Image, using Ganeti
968 7a8df455 Constantinos Venetsanopoulos
------------------------------------------------
969 caa6c07d Constantinos Venetsanopoulos
970 caa6c07d Constantinos Venetsanopoulos
Now, it is time to test our installation so far. So, we have Astakos and
971 caa6c07d Constantinos Venetsanopoulos
Pithos+ installed, we have a working Ganeti installation, the snf-image
972 caa6c07d Constantinos Venetsanopoulos
definition installed on all VM-capable nodes and a Debian Squeeze Image on
973 caa6c07d Constantinos Venetsanopoulos
Pithos+. Make sure you also have the `metadata file
974 caa6c07d Constantinos Venetsanopoulos
<https://pithos.okeanos.grnet.gr/public/gwqcv>`_ for this image.
975 caa6c07d Constantinos Venetsanopoulos
976 caa6c07d Constantinos Venetsanopoulos
Run on the :ref:`GANETI-MASTER's <GANETI_NODES>` (node1) command line:
977 caa6c07d Constantinos Venetsanopoulos
978 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
979 caa6c07d Constantinos Venetsanopoulos
980 caa6c07d Constantinos Venetsanopoulos
   # gnt-instance add -o snf-image+default --os-parameters
981 caa6c07d Constantinos Venetsanopoulos
                      img_passwd=my_vm_example_passw0rd,
982 caa6c07d Constantinos Venetsanopoulos
                      img_format=diskdump,
983 caa6c07d Constantinos Venetsanopoulos
                      img_id="pithos://user@example.com/pithos/debian_base-6.0-7-x86_64.diskdump",
984 caa6c07d Constantinos Venetsanopoulos
                      img_properties='{"OSFAMILY":"linux"\,"ROOT_PARTITION":"1"}'
985 caa6c07d Constantinos Venetsanopoulos
                      -t plain --disk 0:size=2G --no-name-check --no-ip-check
986 caa6c07d Constantinos Venetsanopoulos
                      testvm1
987 caa6c07d Constantinos Venetsanopoulos
988 caa6c07d Constantinos Venetsanopoulos
In the above command:
989 caa6c07d Constantinos Venetsanopoulos
990 caa6c07d Constantinos Venetsanopoulos
 * ``img_passwd``: the arbitrary root password of your new instance
991 caa6c07d Constantinos Venetsanopoulos
 * ``img_format``: set to ``diskdump`` to reflect the type of the uploaded Image
992 caa6c07d Constantinos Venetsanopoulos
 * ``img_id``: If you want to deploy an Image stored on Pithos+ (our case), this
993 caa6c07d Constantinos Venetsanopoulos
               should have the format
994 caa6c07d Constantinos Venetsanopoulos
               ``pithos://<username>/<container>/<filename>``:
995 caa6c07d Constantinos Venetsanopoulos
                * ``username``: ``user@example.com`` (defined during Astakos sign up)
996 caa6c07d Constantinos Venetsanopoulos
                * ``container``: ``pithos`` (default, if the Web UI was used)
997 caa6c07d Constantinos Venetsanopoulos
                * ``filename``: the name of file (visible also from the Web UI)
998 caa6c07d Constantinos Venetsanopoulos
 * ``img_properties``: taken from the metadata file. Used only the two mandatory
999 caa6c07d Constantinos Venetsanopoulos
                       properties ``OSFAMILY`` and ``ROOT_PARTITION``. `Learn more
1000 caa6c07d Constantinos Venetsanopoulos
                       <https://code.grnet.gr/projects/snf-image/wiki/Image_Format#Image-Properties>`_
1001 caa6c07d Constantinos Venetsanopoulos
1002 caa6c07d Constantinos Venetsanopoulos
If the ``gnt-instance add`` command returns successfully, then run:
1003 caa6c07d Constantinos Venetsanopoulos
1004 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
1005 caa6c07d Constantinos Venetsanopoulos
1006 caa6c07d Constantinos Venetsanopoulos
   # gnt-instance info testvm1 | grep "console connection"
1007 caa6c07d Constantinos Venetsanopoulos
1008 caa6c07d Constantinos Venetsanopoulos
to find out where to connect using VNC. If you can connect successfully and can
1009 caa6c07d Constantinos Venetsanopoulos
login to your new instance using the root password ``my_vm_example_passw0rd``,
1010 caa6c07d Constantinos Venetsanopoulos
then everything works as expected and you have your new Debian Base VM up and
1011 caa6c07d Constantinos Venetsanopoulos
running.
1012 caa6c07d Constantinos Venetsanopoulos
1013 caa6c07d Constantinos Venetsanopoulos
If ``gnt-instance add`` fails, make sure that snf-image is correctly configured
1014 caa6c07d Constantinos Venetsanopoulos
to access the Pithos+ database and the Pithos+ backend data. Also, make sure
1015 caa6c07d Constantinos Venetsanopoulos
you gave the correct ``img_id`` and ``img_properties``. If ``gnt-instance add``
1016 caa6c07d Constantinos Venetsanopoulos
succeeds but you cannot connect, again find out what went wrong. Do *NOT*
1017 caa6c07d Constantinos Venetsanopoulos
proceed to the next steps unless you are sure everything works till this point.
1018 caa6c07d Constantinos Venetsanopoulos
1019 2f6143c9 Constantinos Venetsanopoulos
If everything works, you have successfully connected Ganeti with Pithos+. Let's
1020 2f6143c9 Constantinos Venetsanopoulos
move on to networking now.
1021 caa6c07d Constantinos Venetsanopoulos
1022 2f6143c9 Constantinos Venetsanopoulos
.. warning::
1023 7a8df455 Constantinos Venetsanopoulos
    You can bypass the networking sections and go straight to
1024 2c85833e Constantinos Venetsanopoulos
    :ref:`Cyclades Ganeti tools <cyclades-gtools>`, if you do not want to setup
1025 2c85833e Constantinos Venetsanopoulos
    the Cyclades Network Service, but only the Cyclades Compute Service
1026 2c85833e Constantinos Venetsanopoulos
    (recommended for now).
1027 2f6143c9 Constantinos Venetsanopoulos
1028 2f6143c9 Constantinos Venetsanopoulos
Network setup overview
1029 7a8df455 Constantinos Venetsanopoulos
----------------------
1030 2f6143c9 Constantinos Venetsanopoulos
1031 2f6143c9 Constantinos Venetsanopoulos
This part is deployment-specific and must be customized based on the specific
1032 2f6143c9 Constantinos Venetsanopoulos
needs of the system administrator. However, to do so, the administrator needs
1033 2f6143c9 Constantinos Venetsanopoulos
to understand how each level handles Virtual Networks, to be able to setup the
1034 2f6143c9 Constantinos Venetsanopoulos
backend appropriately, before installing Cyclades.
1035 2f6143c9 Constantinos Venetsanopoulos
1036 2f6143c9 Constantinos Venetsanopoulos
Network @ Cyclades level
1037 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~
1038 2f6143c9 Constantinos Venetsanopoulos
1039 2f6143c9 Constantinos Venetsanopoulos
Cyclades understands two types of Virtual Networks:
1040 2f6143c9 Constantinos Venetsanopoulos
1041 2f6143c9 Constantinos Venetsanopoulos
a) One common Public Network (Internet)
1042 2f6143c9 Constantinos Venetsanopoulos
b) One or more distinct Private Networks (L2)
1043 2f6143c9 Constantinos Venetsanopoulos
1044 2f6143c9 Constantinos Venetsanopoulos
a) When a new VM is created, it instantly gets connected to the Public Network
1045 2f6143c9 Constantinos Venetsanopoulos
   (Internet). This means it gets a public IPv4 and IPv6 and has access to the
1046 2f6143c9 Constantinos Venetsanopoulos
   public Internet.
1047 2f6143c9 Constantinos Venetsanopoulos
1048 2f6143c9 Constantinos Venetsanopoulos
b) Then each user, is able to create one or more Private Networks manually and
1049 2f6143c9 Constantinos Venetsanopoulos
   add VMs inside those Private Networks. Private Networks provide Layer 2
1050 2f6143c9 Constantinos Venetsanopoulos
   connectivity. All VMs inside a Private Network are completely isolated.
1051 2f6143c9 Constantinos Venetsanopoulos
1052 2f6143c9 Constantinos Venetsanopoulos
From the VM perspective, every Network corresponds to a distinct NIC. So, the
1053 2f6143c9 Constantinos Venetsanopoulos
above are translated as follows:
1054 2f6143c9 Constantinos Venetsanopoulos
1055 2f6143c9 Constantinos Venetsanopoulos
a) Every newly created VM, needs at least one NIC. This NIC, connects the VM
1056 2f6143c9 Constantinos Venetsanopoulos
   to the Public Network and thus should get a public IPv4 and IPv6.
1057 2f6143c9 Constantinos Venetsanopoulos
1058 2f6143c9 Constantinos Venetsanopoulos
b) For every Private Network, the VM gets a new NIC, which is added during the
1059 2f6143c9 Constantinos Venetsanopoulos
   connection of the VM to the Private Network (without an IP). This NIC should
1060 2f6143c9 Constantinos Venetsanopoulos
   have L2 connectivity with all other NICs connected to this Private Network.
1061 2f6143c9 Constantinos Venetsanopoulos
1062 2f6143c9 Constantinos Venetsanopoulos
To achieve the above, first of all, we need Network and IP Pool management support
1063 2f6143c9 Constantinos Venetsanopoulos
at Ganeti level, for Cyclades to be able to issue the corresponding commands.
1064 2f6143c9 Constantinos Venetsanopoulos
1065 2f6143c9 Constantinos Venetsanopoulos
Network @ Ganeti level
1066 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~
1067 2f6143c9 Constantinos Venetsanopoulos
1068 2f6143c9 Constantinos Venetsanopoulos
Currently, Ganeti does not support IP Pool management. However, we've been
1069 2f6143c9 Constantinos Venetsanopoulos
actively in touch with the official Ganeti team, who are reviewing a relatively
1070 2f6143c9 Constantinos Venetsanopoulos
big patchset that implements this functionality (you can find it at the
1071 2f6143c9 Constantinos Venetsanopoulos
ganeti-devel mailing list). We hope that the functionality will be merged to
1072 2f6143c9 Constantinos Venetsanopoulos
the Ganeti master branch soon and appear on Ganeti 2.7.
1073 2f6143c9 Constantinos Venetsanopoulos
1074 2f6143c9 Constantinos Venetsanopoulos
Furthermore, currently the `~okeanos service <http://okeanos.grnet.gr>`_ uses
1075 2f6143c9 Constantinos Venetsanopoulos
the same patchset with slight differencies on top of Ganeti 2.4.5. Cyclades
1076 2f6143c9 Constantinos Venetsanopoulos
0.9 are compatible with this old patchset and we do not guarantee that will
1077 2f6143c9 Constantinos Venetsanopoulos
work with the updated patchset sent to ganeti-devel.
1078 2f6143c9 Constantinos Venetsanopoulos
1079 2f6143c9 Constantinos Venetsanopoulos
We do *NOT* recommend you to apply the patchset yourself on the current Ganeti
1080 2f6143c9 Constantinos Venetsanopoulos
master, unless you are an experienced Cyclades and Ganeti integrator and you
1081 2f6143c9 Constantinos Venetsanopoulos
really know what you are doing.
1082 2f6143c9 Constantinos Venetsanopoulos
1083 2f6143c9 Constantinos Venetsanopoulos
Instead, be a little patient and we hope that everything will work out of the
1084 2f6143c9 Constantinos Venetsanopoulos
box, once the patchset makes it into the Ganeti master. When so, Cyclades will
1085 2f6143c9 Constantinos Venetsanopoulos
get updated to become compatible with that Ganeti version.
1086 2f6143c9 Constantinos Venetsanopoulos
1087 2f6143c9 Constantinos Venetsanopoulos
Network @ Physical host level
1088 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1089 2f6143c9 Constantinos Venetsanopoulos
1090 2f6143c9 Constantinos Venetsanopoulos
We talked about the two types of Network from the Cyclades perspective, from the
1091 2f6143c9 Constantinos Venetsanopoulos
VMs perspective and from Ganeti's perspective. Finally, we need to talk about
1092 2f6143c9 Constantinos Venetsanopoulos
the Networks from the physical (VM container) host's perspective.
1093 2f6143c9 Constantinos Venetsanopoulos
1094 2f6143c9 Constantinos Venetsanopoulos
If your version of Ganeti supports IP pool management, then you need to setup
1095 2f6143c9 Constantinos Venetsanopoulos
your physical hosts for the two types of Networks. For the second type
1096 2f6143c9 Constantinos Venetsanopoulos
(Private Networks), our reference installation uses a number of pre-provisioned
1097 2f6143c9 Constantinos Venetsanopoulos
bridges (one for each Network), which are connected to the corresponding number
1098 2f6143c9 Constantinos Venetsanopoulos
of pre-provisioned vlans on each physical host (node1 and node2). For the first
1099 2f6143c9 Constantinos Venetsanopoulos
type (Public Network), our reference installation uses routing over one
1100 2f6143c9 Constantinos Venetsanopoulos
preprovisioned vlan on each host (node1 and node2). It also uses the `NFDHCPD`
1101 2f6143c9 Constantinos Venetsanopoulos
package for dynamically serving specific public IPs managed by Ganeti.
1102 2f6143c9 Constantinos Venetsanopoulos
1103 2f6143c9 Constantinos Venetsanopoulos
Public Network setup
1104 7a8df455 Constantinos Venetsanopoulos
--------------------
1105 2f6143c9 Constantinos Venetsanopoulos
1106 2f6143c9 Constantinos Venetsanopoulos
Physical hosts' public network setup
1107 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1108 2f6143c9 Constantinos Venetsanopoulos
1109 2f6143c9 Constantinos Venetsanopoulos
The physical hosts' setup is out of the scope of this guide.
1110 2f6143c9 Constantinos Venetsanopoulos
1111 2f6143c9 Constantinos Venetsanopoulos
However, two common cases that you may want to consider (and choose from) are:
1112 2f6143c9 Constantinos Venetsanopoulos
1113 2f6143c9 Constantinos Venetsanopoulos
a) One public bridge, where all VMs' public tap interfaces will connect.
1114 2f6143c9 Constantinos Venetsanopoulos
b) IP-less routing over the same vlan on every host.
1115 2f6143c9 Constantinos Venetsanopoulos
1116 2f6143c9 Constantinos Venetsanopoulos
When you setup your physical hosts (node1 and node2) for the Public Network,
1117 2f6143c9 Constantinos Venetsanopoulos
then you need to inform Ganeti about the Network's IP range.
1118 2f6143c9 Constantinos Venetsanopoulos
1119 2f6143c9 Constantinos Venetsanopoulos
Add the public network to Ganeti
1120 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1121 2f6143c9 Constantinos Venetsanopoulos
1122 2f6143c9 Constantinos Venetsanopoulos
Once you have Ganeti with IP pool management up and running, you need to choose
1123 2f6143c9 Constantinos Venetsanopoulos
the public network for your VMs and add it to Ganeti. Let's assume, that you
1124 2f6143c9 Constantinos Venetsanopoulos
want to assign IPs from the ``5.6.7.0/27`` range to your new VMs, with
1125 2f6143c9 Constantinos Venetsanopoulos
``5.6.7.1`` as their gateway. You can add the network by running:
1126 2f6143c9 Constantinos Venetsanopoulos
1127 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1128 2f6143c9 Constantinos Venetsanopoulos
1129 2f6143c9 Constantinos Venetsanopoulos
   # gnt-network add --network=5.6.7.0/27 --gateway=5.6.7.1 public_network
1130 2f6143c9 Constantinos Venetsanopoulos
1131 2f6143c9 Constantinos Venetsanopoulos
Then, connect the network to all your nodegroups. We assume that we only have
1132 2f6143c9 Constantinos Venetsanopoulos
one nodegroup (``default``) in our Ganeti cluster:
1133 2f6143c9 Constantinos Venetsanopoulos
1134 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1135 2f6143c9 Constantinos Venetsanopoulos
1136 2f6143c9 Constantinos Venetsanopoulos
   # gnt-network connect public_network default public_link
1137 2f6143c9 Constantinos Venetsanopoulos
1138 2f6143c9 Constantinos Venetsanopoulos
Your new network is now ready from the Ganeti perspective. Now, we need to setup
1139 2f6143c9 Constantinos Venetsanopoulos
`NFDHCPD` to actually reply with the correct IPs (that Ganeti will choose for
1140 2f6143c9 Constantinos Venetsanopoulos
each NIC).
1141 2f6143c9 Constantinos Venetsanopoulos
1142 2f6143c9 Constantinos Venetsanopoulos
NFDHCPD
1143 7a8df455 Constantinos Venetsanopoulos
~~~~~~~
1144 2f6143c9 Constantinos Venetsanopoulos
1145 2f6143c9 Constantinos Venetsanopoulos
At this point, Ganeti knows about your preferred network, it can manage the IP
1146 2f6143c9 Constantinos Venetsanopoulos
pool and choose a specific IP for each new VM's NIC. However, the actual
1147 2f6143c9 Constantinos Venetsanopoulos
assignment of the IP to the NIC is not done by Ganeti. It is done after the VM
1148 2f6143c9 Constantinos Venetsanopoulos
boots and its dhcp client makes a request. When this is done, `NFDHCPD` will
1149 2f6143c9 Constantinos Venetsanopoulos
reply to the request with Ganeti's chosen IP. So, we need to install `NFDHCPD`
1150 2f6143c9 Constantinos Venetsanopoulos
on all VM-capable nodes of the Ganeti cluster (node1 and node2 in our case) and
1151 2f6143c9 Constantinos Venetsanopoulos
connect it to Ganeti:
1152 2f6143c9 Constantinos Venetsanopoulos
1153 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1154 2f6143c9 Constantinos Venetsanopoulos
1155 2f6143c9 Constantinos Venetsanopoulos
   # apt-get install nfdhcpd
1156 2f6143c9 Constantinos Venetsanopoulos
1157 2f6143c9 Constantinos Venetsanopoulos
Edit ``/etc/nfdhcpd/nfdhcpd.conf`` to reflect your network configuration. At
1158 2f6143c9 Constantinos Venetsanopoulos
least, set the ``dhcp_queue`` variable to ``42`` and the ``nameservers``
1159 2f6143c9 Constantinos Venetsanopoulos
variable to your DNS IP/s. Those IPs will be passed as the DNS IP/s of your new
1160 2f6143c9 Constantinos Venetsanopoulos
VMs. Once you are finished, restart the server on all nodes:
1161 2f6143c9 Constantinos Venetsanopoulos
1162 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1163 2f6143c9 Constantinos Venetsanopoulos
1164 2f6143c9 Constantinos Venetsanopoulos
   # /etc/init.d/nfdhcpd restart
1165 2f6143c9 Constantinos Venetsanopoulos
1166 2f6143c9 Constantinos Venetsanopoulos
If you are using ``ferm``, then you need to run the following:
1167 2f6143c9 Constantinos Venetsanopoulos
1168 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1169 2f6143c9 Constantinos Venetsanopoulos
1170 2f6143c9 Constantinos Venetsanopoulos
   # echo "@include 'nfdhcpd.ferm';" >> /etc/ferm/ferm.conf
1171 2f6143c9 Constantinos Venetsanopoulos
   # /etc/init.d/ferm restart
1172 2f6143c9 Constantinos Venetsanopoulos
1173 2f6143c9 Constantinos Venetsanopoulos
Now, you need to connect `NFDHCPD` with Ganeti. To do that, you need to install
1174 2f6143c9 Constantinos Venetsanopoulos
a custom KVM ifup script for use by Ganeti, as ``/etc/ganeti/kvm-vif-bridge``,
1175 2f6143c9 Constantinos Venetsanopoulos
on all VM-capable GANETI-NODEs (node1 and node2). A sample implementation is
1176 2f6143c9 Constantinos Venetsanopoulos
provided along with `snf-cyclades-gtools <snf-cyclades-gtools>`, that will
1177 2f6143c9 Constantinos Venetsanopoulos
be installed in the next sections, however you will probably need to write your
1178 2f6143c9 Constantinos Venetsanopoulos
own, according to your underlying network configuration.
1179 2f6143c9 Constantinos Venetsanopoulos
1180 2f6143c9 Constantinos Venetsanopoulos
Testing the Public Network
1181 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~
1182 2f6143c9 Constantinos Venetsanopoulos
1183 2f6143c9 Constantinos Venetsanopoulos
So, we have setup the bridges/vlans on the physical hosts appropriately, we have
1184 2f6143c9 Constantinos Venetsanopoulos
added the desired network to Ganeti, we have installed nfdhcpd and installed the
1185 2f6143c9 Constantinos Venetsanopoulos
appropriate ``kvm-vif-bridge`` script under ``/etc/ganeti``.
1186 2f6143c9 Constantinos Venetsanopoulos
1187 2f6143c9 Constantinos Venetsanopoulos
Now, it is time to test that the backend infrastracture is correctly setup for
1188 2f6143c9 Constantinos Venetsanopoulos
the Public Network. We assume to have used the (b) method on setting up the
1189 2f6143c9 Constantinos Venetsanopoulos
physical hosts. We will add a new VM, the same way we did it on the previous
1190 2f6143c9 Constantinos Venetsanopoulos
testing section. However, now will also add one NIC, configured to be managed
1191 2f6143c9 Constantinos Venetsanopoulos
from our previously defined network. Run on the GANETI-MASTER (node1):
1192 2f6143c9 Constantinos Venetsanopoulos
1193 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1194 2f6143c9 Constantinos Venetsanopoulos
1195 2f6143c9 Constantinos Venetsanopoulos
   # gnt-instance add -o snf-image+default --os-parameters
1196 2f6143c9 Constantinos Venetsanopoulos
                      img_passwd=my_vm_example_passw0rd,
1197 2f6143c9 Constantinos Venetsanopoulos
                      img_format=diskdump,
1198 2f6143c9 Constantinos Venetsanopoulos
                      img_id="pithos://user@example.com/pithos/debian_base-6.0-7-x86_64.diskdump",
1199 2f6143c9 Constantinos Venetsanopoulos
                      img_properties='{"OSFAMILY":"linux"\,"ROOT_PARTITION":"1"}'
1200 2f6143c9 Constantinos Venetsanopoulos
                      -t plain --disk 0:size=2G --no-name-check --no-ip-check
1201 2f6143c9 Constantinos Venetsanopoulos
                      --net 0:ip=pool,mode=routed,link=public_link
1202 2f6143c9 Constantinos Venetsanopoulos
                      testvm2
1203 2f6143c9 Constantinos Venetsanopoulos
1204 2f6143c9 Constantinos Venetsanopoulos
If the above returns successfully, connect to the new VM and run:
1205 2f6143c9 Constantinos Venetsanopoulos
1206 2f6143c9 Constantinos Venetsanopoulos
.. code-block:: console
1207 2f6143c9 Constantinos Venetsanopoulos
1208 2f6143c9 Constantinos Venetsanopoulos
   root@testvm2:~ # ifconfig -a
1209 2f6143c9 Constantinos Venetsanopoulos
1210 2f6143c9 Constantinos Venetsanopoulos
If a network interface appears with an IP from you Public Network's range
1211 2f6143c9 Constantinos Venetsanopoulos
(``5.6.7.0/27``) and the corresponding gateway, then you have successfully
1212 2f6143c9 Constantinos Venetsanopoulos
connected Ganeti with `NFDHCPD` (and ``kvm-vif-bridge`` works correctly).
1213 2f6143c9 Constantinos Venetsanopoulos
1214 2f6143c9 Constantinos Venetsanopoulos
Now ping the outside world. If this works too, then you have also configured
1215 2f6143c9 Constantinos Venetsanopoulos
correctly your physical hosts' networking.
1216 2f6143c9 Constantinos Venetsanopoulos
1217 547c78f6 Constantinos Venetsanopoulos
Later, Cyclades will create the first NIC of every new VM by issuing an
1218 547c78f6 Constantinos Venetsanopoulos
analogous command. The first NIC of the instance will be the NIC connected to
1219 547c78f6 Constantinos Venetsanopoulos
the Public Network. The ``link`` variable will be set accordingly in the
1220 547c78f6 Constantinos Venetsanopoulos
Cyclades conf files later on the guide.
1221 547c78f6 Constantinos Venetsanopoulos
1222 547c78f6 Constantinos Venetsanopoulos
Make sure everything works as expected, before proceeding with the Private
1223 2f6143c9 Constantinos Venetsanopoulos
Networks setup.
1224 2f6143c9 Constantinos Venetsanopoulos
1225 04c1254b Constantinos Venetsanopoulos
.. _private-networks-setup:
1226 04c1254b Constantinos Venetsanopoulos
1227 2f6143c9 Constantinos Venetsanopoulos
Private Networks setup
1228 7a8df455 Constantinos Venetsanopoulos
----------------------
1229 2f6143c9 Constantinos Venetsanopoulos
1230 2f6143c9 Constantinos Venetsanopoulos
Physical hosts' private networks setup
1231 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1232 2f6143c9 Constantinos Venetsanopoulos
1233 547c78f6 Constantinos Venetsanopoulos
At the physical host's level, it is the administrator's responsibility to
1234 547c78f6 Constantinos Venetsanopoulos
configure the network appropriately, according to his/her needs (as for the
1235 547c78f6 Constantinos Venetsanopoulos
Public Network).
1236 547c78f6 Constantinos Venetsanopoulos
1237 547c78f6 Constantinos Venetsanopoulos
However we propose the following setup:
1238 547c78f6 Constantinos Venetsanopoulos
1239 547c78f6 Constantinos Venetsanopoulos
For every possible Private Network we assume a pre-provisioned bridge interface
1240 547c78f6 Constantinos Venetsanopoulos
exists on every host with the same name. Every Private Network will be
1241 547c78f6 Constantinos Venetsanopoulos
associated with one of the pre-provisioned bridges. Then the instance's new NIC
1242 547c78f6 Constantinos Venetsanopoulos
(while connecting to the Private Network) will be connected to that bridge. All
1243 547c78f6 Constantinos Venetsanopoulos
instances' tap interfaces that reside in the same Private Network will be
1244 547c78f6 Constantinos Venetsanopoulos
connected in the corresponding bridge of that network. Furthermore, every
1245 547c78f6 Constantinos Venetsanopoulos
bridge will be connected to a corresponding vlan. So, lets assume that our
1246 547c78f6 Constantinos Venetsanopoulos
Cyclades installation allows for 20 Private Networks to be setup. We should
1247 547c78f6 Constantinos Venetsanopoulos
pre-provision the corresponding bridges and vlans to all the hosts. We can do
1248 547c78f6 Constantinos Venetsanopoulos
this by running on all VM-capable Ganeti nodes (in our case node1 and node2):
1249 547c78f6 Constantinos Venetsanopoulos
1250 547c78f6 Constantinos Venetsanopoulos
.. code-block:: console
1251 547c78f6 Constantinos Venetsanopoulos
1252 547c78f6 Constantinos Venetsanopoulos
   # $iface=eth0
1253 547c78f6 Constantinos Venetsanopoulos
   # for prv in $(seq 1 20); do
1254 547c78f6 Constantinos Venetsanopoulos
	vlan=$prv
1255 547c78f6 Constantinos Venetsanopoulos
	bridge=prv$prv
1256 547c78f6 Constantinos Venetsanopoulos
	vconfig add $iface $vlan
1257 547c78f6 Constantinos Venetsanopoulos
	ifconfig $iface.$vlan up
1258 547c78f6 Constantinos Venetsanopoulos
	brctl addbr $bridge
1259 547c78f6 Constantinos Venetsanopoulos
	brctl setfd $bridge 0
1260 547c78f6 Constantinos Venetsanopoulos
	brctl addif $bridge $iface.$vlan
1261 547c78f6 Constantinos Venetsanopoulos
	ifconfig $bridge up
1262 547c78f6 Constantinos Venetsanopoulos
      done
1263 547c78f6 Constantinos Venetsanopoulos
1264 547c78f6 Constantinos Venetsanopoulos
The above will do the following (assuming ``eth0`` exists on both hosts):
1265 547c78f6 Constantinos Venetsanopoulos
1266 547c78f6 Constantinos Venetsanopoulos
 * provision 20 new bridges: ``prv1`` - ``prv20``
1267 547c78f6 Constantinos Venetsanopoulos
 * provision 20 new vlans: ``eth0.1`` - ``eth0.20``
1268 547c78f6 Constantinos Venetsanopoulos
 * add the corresponding vlan to the equivelant bridge
1269 547c78f6 Constantinos Venetsanopoulos
1270 547c78f6 Constantinos Venetsanopoulos
You can run ``brctl show`` on both nodes to see if everything was setup
1271 547c78f6 Constantinos Venetsanopoulos
correctly.
1272 547c78f6 Constantinos Venetsanopoulos
1273 547c78f6 Constantinos Venetsanopoulos
Everything is now setup to support the 20 Cyclades Private Networks. Later,
1274 547c78f6 Constantinos Venetsanopoulos
we will configure Cyclades to talk to those 20 pre-provisioned bridges.
1275 547c78f6 Constantinos Venetsanopoulos
1276 2f6143c9 Constantinos Venetsanopoulos
Testing the Private Networks
1277 7a8df455 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1278 caa6c07d Constantinos Venetsanopoulos
1279 547c78f6 Constantinos Venetsanopoulos
To test the Private Networks, we will create two instances and put them in the
1280 547c78f6 Constantinos Venetsanopoulos
same Private Network (``prv1``). This means that the instances will have a
1281 547c78f6 Constantinos Venetsanopoulos
second NIC connected to the ``prv1`` pre-provisioned bridge.
1282 547c78f6 Constantinos Venetsanopoulos
1283 547c78f6 Constantinos Venetsanopoulos
We run the same command as in the Public Network testing section, but with one
1284 547c78f6 Constantinos Venetsanopoulos
more argument for the second NIC:
1285 547c78f6 Constantinos Venetsanopoulos
1286 547c78f6 Constantinos Venetsanopoulos
.. code-block:: console
1287 547c78f6 Constantinos Venetsanopoulos
1288 547c78f6 Constantinos Venetsanopoulos
   # gnt-instance add -o snf-image+default --os-parameters
1289 547c78f6 Constantinos Venetsanopoulos
                      img_passwd=my_vm_example_passw0rd,
1290 547c78f6 Constantinos Venetsanopoulos
                      img_format=diskdump,
1291 547c78f6 Constantinos Venetsanopoulos
                      img_id="pithos://user@example.com/pithos/debian_base-6.0-7-x86_64.diskdump",
1292 547c78f6 Constantinos Venetsanopoulos
                      img_properties='{"OSFAMILY":"linux"\,"ROOT_PARTITION":"1"}'
1293 547c78f6 Constantinos Venetsanopoulos
                      -t plain --disk 0:size=2G --no-name-check --no-ip-check
1294 547c78f6 Constantinos Venetsanopoulos
                      --net 0:ip=pool,mode=routed,link=public_link
1295 547c78f6 Constantinos Venetsanopoulos
                      --net 1:ip=none,mode=bridged,link=prv1
1296 547c78f6 Constantinos Venetsanopoulos
                      testvm3
1297 547c78f6 Constantinos Venetsanopoulos
1298 547c78f6 Constantinos Venetsanopoulos
   # gnt-instance add -o snf-image+default --os-parameters
1299 547c78f6 Constantinos Venetsanopoulos
                      img_passwd=my_vm_example_passw0rd,
1300 547c78f6 Constantinos Venetsanopoulos
                      img_format=diskdump,
1301 547c78f6 Constantinos Venetsanopoulos
                      img_id="pithos://user@example.com/pithos/debian_base-6.0-7-x86_64.diskdump",
1302 547c78f6 Constantinos Venetsanopoulos
                      img_properties='{"OSFAMILY":"linux"\,"ROOT_PARTITION":"1"}'
1303 547c78f6 Constantinos Venetsanopoulos
                      -t plain --disk 0:size=2G --no-name-check --no-ip-check
1304 547c78f6 Constantinos Venetsanopoulos
                      --net 0:ip=pool,mode=routed,link=public_link
1305 547c78f6 Constantinos Venetsanopoulos
                      --net 1:ip=none,mode=bridged,link=prv1
1306 547c78f6 Constantinos Venetsanopoulos
                      testvm4
1307 547c78f6 Constantinos Venetsanopoulos
1308 547c78f6 Constantinos Venetsanopoulos
Above, we create two instances with their first NIC connected to the Public
1309 547c78f6 Constantinos Venetsanopoulos
Network and their second NIC connected to the first Private Network (``prv1``).
1310 547c78f6 Constantinos Venetsanopoulos
Now, connect to the instances using VNC and make sure everything works as
1311 547c78f6 Constantinos Venetsanopoulos
expected:
1312 547c78f6 Constantinos Venetsanopoulos
1313 547c78f6 Constantinos Venetsanopoulos
a) The instances have access to the public internet through their first eth
1314 547c78f6 Constantinos Venetsanopoulos
   interface (``eth0``), which has been automatically assigned a public IP.
1315 547c78f6 Constantinos Venetsanopoulos
1316 547c78f6 Constantinos Venetsanopoulos
b) Setup the second eth interface of the instances (``eth1``), by assigning two
1317 547c78f6 Constantinos Venetsanopoulos
   different private IPs (e.g.: ``10.0.0.1`` and ``10.0.0.2``) and the
1318 547c78f6 Constantinos Venetsanopoulos
   corresponding netmask. If they ``ping`` each other successfully, then
1319 547c78f6 Constantinos Venetsanopoulos
   the Private Network works.
1320 547c78f6 Constantinos Venetsanopoulos
1321 547c78f6 Constantinos Venetsanopoulos
Repeat the procedure with more instances connected in different Private Networks
1322 547c78f6 Constantinos Venetsanopoulos
(``prv{1-20}``), by adding more NICs on each instance. e.g.: We add an instance
1323 547c78f6 Constantinos Venetsanopoulos
connected to the Public Network and Private Networks 1, 3 and 19:
1324 547c78f6 Constantinos Venetsanopoulos
1325 547c78f6 Constantinos Venetsanopoulos
.. code-block:: console
1326 547c78f6 Constantinos Venetsanopoulos
1327 547c78f6 Constantinos Venetsanopoulos
   # gnt-instance add -o snf-image+default --os-parameters
1328 547c78f6 Constantinos Venetsanopoulos
                      img_passwd=my_vm_example_passw0rd,
1329 547c78f6 Constantinos Venetsanopoulos
                      img_format=diskdump,
1330 547c78f6 Constantinos Venetsanopoulos
                      img_id="pithos://user@example.com/pithos/debian_base-6.0-7-x86_64.diskdump",
1331 547c78f6 Constantinos Venetsanopoulos
                      img_properties='{"OSFAMILY":"linux"\,"ROOT_PARTITION":"1"}'
1332 547c78f6 Constantinos Venetsanopoulos
                      -t plain --disk 0:size=2G --no-name-check --no-ip-check
1333 547c78f6 Constantinos Venetsanopoulos
                      --net 0:ip=pool,mode=routed,link=public_link
1334 547c78f6 Constantinos Venetsanopoulos
                      --net 1:ip=none,mode=bridged,link=prv1
1335 547c78f6 Constantinos Venetsanopoulos
                      --net 2:ip=none,mode=bridged,link=prv3
1336 547c78f6 Constantinos Venetsanopoulos
                      --net 3:ip=none,mode=bridged,link=prv19
1337 547c78f6 Constantinos Venetsanopoulos
                      testvm5
1338 547c78f6 Constantinos Venetsanopoulos
1339 547c78f6 Constantinos Venetsanopoulos
If everything works as expected, then you have finished the Network Setup at the
1340 547c78f6 Constantinos Venetsanopoulos
backend for both types of Networks (Public & Private).
1341 547c78f6 Constantinos Venetsanopoulos
1342 2c85833e Constantinos Venetsanopoulos
.. _cyclades-gtools:
1343 2c85833e Constantinos Venetsanopoulos
1344 2c85833e Constantinos Venetsanopoulos
Cyclades Ganeti tools
1345 2c85833e Constantinos Venetsanopoulos
---------------------
1346 2c85833e Constantinos Venetsanopoulos
1347 2c85833e Constantinos Venetsanopoulos
In order for Ganeti to be connected with Cyclades later on, we need the
1348 2c85833e Constantinos Venetsanopoulos
`Cyclades Ganeti tools` available on all Ganeti nodes (node1 & node2 in our
1349 2c85833e Constantinos Venetsanopoulos
case). You can install them by running in both nodes:
1350 2c85833e Constantinos Venetsanopoulos
1351 2c85833e Constantinos Venetsanopoulos
.. code-block:: console
1352 2c85833e Constantinos Venetsanopoulos
1353 2c85833e Constantinos Venetsanopoulos
   # apt-get install snf-cyclades-gtools
1354 2c85833e Constantinos Venetsanopoulos
1355 2c85833e Constantinos Venetsanopoulos
This will install the following:
1356 2c85833e Constantinos Venetsanopoulos
1357 2c85833e Constantinos Venetsanopoulos
 * ``snf-ganeti-eventd`` (daemon to publish Ganeti related messages on RabbitMQ)
1358 2c85833e Constantinos Venetsanopoulos
 * ``snf-ganeti-hook`` (all necessary hooks under ``/etc/ganeti/hooks``)
1359 2c85833e Constantinos Venetsanopoulos
 * ``snf-progress-monitor`` (used by ``snf-image`` to publish progress messages)
1360 2c85833e Constantinos Venetsanopoulos
 * ``kvm-vif-bridge`` (installed under ``/etc/ganeti`` to connect Ganeti with
1361 2c85833e Constantinos Venetsanopoulos
   NFDHCPD)
1362 2c85833e Constantinos Venetsanopoulos
1363 2c85833e Constantinos Venetsanopoulos
Configure ``snf-cyclades-gtools``
1364 2c85833e Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1365 2c85833e Constantinos Venetsanopoulos
1366 04c1254b Constantinos Venetsanopoulos
The package will install the ``/etc/synnefo/10-snf-cyclades-gtools-backend.conf``
1367 2c85833e Constantinos Venetsanopoulos
configuration file. At least we need to set the RabbitMQ endpoint for all tools
1368 2c85833e Constantinos Venetsanopoulos
that need it:
1369 2c85833e Constantinos Venetsanopoulos
1370 2c85833e Constantinos Venetsanopoulos
.. code-block:: console
1371 2c85833e Constantinos Venetsanopoulos
1372 2c85833e Constantinos Venetsanopoulos
   RABBIT_HOST = "node1.example.com:5672"
1373 2c85833e Constantinos Venetsanopoulos
   RABBIT_USERNAME = "synnefo"
1374 2c85833e Constantinos Venetsanopoulos
   RABBIT_PASSWORD = "example_rabbitmq_passw0rd"
1375 2c85833e Constantinos Venetsanopoulos
1376 2c85833e Constantinos Venetsanopoulos
The above variables should reflect your :ref:`Message Queue setup
1377 2c85833e Constantinos Venetsanopoulos
<rabbitmq-setup>`. This file should be editted in all Ganeti nodes.
1378 2c85833e Constantinos Venetsanopoulos
1379 2c85833e Constantinos Venetsanopoulos
Connect ``snf-image`` with ``snf-progress-monitor``
1380 2c85833e Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1381 2c85833e Constantinos Venetsanopoulos
1382 2c85833e Constantinos Venetsanopoulos
Finally, we need to configure ``snf-image`` to publish progress messages during
1383 2c85833e Constantinos Venetsanopoulos
the deployment of each Image. To do this, we edit ``/etc/default/snf-image`` and
1384 2c85833e Constantinos Venetsanopoulos
set the corresponding variable to ``snf-progress-monitor``:
1385 2c85833e Constantinos Venetsanopoulos
1386 2c85833e Constantinos Venetsanopoulos
.. code-block:: console
1387 2c85833e Constantinos Venetsanopoulos
1388 2c85833e Constantinos Venetsanopoulos
   PROGRESS_MONITOR="snf-progress-monitor"
1389 2c85833e Constantinos Venetsanopoulos
1390 2c85833e Constantinos Venetsanopoulos
This file should be editted in all Ganeti nodes.
1391 2c85833e Constantinos Venetsanopoulos
1392 7a8df455 Constantinos Venetsanopoulos
.. _rapi-user:
1393 7a8df455 Constantinos Venetsanopoulos
1394 caa6c07d Constantinos Venetsanopoulos
Synnefo RAPI user
1395 7a8df455 Constantinos Venetsanopoulos
-----------------
1396 caa6c07d Constantinos Venetsanopoulos
1397 7a8df455 Constantinos Venetsanopoulos
As a last step before installing Cyclades, create a new RAPI user that will
1398 caa6c07d Constantinos Venetsanopoulos
have ``write`` access. Cyclades will use this user to issue commands to Ganeti,
1399 2c85833e Constantinos Venetsanopoulos
so we will call the user ``cyclades`` with password ``example_rapi_passw0rd``.
1400 2c85833e Constantinos Venetsanopoulos
You can do this, by first running:
1401 2c85833e Constantinos Venetsanopoulos
1402 2c85833e Constantinos Venetsanopoulos
.. code-block:: console
1403 2c85833e Constantinos Venetsanopoulos
1404 2c85833e Constantinos Venetsanopoulos
   # echo -n 'cyclades:Ganeti Remote API:example_rapi_passw0rd' | openssl md5
1405 2c85833e Constantinos Venetsanopoulos
1406 2c85833e Constantinos Venetsanopoulos
and then putting the output in ``/var/lib/ganeti/rapi/users`` as follows:
1407 caa6c07d Constantinos Venetsanopoulos
1408 caa6c07d Constantinos Venetsanopoulos
.. code-block:: console
1409 caa6c07d Constantinos Venetsanopoulos
1410 2c85833e Constantinos Venetsanopoulos
   cyclades {HA1}55aec7050aa4e4b111ca43cb505a61a0 write
1411 caa6c07d Constantinos Venetsanopoulos
1412 caa6c07d Constantinos Venetsanopoulos
More about Ganeti's RAPI users `here.
1413 caa6c07d Constantinos Venetsanopoulos
<http://docs.ganeti.org/ganeti/2.5/html/rapi.html#introduction>`_
1414 bc055d09 Constantinos Venetsanopoulos
1415 7a8df455 Constantinos Venetsanopoulos
You have now finished with all needed Prerequisites for Cyclades (and
1416 7a8df455 Constantinos Venetsanopoulos
Plankton). Let's move on to the actual Cyclades installation.
1417 7a8df455 Constantinos Venetsanopoulos
1418 7a8df455 Constantinos Venetsanopoulos
1419 7a8df455 Constantinos Venetsanopoulos
Installation of Cyclades (and Plankton) on node1
1420 7a8df455 Constantinos Venetsanopoulos
================================================
1421 7a8df455 Constantinos Venetsanopoulos
1422 7a8df455 Constantinos Venetsanopoulos
This section describes the installation of Cyclades. Cyclades is Synnefo's
1423 7a8df455 Constantinos Venetsanopoulos
Compute service. Plankton (the Image Registry service) will get installed
1424 7a8df455 Constantinos Venetsanopoulos
automatically along with Cyclades, because it is contained in the same Synnefo
1425 7a8df455 Constantinos Venetsanopoulos
component right now.
1426 7a8df455 Constantinos Venetsanopoulos
1427 04c1254b Constantinos Venetsanopoulos
We will install Cyclades (and Plankton) on node1. To do so, we install the
1428 04c1254b Constantinos Venetsanopoulos
corresponding package by running on node1:
1429 04c1254b Constantinos Venetsanopoulos
1430 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1431 04c1254b Constantinos Venetsanopoulos
1432 04c1254b Constantinos Venetsanopoulos
   # apt-get install snf-cyclades-app
1433 04c1254b Constantinos Venetsanopoulos
1434 04c1254b Constantinos Venetsanopoulos
If the package installs successfully, then Cyclades and Plankton are installed
1435 04c1254b Constantinos Venetsanopoulos
and we proceed with their configuration.
1436 04c1254b Constantinos Venetsanopoulos
1437 bc055d09 Constantinos Venetsanopoulos
1438 a96ec00f Constantinos Venetsanopoulos
Configuration of Cyclades (and Plankton)
1439 a96ec00f Constantinos Venetsanopoulos
========================================
1440 5b6feb88 Vangelis Koukis
1441 04c1254b Constantinos Venetsanopoulos
Conf files
1442 04c1254b Constantinos Venetsanopoulos
----------
1443 bc055d09 Constantinos Venetsanopoulos
1444 04c1254b Constantinos Venetsanopoulos
After installing Cyclades, a number of new configuration files will appear under
1445 04c1254b Constantinos Venetsanopoulos
``/etc/synnefo/`` prefixed with ``20-snf-cyclades-app-``. We will descibe here
1446 04c1254b Constantinos Venetsanopoulos
only the minimal needed changes to result with a working system. In general, sane
1447 04c1254b Constantinos Venetsanopoulos
defaults have been chosen for the most of the options, to cover most of the
1448 04c1254b Constantinos Venetsanopoulos
common scenarios. However, if you want to tweak Cyclades feel free to do so,
1449 04c1254b Constantinos Venetsanopoulos
once you get familiar with the different options.
1450 bc055d09 Constantinos Venetsanopoulos
1451 04c1254b Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-cyclades-app-api.conf``:
1452 bc055d09 Constantinos Venetsanopoulos
1453 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1454 04c1254b Constantinos Venetsanopoulos
1455 04c1254b Constantinos Venetsanopoulos
   GANETI_MAX_LINK_NUMBER = 20
1456 04c1254b Constantinos Venetsanopoulos
   ASTAKOS_URL = 'https://accounts.node1.example.com/im/authenticate'
1457 04c1254b Constantinos Venetsanopoulos
1458 04c1254b Constantinos Venetsanopoulos
The ``GANETI_MAX_LINK_NUMBER`` is used to construct the names of the bridges
1459 04c1254b Constantinos Venetsanopoulos
already pre-provisioned for the Private Networks. Thus we set it to ``20``, to
1460 04c1254b Constantinos Venetsanopoulos
reflect our :ref:`Private Networks setup in the host machines
1461 04c1254b Constantinos Venetsanopoulos
<private-networks-setup>`. These numbers will suffix the
1462 04c1254b Constantinos Venetsanopoulos
``GANETI_LINK_PREFIX``, which is already set to ``prv`` and doesn't need to be
1463 04c1254b Constantinos Venetsanopoulos
changed. With those two variables Cyclades will construct the names of the
1464 04c1254b Constantinos Venetsanopoulos
available bridges ``prv1`` to ``prv20``, which are the real pre-provisioned
1465 04c1254b Constantinos Venetsanopoulos
bridges in the backend.
1466 04c1254b Constantinos Venetsanopoulos
1467 04c1254b Constantinos Venetsanopoulos
The ``ASTAKOS_URL`` denotes the authentication endpoint for Cyclades and is set
1468 04c1254b Constantinos Venetsanopoulos
to point to Astakos (this should have the same value with Pithos+'s
1469 04c1254b Constantinos Venetsanopoulos
``PITHOS_AUTHENTICATION_URL``, setup :ref:`previously <conf-pithos>`).
1470 04c1254b Constantinos Venetsanopoulos
1471 04c1254b Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-cyclades-app-backend.conf``:
1472 04c1254b Constantinos Venetsanopoulos
1473 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1474 bc055d09 Constantinos Venetsanopoulos
1475 04c1254b Constantinos Venetsanopoulos
   GANETI_MASTER_IP = "ganeti.node1.example.com"
1476 04c1254b Constantinos Venetsanopoulos
   GANETI_CLUSTER_INFO = (GANETI_MASTER_IP, 5080, "cyclades", "example_rapi_passw0rd")
1477 bc055d09 Constantinos Venetsanopoulos
1478 04c1254b Constantinos Venetsanopoulos
``GANETI_MASTER_IP`` denotes the Ganeti-master's floating IP. We provide the
1479 04c1254b Constantinos Venetsanopoulos
corresponding domain that resolves to that IP, than the IP itself, to ensure
1480 04c1254b Constantinos Venetsanopoulos
Cyclades can talk to Ganeti even after a Ganeti master-failover.
1481 bc055d09 Constantinos Venetsanopoulos
1482 04c1254b Constantinos Venetsanopoulos
``GANETI_CLUSTER_INFO`` is a tuple containing the ``GANETI_MASTER_IP``, the RAPI
1483 04c1254b Constantinos Venetsanopoulos
port, the RAPI user's username and the RAPI user's password. We set the above to
1484 04c1254b Constantinos Venetsanopoulos
reflect our :ref:`RAPI User setup <rapi-user>`.
1485 04c1254b Constantinos Venetsanopoulos
1486 04c1254b Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-cyclades-app-cloudbar.conf``:
1487 04c1254b Constantinos Venetsanopoulos
1488 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1489 04c1254b Constantinos Venetsanopoulos
1490 04c1254b Constantinos Venetsanopoulos
   CLOUDBAR_LOCATION = 'https://accounts.node1.example.com/static/im/cloudbar/'
1491 04c1254b Constantinos Venetsanopoulos
   CLOUDBAR_ACTIVE_SERVICE = 'cyclades'
1492 04c1254b Constantinos Venetsanopoulos
   CLOUDBAR_SERVICES_URL = 'https://accounts.node1.example.com/im/get_services'
1493 04c1254b Constantinos Venetsanopoulos
   CLOUDBAR_MENU_URL = 'https://account.node1.example.com/im/get_menu'
1494 04c1254b Constantinos Venetsanopoulos
1495 04c1254b Constantinos Venetsanopoulos
``CLOUDBAR_LOCATION`` tells the client where to find the Astakos common
1496 04c1254b Constantinos Venetsanopoulos
cloudbar. The ``CLOUDBAR_SERVICES_URL`` and ``CLOUDBAR_MENU_URL`` options are
1497 04c1254b Constantinos Venetsanopoulos
used by the Cyclades Web UI to get from Astakos all the information needed to
1498 04c1254b Constantinos Venetsanopoulos
fill its own cloudbar. So, we put our Astakos deployment urls there. All the
1499 04c1254b Constantinos Venetsanopoulos
above should have the same values we put in the corresponding variables in
1500 04c1254b Constantinos Venetsanopoulos
``/etc/synnefo/20-snf-pithos-webclient-cloudbar.conf`` on the previous
1501 04c1254b Constantinos Venetsanopoulos
:ref:`Pithos configuration <conf-pithos>` section.
1502 04c1254b Constantinos Venetsanopoulos
1503 04c1254b Constantinos Venetsanopoulos
The ``CLOUDBAR_ACTIVE_SERVICE`` registers Cyclades as a new service served by
1504 04c1254b Constantinos Venetsanopoulos
Astakos. It’s name should be identical with the id name given at the Astakos’
1505 04c1254b Constantinos Venetsanopoulos
``ASTAKOS_CLOUD_SERVICES`` variable. Note that at the Astakos :ref:`Conf Files
1506 04c1254b Constantinos Venetsanopoulos
<conf-astakos>` section, we actually set the second item of the
1507 04c1254b Constantinos Venetsanopoulos
``ASTAKOS_CLOUD_SERVICES`` list, to the dictionary: { 'url':'https://nod...',
1508 04c1254b Constantinos Venetsanopoulos
'name':'cyclades', 'id':'cyclades' }. This item represents the Cyclades service.
1509 04c1254b Constantinos Venetsanopoulos
The ``id`` we set there, is the ``id`` we want here.
1510 04c1254b Constantinos Venetsanopoulos
1511 04c1254b Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-cyclades-app-plankton.conf``:
1512 04c1254b Constantinos Venetsanopoulos
1513 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1514 04c1254b Constantinos Venetsanopoulos
1515 04c1254b Constantinos Venetsanopoulos
   BACKEND_DB_CONNECTION = 'postgresql://synnefo:example_passw0rd@node1.example.com:5432/snf_pithos'
1516 04c1254b Constantinos Venetsanopoulos
   BACKEND_BLOCK_PATH = '/srv/pithos/data/'
1517 04c1254b Constantinos Venetsanopoulos
1518 04c1254b Constantinos Venetsanopoulos
In this file we configure the Plankton Service. ``BACKEND_DB_CONNECTION``
1519 04c1254b Constantinos Venetsanopoulos
denotes the Pithos+ database (where the Image files are stored). So we set that
1520 04c1254b Constantinos Venetsanopoulos
to point to our Pithos+ database. ``BACKEND_BLOCK_PATH`` denotes the actual
1521 04c1254b Constantinos Venetsanopoulos
Pithos+ data location.
1522 04c1254b Constantinos Venetsanopoulos
1523 04c1254b Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-cyclades-app-queues.conf``:
1524 04c1254b Constantinos Venetsanopoulos
1525 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1526 04c1254b Constantinos Venetsanopoulos
1527 04c1254b Constantinos Venetsanopoulos
   RABBIT_HOST = "node1.example.com:5672"
1528 04c1254b Constantinos Venetsanopoulos
   RABBIT_USERNAME = "synnefo"
1529 04c1254b Constantinos Venetsanopoulos
   RABBIT_PASSWORD = "example_rabbitmq_passw0rd"
1530 04c1254b Constantinos Venetsanopoulos
1531 04c1254b Constantinos Venetsanopoulos
The above settings denote the Message Queue. Those settings should have the same
1532 04c1254b Constantinos Venetsanopoulos
values as in ``/etc/synnefo/10-snf-cyclades-gtools-backend.conf`` file, and
1533 04c1254b Constantinos Venetsanopoulos
reflect our :ref:`Message Queue setup <rabbitmq-setup>`.
1534 04c1254b Constantinos Venetsanopoulos
1535 04c1254b Constantinos Venetsanopoulos
Edit ``/etc/synnefo/20-snf-cyclades-app-ui.conf``:
1536 04c1254b Constantinos Venetsanopoulos
1537 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1538 04c1254b Constantinos Venetsanopoulos
1539 04c1254b Constantinos Venetsanopoulos
   UI_MEDIA_URL = '/static/ui/static/snf/'
1540 04c1254b Constantinos Venetsanopoulos
   UI_LOGIN_URL = "https://accounts.node1.example.com/im/login"
1541 04c1254b Constantinos Venetsanopoulos
   UI_LOGOUT_URL = "https://accounts.node1.example.com/im/logout"
1542 04c1254b Constantinos Venetsanopoulos
1543 04c1254b Constantinos Venetsanopoulos
``UI_MEDIA_URL`` denotes the location of the UI's static files.
1544 04c1254b Constantinos Venetsanopoulos
1545 04c1254b Constantinos Venetsanopoulos
The ``UI_LOGIN_URL`` option tells the Cyclades Web UI where to redirect users,
1546 04c1254b Constantinos Venetsanopoulos
if they are not logged in. We point that to Astakos.
1547 04c1254b Constantinos Venetsanopoulos
1548 04c1254b Constantinos Venetsanopoulos
The ``UI_LOGOUT_URL`` option tells the Cyclades Web UI where to redirect the
1549 04c1254b Constantinos Venetsanopoulos
user when he/she logs out. We point that to Astakos, too.
1550 04c1254b Constantinos Venetsanopoulos
1551 04c1254b Constantinos Venetsanopoulos
We have now finished with the basic Cyclades and Plankton configuration.
1552 04c1254b Constantinos Venetsanopoulos
1553 04c1254b Constantinos Venetsanopoulos
Database Initialization
1554 04c1254b Constantinos Venetsanopoulos
-----------------------
1555 04c1254b Constantinos Venetsanopoulos
1556 04c1254b Constantinos Venetsanopoulos
Once Cyclades is configured, we sync the database:
1557 bc055d09 Constantinos Venetsanopoulos
1558 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
1559 bc055d09 Constantinos Venetsanopoulos
1560 bc055d09 Constantinos Venetsanopoulos
   $ snf-manage syncdb
1561 bc055d09 Constantinos Venetsanopoulos
   $ snf-manage migrate
1562 bc055d09 Constantinos Venetsanopoulos
1563 04c1254b Constantinos Venetsanopoulos
and load the initial server flavors:
1564 bc055d09 Constantinos Venetsanopoulos
1565 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
1566 bc055d09 Constantinos Venetsanopoulos
1567 bc055d09 Constantinos Venetsanopoulos
   $ snf-manage loaddata flavors
1568 bc055d09 Constantinos Venetsanopoulos
1569 04c1254b Constantinos Venetsanopoulos
If everything returns successfully, our database is ready.
1570 04c1254b Constantinos Venetsanopoulos
1571 04c1254b Constantinos Venetsanopoulos
Servers restart
1572 04c1254b Constantinos Venetsanopoulos
---------------
1573 04c1254b Constantinos Venetsanopoulos
1574 04c1254b Constantinos Venetsanopoulos
We also need to restart gunicorn on node1:
1575 04c1254b Constantinos Venetsanopoulos
1576 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1577 bc055d09 Constantinos Venetsanopoulos
1578 04c1254b Constantinos Venetsanopoulos
   # /etc/init.d/gunicorn restart
1579 bc055d09 Constantinos Venetsanopoulos
1580 04c1254b Constantinos Venetsanopoulos
Now let's do the final connections of Cyclades with Ganeti.
1581 bc055d09 Constantinos Venetsanopoulos
1582 04c1254b Constantinos Venetsanopoulos
``snf-dispatcher`` initialization
1583 04c1254b Constantinos Venetsanopoulos
---------------------------------
1584 04c1254b Constantinos Venetsanopoulos
1585 04c1254b Constantinos Venetsanopoulos
``snf-dispatcher`` dispatches all messages published to the Message Queue and
1586 04c1254b Constantinos Venetsanopoulos
manages the Cyclades database accordingly. It also initializes all exchanges. By
1587 04c1254b Constantinos Venetsanopoulos
default it is not enabled during installation of Cyclades, so let's enable it in
1588 04c1254b Constantinos Venetsanopoulos
its configuration file ``/etc/default/snf-dispatcher``:
1589 04c1254b Constantinos Venetsanopoulos
1590 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1591 04c1254b Constantinos Venetsanopoulos
1592 04c1254b Constantinos Venetsanopoulos
   SNF_DSPTCH_ENABLE=true
1593 04c1254b Constantinos Venetsanopoulos
1594 04c1254b Constantinos Venetsanopoulos
and start the daemon:
1595 04c1254b Constantinos Venetsanopoulos
1596 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1597 04c1254b Constantinos Venetsanopoulos
1598 04c1254b Constantinos Venetsanopoulos
   # /etc/init.d/snf-dispatcher start
1599 04c1254b Constantinos Venetsanopoulos
1600 04c1254b Constantinos Venetsanopoulos
You can see that everything works correctly by tailing its log file
1601 04c1254b Constantinos Venetsanopoulos
``/var/log/synnefo/dispatcher.log``.
1602 04c1254b Constantinos Venetsanopoulos
1603 04c1254b Constantinos Venetsanopoulos
``snf-ganeti-eventd`` on GANETI MASTER
1604 04c1254b Constantinos Venetsanopoulos
--------------------------------------
1605 04c1254b Constantinos Venetsanopoulos
1606 04c1254b Constantinos Venetsanopoulos
The last step of the Cyclades setup is enabling the ``snf-ganeti-eventd``
1607 04c1254b Constantinos Venetsanopoulos
daemon (part of the :ref:`Cyclades Ganeti tools <cyclades-gtools>` package).
1608 04c1254b Constantinos Venetsanopoulos
The daemon is already installed on the GANETI MASTER (node1 in our case).
1609 04c1254b Constantinos Venetsanopoulos
``snf-ganeti-eventd`` is disabled by default during the ``snf-cyclades-gtools``
1610 04c1254b Constantinos Venetsanopoulos
installation, so we enable it in its configuration file
1611 04c1254b Constantinos Venetsanopoulos
``/etc/default/snf-ganeti-eventd``:
1612 04c1254b Constantinos Venetsanopoulos
1613 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1614 04c1254b Constantinos Venetsanopoulos
1615 04c1254b Constantinos Venetsanopoulos
   SNF_EVENTD_ENABLE=true
1616 04c1254b Constantinos Venetsanopoulos
1617 04c1254b Constantinos Venetsanopoulos
and start the daemon:
1618 04c1254b Constantinos Venetsanopoulos
1619 04c1254b Constantinos Venetsanopoulos
.. code-block:: console
1620 bc055d09 Constantinos Venetsanopoulos
1621 04c1254b Constantinos Venetsanopoulos
   # /etc/init.d/snf-ganeti-eventd start
1622 bc055d09 Constantinos Venetsanopoulos
1623 04c1254b Constantinos Venetsanopoulos
.. warning:: Make sure you start ``snf-ganeti-eventd`` *ONLY* on GANETI MASTER
1624 bc055d09 Constantinos Venetsanopoulos
1625 04c1254b Constantinos Venetsanopoulos
If all the above return successfully, then you have finished with the Cyclades
1626 04c1254b Constantinos Venetsanopoulos
and Plankton installation and setup. Let's test our installation now.
1627 bc055d09 Constantinos Venetsanopoulos
1628 5b6feb88 Vangelis Koukis
1629 a96ec00f Constantinos Venetsanopoulos
Testing of Cyclades (and Plankton)
1630 a96ec00f Constantinos Venetsanopoulos
==================================
1631 5b6feb88 Vangelis Koukis
1632 5b6feb88 Vangelis Koukis
1633 a96ec00f Constantinos Venetsanopoulos
General Testing
1634 a96ec00f Constantinos Venetsanopoulos
===============
1635 5b6feb88 Vangelis Koukis
1636 5b6feb88 Vangelis Koukis
1637 a96ec00f Constantinos Venetsanopoulos
Notes
1638 a96ec00f Constantinos Venetsanopoulos
=====