Statistics
| Branch: | Tag: | Revision:

root / docs / quick-install-admin-guide.rst @ ec9862dd

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