Statistics
| Branch: | Tag: | Revision:

root / docs / admin-guide.rst @ 08ad5b01

History | View | Annotate | Download (51.9 kB)

1 bc055d09 Constantinos Venetsanopoulos
.. _admin-guide:
2 bc055d09 Constantinos Venetsanopoulos
3 bc055d09 Constantinos Venetsanopoulos
Synnefo Administrator's Guide
4 bc055d09 Constantinos Venetsanopoulos
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
5 bc055d09 Constantinos Venetsanopoulos
6 bc055d09 Constantinos Venetsanopoulos
This is the complete Synnefo Administrator's Guide.
7 bc055d09 Constantinos Venetsanopoulos
8 bc055d09 Constantinos Venetsanopoulos
9 bc055d09 Constantinos Venetsanopoulos
10 eab73849 Constantinos Venetsanopoulos
General Synnefo Architecture
11 eab73849 Constantinos Venetsanopoulos
============================
12 eab73849 Constantinos Venetsanopoulos
13 eab73849 Constantinos Venetsanopoulos
The following graph shows the whole Synnefo architecture and how it interacts
14 eab73849 Constantinos Venetsanopoulos
with multiple Ganeti clusters. We hope that after reading the Administrator's
15 eab73849 Constantinos Venetsanopoulos
Guide you will be able to understand every component and all the interactions
16 eab73849 Constantinos Venetsanopoulos
between them. It is a good idea to first go through the Quick Administrator's
17 eab73849 Constantinos Venetsanopoulos
Guide before proceeding.
18 eab73849 Constantinos Venetsanopoulos
19 301294a9 Constantinos Venetsanopoulos
.. image:: images/synnefo-arch2.png
20 16539dad Kostas Papadimitriou
   :width: 100%
21 301294a9 Constantinos Venetsanopoulos
   :target: _images/synnefo-arch2.png
22 eab73849 Constantinos Venetsanopoulos
23 eab73849 Constantinos Venetsanopoulos
24 a1c707c9 Constantinos Venetsanopoulos
25 eab73849 Constantinos Venetsanopoulos
Identity Service (Astakos)
26 eab73849 Constantinos Venetsanopoulos
==========================
27 f846d8df Constantinos Venetsanopoulos
28 f846d8df Constantinos Venetsanopoulos
29 eab73849 Constantinos Venetsanopoulos
Overview
30 eab73849 Constantinos Venetsanopoulos
--------
31 eab73849 Constantinos Venetsanopoulos
32 eab73849 Constantinos Venetsanopoulos
Authentication methods
33 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~
34 eab73849 Constantinos Venetsanopoulos
35 eab73849 Constantinos Venetsanopoulos
Local Authentication
36 eab73849 Constantinos Venetsanopoulos
````````````````````
37 eab73849 Constantinos Venetsanopoulos
38 eab73849 Constantinos Venetsanopoulos
LDAP Authentication
39 eab73849 Constantinos Venetsanopoulos
```````````````````
40 eab73849 Constantinos Venetsanopoulos
41 eab73849 Constantinos Venetsanopoulos
.. _shibboleth-auth:
42 eab73849 Constantinos Venetsanopoulos
43 eab73849 Constantinos Venetsanopoulos
Shibboleth Authentication
44 eab73849 Constantinos Venetsanopoulos
`````````````````````````
45 eab73849 Constantinos Venetsanopoulos
46 eab73849 Constantinos Venetsanopoulos
Astakos can delegate user authentication to a Shibboleth federation.
47 eab73849 Constantinos Venetsanopoulos
48 eab73849 Constantinos Venetsanopoulos
To setup shibboleth, install package::
49 eab73849 Constantinos Venetsanopoulos
50 eab73849 Constantinos Venetsanopoulos
  apt-get install libapache2-mod-shib2
51 eab73849 Constantinos Venetsanopoulos
52 eab73849 Constantinos Venetsanopoulos
Change appropriately the configuration files in ``/etc/shibboleth``.
53 eab73849 Constantinos Venetsanopoulos
54 eab73849 Constantinos Venetsanopoulos
Add in ``/etc/apache2/sites-available/synnefo-ssl``::
55 eab73849 Constantinos Venetsanopoulos
56 eab73849 Constantinos Venetsanopoulos
  ShibConfig /etc/shibboleth/shibboleth2.xml
57 eab73849 Constantinos Venetsanopoulos
  Alias      /shibboleth-sp /usr/share/shibboleth
58 eab73849 Constantinos Venetsanopoulos
59 eab73849 Constantinos Venetsanopoulos
  <Location /im/login/shibboleth>
60 eab73849 Constantinos Venetsanopoulos
    AuthType shibboleth
61 eab73849 Constantinos Venetsanopoulos
    ShibRequireSession On
62 eab73849 Constantinos Venetsanopoulos
    ShibUseHeaders On
63 eab73849 Constantinos Venetsanopoulos
    require valid-user
64 eab73849 Constantinos Venetsanopoulos
  </Location>
65 eab73849 Constantinos Venetsanopoulos
66 eab73849 Constantinos Venetsanopoulos
and before the line containing::
67 eab73849 Constantinos Venetsanopoulos
68 eab73849 Constantinos Venetsanopoulos
  ProxyPass        / http://localhost:8080/ retry=0
69 eab73849 Constantinos Venetsanopoulos
70 eab73849 Constantinos Venetsanopoulos
add::
71 eab73849 Constantinos Venetsanopoulos
72 eab73849 Constantinos Venetsanopoulos
  ProxyPass /Shibboleth.sso !
73 f846d8df Constantinos Venetsanopoulos
74 eab73849 Constantinos Venetsanopoulos
Then, enable the shibboleth module::
75 eab73849 Constantinos Venetsanopoulos
76 eab73849 Constantinos Venetsanopoulos
  a2enmod shib2
77 f846d8df Constantinos Venetsanopoulos
78 eab73849 Constantinos Venetsanopoulos
After passing through the apache module, the following tokens should be
79 eab73849 Constantinos Venetsanopoulos
available at the destination::
80 eab73849 Constantinos Venetsanopoulos
81 eab73849 Constantinos Venetsanopoulos
  eppn # eduPersonPrincipalName
82 eab73849 Constantinos Venetsanopoulos
  Shib-InetOrgPerson-givenName
83 eab73849 Constantinos Venetsanopoulos
  Shib-Person-surname
84 eab73849 Constantinos Venetsanopoulos
  Shib-Person-commonName
85 eab73849 Constantinos Venetsanopoulos
  Shib-InetOrgPerson-displayName
86 eab73849 Constantinos Venetsanopoulos
  Shib-EP-Affiliation
87 eab73849 Constantinos Venetsanopoulos
  Shib-Session-ID
88 eab73849 Constantinos Venetsanopoulos
89 eab73849 Constantinos Venetsanopoulos
Finally, add 'shibboleth' in ``ASTAKOS_IM_MODULES`` list. The variable resides
90 eab73849 Constantinos Venetsanopoulos
inside the file ``/etc/synnefo/20-snf-astakos-app-settings.conf``
91 eab73849 Constantinos Venetsanopoulos
92 eab73849 Constantinos Venetsanopoulos
Architecture
93 eab73849 Constantinos Venetsanopoulos
------------
94 eab73849 Constantinos Venetsanopoulos
95 eab73849 Constantinos Venetsanopoulos
Prereqs
96 eab73849 Constantinos Venetsanopoulos
-------
97 eab73849 Constantinos Venetsanopoulos
98 eab73849 Constantinos Venetsanopoulos
Installation
99 eab73849 Constantinos Venetsanopoulos
------------
100 eab73849 Constantinos Venetsanopoulos
101 eab73849 Constantinos Venetsanopoulos
Configuration
102 eab73849 Constantinos Venetsanopoulos
-------------
103 eab73849 Constantinos Venetsanopoulos
104 eab73849 Constantinos Venetsanopoulos
Working with Astakos
105 eab73849 Constantinos Venetsanopoulos
--------------------
106 eab73849 Constantinos Venetsanopoulos
107 eab73849 Constantinos Venetsanopoulos
User activation methods
108 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~
109 f846d8df Constantinos Venetsanopoulos
110 f846d8df Constantinos Venetsanopoulos
When a new user signs up, he/she is not marked as active. You can see his/her
111 f846d8df Constantinos Venetsanopoulos
state by running (on the machine that runs the Astakos app):
112 f846d8df Constantinos Venetsanopoulos
113 f846d8df Constantinos Venetsanopoulos
.. code-block:: console
114 f846d8df Constantinos Venetsanopoulos
115 4404e02e Ilias Tsitsimpis
   $ snf-manage user-list
116 f846d8df Constantinos Venetsanopoulos
117 f846d8df Constantinos Venetsanopoulos
There are two different ways to activate a new user. Both need access to a
118 4404e02e Ilias Tsitsimpis
running :ref:`mail server <mail-server>`.
119 f846d8df Constantinos Venetsanopoulos
120 f846d8df Constantinos Venetsanopoulos
Manual activation
121 eab73849 Constantinos Venetsanopoulos
`````````````````
122 f846d8df Constantinos Venetsanopoulos
123 f846d8df Constantinos Venetsanopoulos
You can manually activate a new user that has already signed up, by sending
124 f846d8df Constantinos Venetsanopoulos
him/her an activation email. The email will contain an approriate activation
125 f846d8df Constantinos Venetsanopoulos
link, which will complete the activation process if followed. You can send the
126 f846d8df Constantinos Venetsanopoulos
email by running:
127 f846d8df Constantinos Venetsanopoulos
128 f846d8df Constantinos Venetsanopoulos
.. code-block:: console
129 f846d8df Constantinos Venetsanopoulos
130 4404e02e Ilias Tsitsimpis
   $ snf-manage user-activation-send <user ID or email>
131 f846d8df Constantinos Venetsanopoulos
132 eab73849 Constantinos Venetsanopoulos
Be sure to have already setup your mail server and defined it in your Synnefo
133 f846d8df Constantinos Venetsanopoulos
settings, before running the command.
134 f846d8df Constantinos Venetsanopoulos
135 f846d8df Constantinos Venetsanopoulos
Automatic activation
136 eab73849 Constantinos Venetsanopoulos
````````````````````
137 eab73849 Constantinos Venetsanopoulos
138 eab73849 Constantinos Venetsanopoulos
FIXME: Describe Regex activation method
139 eab73849 Constantinos Venetsanopoulos
140 2988ae31 Georgios D. Tsoukalas
Setting quota limits
141 2988ae31 Georgios D. Tsoukalas
~~~~~~~~~~~~~~~~~~~~
142 2988ae31 Georgios D. Tsoukalas
143 075b91de Giorgos Korfiatis
Set default quota
144 075b91de Giorgos Korfiatis
`````````````````
145 2988ae31 Georgios D. Tsoukalas
146 2988ae31 Georgios D. Tsoukalas
In 20-snf-astakos-app-settings.conf, 
147 2988ae31 Georgios D. Tsoukalas
uncomment the default setting ``ASTAKOS_SERVICES``
148 2988ae31 Georgios D. Tsoukalas
and customize the ``'uplimit'`` values.
149 075b91de Giorgos Korfiatis
These are the default base quota for all users.
150 2988ae31 Georgios D. Tsoukalas
151 2988ae31 Georgios D. Tsoukalas
To apply your configuration run::
152 2988ae31 Georgios D. Tsoukalas
153 2988ae31 Georgios D. Tsoukalas
    # snf-manage astakos-init --load-service-resources
154 075b91de Giorgos Korfiatis
    # snf-manage quota --sync
155 2988ae31 Georgios D. Tsoukalas
156 075b91de Giorgos Korfiatis
Set base quota for individual users
157 075b91de Giorgos Korfiatis
```````````````````````````````````
158 2988ae31 Georgios D. Tsoukalas
159 075b91de Giorgos Korfiatis
For individual users that need different quota than the default
160 2988ae31 Georgios D. Tsoukalas
you can set it for each resource like this::
161 2988ae31 Georgios D. Tsoukalas
162 075b91de Giorgos Korfiatis
    # use this to display quota / uuid
163 075b91de Giorgos Korfiatis
    # snf-manage user-show 'uuid or email' --quota
164 2988ae31 Georgios D. Tsoukalas
165 075b91de Giorgos Korfiatis
    # snf-manage user-modify 'user-uuid' --set-base-quota 'cyclades.vm' 10
166 2988ae31 Georgios D. Tsoukalas
167 2988ae31 Georgios D. Tsoukalas
168 2988ae31 Georgios D. Tsoukalas
Enable the Projects feature
169 2988ae31 Georgios D. Tsoukalas
~~~~~~~~~~~~~~~~~~~~~~~~~~~
170 2988ae31 Georgios D. Tsoukalas
171 2988ae31 Georgios D. Tsoukalas
If you want to enable the projects feature so that users may apply
172 2988ae31 Georgios D. Tsoukalas
on their own for resources by creating and joining projects,
173 2988ae31 Georgios D. Tsoukalas
in ``20-snf-astakos-app-settings.conf`` set::
174 2988ae31 Georgios D. Tsoukalas
175 2988ae31 Georgios D. Tsoukalas
    # this will make the 'projects' page visible in the dashboard
176 2988ae31 Georgios D. Tsoukalas
    ASTAKOS_PROJECTS_VISIBLE = True
177 2988ae31 Georgios D. Tsoukalas
178 9770ba6c Giorgos Korfiatis
You can change the maximum allowed number of pending project applications
179 9770ba6c Giorgos Korfiatis
per user with::
180 827de879 Giorgos Korfiatis
181 9770ba6c Giorgos Korfiatis
    # snf-manage resource-modify astakos.pending_app --limit <number>
182 9770ba6c Giorgos Korfiatis
183 9770ba6c Giorgos Korfiatis
You can also set a user-specific limit with::
184 9770ba6c Giorgos Korfiatis
185 075b91de Giorgos Korfiatis
    # snf-manage user-modify 'user-uuid' --set-base-quota 'astakos.pending_app' 5
186 827de879 Giorgos Korfiatis
187 2988ae31 Georgios D. Tsoukalas
When users apply for projects they are not automatically granted
188 2988ae31 Georgios D. Tsoukalas
the resources. They must first be approved by the administrator.
189 2988ae31 Georgios D. Tsoukalas
190 2988ae31 Georgios D. Tsoukalas
To list pending project applications in astakos::
191 2988ae31 Georgios D. Tsoukalas
192 2988ae31 Georgios D. Tsoukalas
    # snf-manage project-list --pending
193 2988ae31 Georgios D. Tsoukalas
194 2988ae31 Georgios D. Tsoukalas
Note the last column, the application id. To approve it::
195 2988ae31 Georgios D. Tsoukalas
196 2988ae31 Georgios D. Tsoukalas
    # <app id> from the last column of project-list
197 2988ae31 Georgios D. Tsoukalas
    # snf-manage project-control --approve <app id>
198 2988ae31 Georgios D. Tsoukalas
199 2988ae31 Georgios D. Tsoukalas
To deny an application::
200 2988ae31 Georgios D. Tsoukalas
201 2988ae31 Georgios D. Tsoukalas
    # snf-manage project-control --deny <app id>
202 2988ae31 Georgios D. Tsoukalas
203 827de879 Giorgos Korfiatis
Users designated as *project admins* can approve, deny, or modify
204 827de879 Giorgos Korfiatis
an application through the web interface. In
205 827de879 Giorgos Korfiatis
``20-snf-astakos-app-settings.conf`` set::
206 827de879 Giorgos Korfiatis
207 827de879 Giorgos Korfiatis
    # UUIDs of users that can approve or deny project applications from the web.
208 827de879 Giorgos Korfiatis
    ASTAKOS_PROJECT_ADMINS = [<uuid>, ...]
209 2988ae31 Georgios D. Tsoukalas
210 2988ae31 Georgios D. Tsoukalas
211 eab73849 Constantinos Venetsanopoulos
Astakos advanced operations
212 eab73849 Constantinos Venetsanopoulos
---------------------------
213 eab73849 Constantinos Venetsanopoulos
214 eab73849 Constantinos Venetsanopoulos
Adding "Terms of Use"
215 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~
216 eab73849 Constantinos Venetsanopoulos
217 eab73849 Constantinos Venetsanopoulos
Astakos supports versioned terms-of-use. First of all you need to create an
218 eab73849 Constantinos Venetsanopoulos
html file that will contain your terms. For example, create the file
219 eab73849 Constantinos Venetsanopoulos
``/usr/share/synnefo/sample-terms.html``, which contains the following:
220 eab73849 Constantinos Venetsanopoulos
221 eab73849 Constantinos Venetsanopoulos
.. code-block:: console
222 eab73849 Constantinos Venetsanopoulos
223 eab73849 Constantinos Venetsanopoulos
   <h1>~okeanos terms</h1>
224 eab73849 Constantinos Venetsanopoulos
225 eab73849 Constantinos Venetsanopoulos
   These are the example terms for ~okeanos
226 eab73849 Constantinos Venetsanopoulos
227 eab73849 Constantinos Venetsanopoulos
Then, add those terms-of-use with the snf-manage command:
228 eab73849 Constantinos Venetsanopoulos
229 eab73849 Constantinos Venetsanopoulos
.. code-block:: console
230 eab73849 Constantinos Venetsanopoulos
231 eab73849 Constantinos Venetsanopoulos
   $ snf-manage term-add /usr/share/synnefo/sample-terms.html
232 eab73849 Constantinos Venetsanopoulos
233 eab73849 Constantinos Venetsanopoulos
Your terms have been successfully added and you will see the corresponding link
234 eab73849 Constantinos Venetsanopoulos
appearing in the Astakos web pages' footer.
235 eab73849 Constantinos Venetsanopoulos
236 a23251f4 Constantinos Venetsanopoulos
Enabling reCAPTCHA
237 a23251f4 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~
238 a23251f4 Constantinos Venetsanopoulos
239 a23251f4 Constantinos Venetsanopoulos
Astakos supports the `reCAPTCHA <http://www.google.com/recaptcha>`_ feature.
240 a23251f4 Constantinos Venetsanopoulos
If enabled, it protects the Astakos forms from bots. To enable the feature, go
241 a23251f4 Constantinos Venetsanopoulos
to https://www.google.com/recaptcha/admin/create and create your own reCAPTCHA
242 a23251f4 Constantinos Venetsanopoulos
key pair. Then edit ``/etc/synnefo/20-snf-astakos-app-settings.conf`` and set
243 a23251f4 Constantinos Venetsanopoulos
the corresponding variables to reflect your newly created key pair. Finally, set
244 a23251f4 Constantinos Venetsanopoulos
the ``ASTAKOS_RECAPTCHA_ENABLED`` variable to ``True``:
245 a23251f4 Constantinos Venetsanopoulos
246 a23251f4 Constantinos Venetsanopoulos
.. code-block:: console
247 a23251f4 Constantinos Venetsanopoulos
248 a23251f4 Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_PUBLIC_KEY = 'example_recaptcha_public_key!@#$%^&*('
249 a23251f4 Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_PRIVATE_KEY = 'example_recaptcha_private_key!@#$%^&*('
250 a23251f4 Constantinos Venetsanopoulos
251 a23251f4 Constantinos Venetsanopoulos
   ASTAKOS_RECAPTCHA_ENABLED = True
252 a23251f4 Constantinos Venetsanopoulos
253 a23251f4 Constantinos Venetsanopoulos
Restart the service on the Astakos node(s) and you are ready:
254 a23251f4 Constantinos Venetsanopoulos
255 a23251f4 Constantinos Venetsanopoulos
.. code-block:: console
256 a23251f4 Constantinos Venetsanopoulos
257 a23251f4 Constantinos Venetsanopoulos
   # /etc/init.d/gunicorn restart
258 a23251f4 Constantinos Venetsanopoulos
259 a23251f4 Constantinos Venetsanopoulos
Checkout your new Sign up page. If you see the reCAPTCHA box, you have setup
260 a23251f4 Constantinos Venetsanopoulos
everything correctly.
261 a23251f4 Constantinos Venetsanopoulos
262 eab73849 Constantinos Venetsanopoulos
263 eab73849 Constantinos Venetsanopoulos
264 eab73849 Constantinos Venetsanopoulos
File Storage Service (Pithos)
265 eab73849 Constantinos Venetsanopoulos
=============================
266 eab73849 Constantinos Venetsanopoulos
267 eab73849 Constantinos Venetsanopoulos
Overview
268 eab73849 Constantinos Venetsanopoulos
--------
269 eab73849 Constantinos Venetsanopoulos
270 eab73849 Constantinos Venetsanopoulos
Architecture
271 eab73849 Constantinos Venetsanopoulos
------------
272 eab73849 Constantinos Venetsanopoulos
273 eab73849 Constantinos Venetsanopoulos
Prereqs
274 eab73849 Constantinos Venetsanopoulos
-------
275 eab73849 Constantinos Venetsanopoulos
276 eab73849 Constantinos Venetsanopoulos
Installation
277 eab73849 Constantinos Venetsanopoulos
------------
278 eab73849 Constantinos Venetsanopoulos
279 eab73849 Constantinos Venetsanopoulos
Configuration
280 eab73849 Constantinos Venetsanopoulos
-------------
281 eab73849 Constantinos Venetsanopoulos
282 eab73849 Constantinos Venetsanopoulos
Working with Pithos
283 eab73849 Constantinos Venetsanopoulos
-------------------
284 eab73849 Constantinos Venetsanopoulos
285 eab73849 Constantinos Venetsanopoulos
Pithos advanced operations
286 eab73849 Constantinos Venetsanopoulos
--------------------------
287 eab73849 Constantinos Venetsanopoulos
288 eab73849 Constantinos Venetsanopoulos
289 eab73849 Constantinos Venetsanopoulos
290 eab73849 Constantinos Venetsanopoulos
Compute/Network/Image Service (Cyclades)
291 eab73849 Constantinos Venetsanopoulos
========================================
292 eab73849 Constantinos Venetsanopoulos
293 eab73849 Constantinos Venetsanopoulos
Compute Overview
294 eab73849 Constantinos Venetsanopoulos
----------------
295 eab73849 Constantinos Venetsanopoulos
296 eab73849 Constantinos Venetsanopoulos
Network Overview
297 eab73849 Constantinos Venetsanopoulos
----------------
298 eab73849 Constantinos Venetsanopoulos
299 eab73849 Constantinos Venetsanopoulos
Image Overview
300 eab73849 Constantinos Venetsanopoulos
--------------
301 eab73849 Constantinos Venetsanopoulos
302 eab73849 Constantinos Venetsanopoulos
Architecture
303 eab73849 Constantinos Venetsanopoulos
------------
304 eab73849 Constantinos Venetsanopoulos
305 b9fd8ed3 Christos Stavrakakis
Asynchronous communication with Ganeti backends
306 90c74332 Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
307 a1c707c9 Constantinos Venetsanopoulos
Synnefo uses Google Ganeti backends for VM cluster management. In order for
308 a1c707c9 Constantinos Venetsanopoulos
Cyclades to be able to handle thousands of user requests, Cyclades and Ganeti
309 a1c707c9 Constantinos Venetsanopoulos
communicate asynchronously. Briefly, requests are submitted to Ganeti through
310 a1c707c9 Constantinos Venetsanopoulos
Ganeti's RAPI/HTTP interface, and then asynchronous notifications about the
311 a1c707c9 Constantinos Venetsanopoulos
progress of Ganeti jobs are being created and pushed upwards to Cyclades. The
312 a1c707c9 Constantinos Venetsanopoulos
architecture and communication with a Ganeti backend is shown in the graph
313 a1c707c9 Constantinos Venetsanopoulos
below:
314 9b659162 Christos Stavrakakis
315 9b659162 Christos Stavrakakis
.. image:: images/cyclades-ganeti-communication.png
316 9b659162 Christos Stavrakakis
   :width: 50%
317 9b659162 Christos Stavrakakis
   :target: _images/cyclades-ganeti-communication.png
318 b9fd8ed3 Christos Stavrakakis
319 a1c707c9 Constantinos Venetsanopoulos
The Cyclades API server is responsible for handling user requests. Read-only
320 b9fd8ed3 Christos Stavrakakis
requests are directly served by looking up the Cyclades DB. If the request
321 b9fd8ed3 Christos Stavrakakis
needs an action in the Ganeti backend, Cyclades submit jobs to the Ganeti
322 a1c707c9 Constantinos Venetsanopoulos
master using the `Ganeti RAPI interface
323 a1c707c9 Constantinos Venetsanopoulos
<http://docs.ganeti.org/ganeti/2.2/html/rapi.html>`_.
324 b9fd8ed3 Christos Stavrakakis
325 a1c707c9 Constantinos Venetsanopoulos
While Ganeti executes the job, `snf-ganeti-eventd`, `snf-ganeti-hook` and
326 a1c707c9 Constantinos Venetsanopoulos
`snf-progress-monitor` are monitoring the progress of the job and send
327 c84d78c8 Christos Stavrakakis
corresponding messages to the RabbitMQ servers. These components are part
328 a1c707c9 Constantinos Venetsanopoulos
of `snf-cyclades-gtools` and must be installed on all Ganeti nodes. Specially:
329 b9fd8ed3 Christos Stavrakakis
330 b9fd8ed3 Christos Stavrakakis
* *snf-ganeti-eventd* sends messages about operations affecting the operating
331 a1c707c9 Constantinos Venetsanopoulos
  state of instances and networks. Works by monitoring the Ganeti job queue.
332 a1c707c9 Constantinos Venetsanopoulos
* *snf-ganeti_hook* sends messages about the NICs of instances. It includes a
333 90c74332 Christos Stavrakakis
  number of `Ganeti hooks <http://docs.ganeti.org/ganeti/2.2/html/hooks.html>`_
334 90c74332 Christos Stavrakakis
  for customisation of operations.
335 a1c707c9 Constantinos Venetsanopoulos
* *snf-progress_monitor* sends messages about the progress of the Image deployment
336 a1c707c9 Constantinos Venetsanopoulos
  phase which is done by the Ganeti OS Definition `snf-image`.
337 b9fd8ed3 Christos Stavrakakis
338 a1c707c9 Constantinos Venetsanopoulos
Finally, `snf-dispatcher` consumes messages from the RabbitMQ queues, processes
339 a1c707c9 Constantinos Venetsanopoulos
these messages and properly updates the state of the Cyclades DB. Subsequent
340 a1c707c9 Constantinos Venetsanopoulos
requests to the Cyclades API, will retrieve the updated state from the DB.
341 b9fd8ed3 Christos Stavrakakis
342 b9fd8ed3 Christos Stavrakakis
343 eab73849 Constantinos Venetsanopoulos
Prereqs
344 eab73849 Constantinos Venetsanopoulos
-------
345 eab73849 Constantinos Venetsanopoulos
346 c84d78c8 Christos Stavrakakis
Work in progress. Please refer to :ref:`quick administrator quide <quick-install-admin-guide>`.
347 c84d78c8 Christos Stavrakakis
348 eab73849 Constantinos Venetsanopoulos
Installation
349 eab73849 Constantinos Venetsanopoulos
------------
350 eab73849 Constantinos Venetsanopoulos
351 c84d78c8 Christos Stavrakakis
Work in progress. Please refer to :ref:`quick administrator quide <quick-install-admin-guide>`.
352 c84d78c8 Christos Stavrakakis
353 eab73849 Constantinos Venetsanopoulos
Configuration
354 eab73849 Constantinos Venetsanopoulos
-------------
355 eab73849 Constantinos Venetsanopoulos
356 c84d78c8 Christos Stavrakakis
Work in progress. Please refer to :ref:`quick administrator quide <quick-install-admin-guide>`.
357 c84d78c8 Christos Stavrakakis
358 eab73849 Constantinos Venetsanopoulos
Working with Cyclades
359 eab73849 Constantinos Venetsanopoulos
---------------------
360 eab73849 Constantinos Venetsanopoulos
361 0768a1df Christos Stavrakakis
Managing Ganeti Backends
362 90c74332 Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~
363 0768a1df Christos Stavrakakis
364 a1c707c9 Constantinos Venetsanopoulos
Since v0.11, Synnefo is able to manage multiple Ganeti clusters (backends)
365 a1c707c9 Constantinos Venetsanopoulos
making it capable to scale linearly to tens of thousands of VMs. Backends
366 a1c707c9 Constantinos Venetsanopoulos
can be dynamically added or removed via `snf-manage` commands.
367 0768a1df Christos Stavrakakis
368 a1c707c9 Constantinos Venetsanopoulos
Each newly created VM is allocated to a Ganeti backend by the Cyclades backend
369 a1c707c9 Constantinos Venetsanopoulos
allocator. The VM is "pinned" to this backend, and can not change through its
370 a1c707c9 Constantinos Venetsanopoulos
lifetime. The backend allocator decides in which backend to spawn the VM based
371 a1c707c9 Constantinos Venetsanopoulos
on the available resources of each backend, trying to balance the load between
372 a1c707c9 Constantinos Venetsanopoulos
them.
373 0768a1df Christos Stavrakakis
374 0768a1df Christos Stavrakakis
Handling of Networks, as far as backends are concerned, is based on whether the
375 a1c707c9 Constantinos Venetsanopoulos
network is public or not. Public networks are created through the `snf-manage
376 a1c707c9 Constantinos Venetsanopoulos
network-create` command, and are only created on one backend. Private networks
377 a1c707c9 Constantinos Venetsanopoulos
are created on all backends, in order to ensure that VMs residing on different
378 a1c707c9 Constantinos Venetsanopoulos
backends can be connected to the same private network.
379 0768a1df Christos Stavrakakis
380 a1c707c9 Constantinos Venetsanopoulos
Listing existing backends
381 a1c707c9 Constantinos Venetsanopoulos
`````````````````````````
382 a1c707c9 Constantinos Venetsanopoulos
To list all the Ganeti backends known to Synnefo, we run:
383 90c74332 Christos Stavrakakis
384 0768a1df Christos Stavrakakis
.. code-block:: console
385 0768a1df Christos Stavrakakis
386 0768a1df Christos Stavrakakis
   $ snf-manage backend-list
387 0768a1df Christos Stavrakakis
388 0768a1df Christos Stavrakakis
Adding a new Ganeti backend
389 90c74332 Christos Stavrakakis
```````````````````````````
390 0768a1df Christos Stavrakakis
Backends are dynamically added under the control of Synnefo with `snf-manage
391 0768a1df Christos Stavrakakis
backend-add` command. In this section it is assumed that a Ganeti cluster,
392 a1c707c9 Constantinos Venetsanopoulos
named ``cluster.example.com`` is already up and running and configured to be
393 a1c707c9 Constantinos Venetsanopoulos
able to host Synnefo VMs.
394 0768a1df Christos Stavrakakis
395 a1c707c9 Constantinos Venetsanopoulos
To add this Ganeti cluster, we run:
396 90c74332 Christos Stavrakakis
397 0768a1df Christos Stavrakakis
.. code-block:: console
398 0768a1df Christos Stavrakakis
399 0768a1df Christos Stavrakakis
   $ snf-manage backend-add --clustername=cluster.example.com --user="synnefo_user" --pass="synnefo_pass"
400 0768a1df Christos Stavrakakis
401 46ccbcb9 Christos Stavrakakis
where ``clustername`` is the Cluster hostname of the Ganeti cluster, and
402 46ccbcb9 Christos Stavrakakis
``user`` and ``pass`` are the credentials for the `Ganeti RAPI user
403 46ccbcb9 Christos Stavrakakis
<http://docs.ganeti.org/ganeti/2.2/html/rapi.html#users-and-passwords>`_.  All
404 46ccbcb9 Christos Stavrakakis
backend attributes can be also changed dynamically using the `snf-manage
405 46ccbcb9 Christos Stavrakakis
backend-modify` command.
406 0768a1df Christos Stavrakakis
407 a1c707c9 Constantinos Venetsanopoulos
``snf-manage backend-add`` will also create all existing private networks to
408 a1c707c9 Constantinos Venetsanopoulos
the new backend. You can verify that the backend is added, by running
409 a1c707c9 Constantinos Venetsanopoulos
`snf-manage backend-list`.
410 0768a1df Christos Stavrakakis
411 a1c707c9 Constantinos Venetsanopoulos
Note that no VMs will be spawned to this backend, since by default it is in a
412 a1c707c9 Constantinos Venetsanopoulos
``drained`` state after addition and also it has no public network assigned to
413 a1c707c9 Constantinos Venetsanopoulos
it.
414 a1c707c9 Constantinos Venetsanopoulos
415 a1c707c9 Constantinos Venetsanopoulos
So, first you need to create its public network, make sure everything works as
416 a1c707c9 Constantinos Venetsanopoulos
expected and finally make it active by un-setting the ``drained`` flag. You can
417 a1c707c9 Constantinos Venetsanopoulos
do this by running:
418 a1c707c9 Constantinos Venetsanopoulos
419 a1c707c9 Constantinos Venetsanopoulos
.. code-block:: console
420 a1c707c9 Constantinos Venetsanopoulos
421 46ccbcb9 Christos Stavrakakis
   $ snf-manage backend-modify --drained=False <backend_id>
422 0768a1df Christos Stavrakakis
423 0768a1df Christos Stavrakakis
Removing an existing Ganeti backend
424 90c74332 Christos Stavrakakis
```````````````````````````````````
425 a1c707c9 Constantinos Venetsanopoulos
In order to remove an existing backend from Synnefo, we run:
426 90c74332 Christos Stavrakakis
427 0768a1df Christos Stavrakakis
.. code-block:: console
428 0768a1df Christos Stavrakakis
429 a1c707c9 Constantinos Venetsanopoulos
   # snf-manage backend-remove <backend_id>
430 0768a1df Christos Stavrakakis
431 a1c707c9 Constantinos Venetsanopoulos
This command will fail if there are active VMs on the backend. Also, the
432 a1c707c9 Constantinos Venetsanopoulos
backend is not cleaned before removal, so all the Synnefo private networks
433 a1c707c9 Constantinos Venetsanopoulos
will be left on the Ganeti nodes. You need to remove them manually.
434 0768a1df Christos Stavrakakis
435 a1c707c9 Constantinos Venetsanopoulos
Allocation of VMs in Ganeti backends
436 a1c707c9 Constantinos Venetsanopoulos
````````````````````````````````````
437 a1c707c9 Constantinos Venetsanopoulos
As already mentioned, the Cyclades backend allocator is responsible for
438 a1c707c9 Constantinos Venetsanopoulos
allocating new VMs to backends. This allocator does not choose the exact Ganeti
439 a1c707c9 Constantinos Venetsanopoulos
node that will host the VM but just the Ganeti backend. The exact node is
440 a1c707c9 Constantinos Venetsanopoulos
chosen by the Ganeti cluster's allocator (hail).
441 0768a1df Christos Stavrakakis
442 0768a1df Christos Stavrakakis
The decision about which backend will host a VM is based on the available
443 0768a1df Christos Stavrakakis
resources. The allocator computes a score for each backend, that shows its load
444 0768a1df Christos Stavrakakis
factor, and the one with the minimum score is chosen. The admin can exclude
445 a1c707c9 Constantinos Venetsanopoulos
backends from the allocation phase by marking them as ``drained`` by running:
446 90c74332 Christos Stavrakakis
447 0768a1df Christos Stavrakakis
.. code-block:: console
448 0768a1df Christos Stavrakakis
449 46ccbcb9 Christos Stavrakakis
   $ snf-manage backend-modify --drained=True <backend_id>
450 0768a1df Christos Stavrakakis
451 0768a1df Christos Stavrakakis
The backend resources are periodically updated, at a period defined by
452 a1c707c9 Constantinos Venetsanopoulos
the ``BACKEND_REFRESH_MIN`` setting, or by running `snf-manage backend-update-status`
453 0768a1df Christos Stavrakakis
command. It is advised to have a cron job running this command at a smaller
454 a1c707c9 Constantinos Venetsanopoulos
interval than ``BACKEND_REFRESH_MIN`` in order to remove the load of refreshing
455 0768a1df Christos Stavrakakis
the backends stats from the VM creation phase.
456 0768a1df Christos Stavrakakis
457 a1c707c9 Constantinos Venetsanopoulos
Finally, the admin can decide to have a user's VMs being allocated to a
458 a1c707c9 Constantinos Venetsanopoulos
specific backend, with the ``BACKEND_PER_USER`` setting. This is a mapping
459 a1c707c9 Constantinos Venetsanopoulos
between users and backends. If the user is found in ``BACKEND_PER_USER``, then
460 46ccbcb9 Christos Stavrakakis
Synnefo allocates all his/hers VMs to the specific backend in the variable,
461 46ccbcb9 Christos Stavrakakis
even if is marked as drained (useful for testing).
462 0768a1df Christos Stavrakakis
463 9492387a Christos Stavrakakis
464 9492387a Christos Stavrakakis
Managing Virtual Machines
465 9492387a Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~~
466 9492387a Christos Stavrakakis
467 a1c707c9 Constantinos Venetsanopoulos
As mentioned, Cyclades uses Ganeti for management of VMs. The administrator can
468 a1c707c9 Constantinos Venetsanopoulos
handle Cyclades VMs just like any other Ganeti instance, via `gnt-instance`
469 a1c707c9 Constantinos Venetsanopoulos
commands. All Ganeti instances that belong to Synnefo, are separated from
470 a1c707c9 Constantinos Venetsanopoulos
others, by a prefix in their names. This prefix is defined in
471 a1c707c9 Constantinos Venetsanopoulos
``BACKEND_PREFIX_ID`` setting in
472 a1c707c9 Constantinos Venetsanopoulos
``/etc/synnefo/20-snf-cyclades-app-backend.conf``.
473 9492387a Christos Stavrakakis
474 a1c707c9 Constantinos Venetsanopoulos
Apart from handling instances directly in the Ganeti level, a number of `snf-manage`
475 9492387a Christos Stavrakakis
commands are available:
476 9492387a Christos Stavrakakis
477 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-list``: List servers
478 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-show``: Show information about a server in the Cyclades DB
479 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-inspect``: Inspect the state of a server both in DB and Ganeti
480 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-modify``: Modify the state of a server in the Cycldes DB
481 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-create``: Create a new server
482 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage server-import``: Import an existing Ganeti instance to Cyclades
483 9492387a Christos Stavrakakis
484 9492387a Christos Stavrakakis
485 9492387a Christos Stavrakakis
Managing Virtual Networks
486 9492387a Christos Stavrakakis
~~~~~~~~~~~~~~~~~~~~~~~~~
487 9492387a Christos Stavrakakis
488 a1c707c9 Constantinos Venetsanopoulos
Cyclades is able to create and manage Virtual Networks. Networking is
489 a1c707c9 Constantinos Venetsanopoulos
desployment specific and must be customized based on the specific needs of the
490 a1c707c9 Constantinos Venetsanopoulos
system administrator. For better understanding of networking please refer to
491 a1c707c9 Constantinos Venetsanopoulos
the :ref:`Network <networks>` section.
492 a653c059 Christos Stavrakakis
493 a653c059 Christos Stavrakakis
Exactly as Cyclades VMs can be handled like Ganeti instances, Cyclades Networks
494 a653c059 Christos Stavrakakis
can also by handled as Ganeti networks, via `gnt-network commands`. All Ganeti
495 a1c707c9 Constantinos Venetsanopoulos
networks that belong to Synnefo are named with the prefix
496 a653c059 Christos Stavrakakis
`${BACKEND_PREFIX_ID}-net-`.
497 a653c059 Christos Stavrakakis
498 a1c707c9 Constantinos Venetsanopoulos
There are also the following `snf-manage` commands for managing networks:
499 a653c059 Christos Stavrakakis
500 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-list``: List networks
501 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-show``: Show information about a network in the Cyclades DB
502 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-inspect``: Inspect the state of the network in DB and Ganeti backends
503 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-modify``: Modify the state of a network in the Cycldes DB
504 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-create``: Create a new network
505 a1c707c9 Constantinos Venetsanopoulos
* ``snf-manage network-remove``: Remove an existing network
506 a653c059 Christos Stavrakakis
507 9c98c6fc Christos Stavrakakis
Managing Network Resources
508 a1c707c9 Constantinos Venetsanopoulos
``````````````````````````
509 9c98c6fc Christos Stavrakakis
510 a1c707c9 Constantinos Venetsanopoulos
Proper operation of the Cyclades Network Service depends on the unique
511 a1c707c9 Constantinos Venetsanopoulos
assignment of specific resources to each type of virtual network. Specifically,
512 a1c707c9 Constantinos Venetsanopoulos
these resources are:
513 9c98c6fc Christos Stavrakakis
514 a1c707c9 Constantinos Venetsanopoulos
* IP addresses. Cyclades creates a Pool of IPs for each Network, and assigns a
515 a1c707c9 Constantinos Venetsanopoulos
  unique IP address to each VM, thus connecting it to this Network. You can see
516 a1c707c9 Constantinos Venetsanopoulos
  the IP pool of each network by running `snf-manage network-inspect
517 a1c707c9 Constantinos Venetsanopoulos
  <network_ID>`. IP pools are automatically created and managed by Cyclades,
518 a1c707c9 Constantinos Venetsanopoulos
  depending on the subnet of the Network.
519 9492387a Christos Stavrakakis
* Bridges corresponding to physical VLANs, which are required for networks of
520 a1c707c9 Constantinos Venetsanopoulos
  type `PRIVATE_PHYSICAL_VLAN`.
521 a1c707c9 Constantinos Venetsanopoulos
* One Bridge corresponding to one physical VLAN which is required for networks of
522 a1c707c9 Constantinos Venetsanopoulos
  type `PRIVATE_MAC_PREFIX`.
523 9c98c6fc Christos Stavrakakis
524 a1c707c9 Constantinos Venetsanopoulos
Cyclades allocates those resources from pools that are created by the
525 a1c707c9 Constantinos Venetsanopoulos
administrator with the `snf-manage pool-create` management command.
526 9c98c6fc Christos Stavrakakis
527 a1c707c9 Constantinos Venetsanopoulos
Pool Creation
528 a1c707c9 Constantinos Venetsanopoulos
`````````````
529 a1c707c9 Constantinos Venetsanopoulos
Pools are created using the `snf-manage pool-create` command:
530 90c74332 Christos Stavrakakis
531 9c98c6fc Christos Stavrakakis
.. code-block:: console
532 9c98c6fc Christos Stavrakakis
533 9c98c6fc Christos Stavrakakis
   # snf-manage pool-create --type=bridge --base=prv --size=20
534 9c98c6fc Christos Stavrakakis
535 9c98c6fc Christos Stavrakakis
will create a pool of bridges, containing bridges prv1, prv2,..prv21.
536 9c98c6fc Christos Stavrakakis
537 9c98c6fc Christos Stavrakakis
You can verify the creation of the pool, and check its contents by running:
538 90c74332 Christos Stavrakakis
539 9c98c6fc Christos Stavrakakis
.. code-block:: console
540 9c98c6fc Christos Stavrakakis
541 9c98c6fc Christos Stavrakakis
   # snf-manage pool-list
542 9c98c6fc Christos Stavrakakis
   # snf-manage pool-show --type=bridge 1
543 9c98c6fc Christos Stavrakakis
544 a1c707c9 Constantinos Venetsanopoulos
With the same commands you can handle a pool of MAC prefixes. For example:
545 90c74332 Christos Stavrakakis
546 9c98c6fc Christos Stavrakakis
.. code-block:: console
547 9c98c6fc Christos Stavrakakis
548 9c98c6fc Christos Stavrakakis
   # snf-manage pool-create --type=mac-prefix --base=aa:00:0 --size=65536
549 9c98c6fc Christos Stavrakakis
550 a1c707c9 Constantinos Venetsanopoulos
will create a pool of MAC prefixes from ``aa:00:1`` to ``b9:ff:f``. The MAC
551 a1c707c9 Constantinos Venetsanopoulos
prefix pool is responsible for providing only unicast and locally administered
552 a1c707c9 Constantinos Venetsanopoulos
MAC addresses, so many of these prefixes will be externally reserved, to
553 a1c707c9 Constantinos Venetsanopoulos
exclude from allocation.
554 0768a1df Christos Stavrakakis
555 eab73849 Constantinos Venetsanopoulos
Cyclades advanced operations
556 eab73849 Constantinos Venetsanopoulos
----------------------------
557 eab73849 Constantinos Venetsanopoulos
558 eab73849 Constantinos Venetsanopoulos
Reconciliation mechanism
559 eab73849 Constantinos Venetsanopoulos
~~~~~~~~~~~~~~~~~~~~~~~~
560 a1c707c9 Constantinos Venetsanopoulos
561 06e23415 Christos Stavrakakis
On certain occasions, such as a Ganeti or RabbitMQ failure, the state of
562 06e23415 Christos Stavrakakis
Cyclades database may differ from the real state of VMs and networks in the
563 06e23415 Christos Stavrakakis
Ganeti backends. The reconciliation process is designed to synchronize
564 06e23415 Christos Stavrakakis
the state of the Cyclades DB with Ganeti. There are two management commands
565 06e23415 Christos Stavrakakis
for reconciling VMs and Networks
566 06e23415 Christos Stavrakakis
567 a1c707c9 Constantinos Venetsanopoulos
Reconciling Virtual Machines
568 a1c707c9 Constantinos Venetsanopoulos
````````````````````````````
569 a1c707c9 Constantinos Venetsanopoulos
570 06e23415 Christos Stavrakakis
Reconciliation of VMs detects the following conditions:
571 a1c707c9 Constantinos Venetsanopoulos
572 eab73849 Constantinos Venetsanopoulos
 * Stale DB servers without corresponding Ganeti instances
573 eab73849 Constantinos Venetsanopoulos
 * Orphan Ganeti instances, without corresponding DB entries
574 06e23415 Christos Stavrakakis
 * Out-of-sync state for DB entries wrt to Ganeti instances
575 eab73849 Constantinos Venetsanopoulos
576 06e23415 Christos Stavrakakis
To detect all inconsistencies you can just run:
577 90c74332 Christos Stavrakakis
578 eab73849 Constantinos Venetsanopoulos
.. code-block:: console
579 a1c707c9 Constantinos Venetsanopoulos
580 a1c707c9 Constantinos Venetsanopoulos
  $ snf-manage reconcile-servers
581 eab73849 Constantinos Venetsanopoulos
582 06e23415 Christos Stavrakakis
Adding the `--fix-all` option, will do the actual synchronization:
583 90c74332 Christos Stavrakakis
584 06e23415 Christos Stavrakakis
.. code-block:: console
585 a1c707c9 Constantinos Venetsanopoulos
586 a1c707c9 Constantinos Venetsanopoulos
  $ snf-manage reconcile --fix-all
587 eab73849 Constantinos Venetsanopoulos
588 eab73849 Constantinos Venetsanopoulos
Please see ``snf-manage reconcile --help`` for all the details.
589 eab73849 Constantinos Venetsanopoulos
590 eab73849 Constantinos Venetsanopoulos
591 06e23415 Christos Stavrakakis
Reconciling Networks
592 90c74332 Christos Stavrakakis
````````````````````
593 a1c707c9 Constantinos Venetsanopoulos
594 06e23415 Christos Stavrakakis
Reconciliation of Networks detects the following conditions:
595 a1c707c9 Constantinos Venetsanopoulos
596 06e23415 Christos Stavrakakis
  * Stale DB networks without corresponding Ganeti networks
597 06e23415 Christos Stavrakakis
  * Orphan Ganeti networks, without corresponding DB entries
598 06e23415 Christos Stavrakakis
  * Private networks that are not created to all Ganeti backends
599 06e23415 Christos Stavrakakis
  * Unsynchronized IP pools
600 06e23415 Christos Stavrakakis
601 06e23415 Christos Stavrakakis
To detect all inconsistencies you can just run:
602 90c74332 Christos Stavrakakis
603 06e23415 Christos Stavrakakis
.. code-block:: console
604 a1c707c9 Constantinos Venetsanopoulos
605 06e23415 Christos Stavrakakis
  $ snf-manage reconcile-networks
606 06e23415 Christos Stavrakakis
607 06e23415 Christos Stavrakakis
Adding the `--fix-all` option, will do the actual synchronization:
608 90c74332 Christos Stavrakakis
609 06e23415 Christos Stavrakakis
.. code-block:: console
610 a1c707c9 Constantinos Venetsanopoulos
611 06e23415 Christos Stavrakakis
  $ snf-manage reconcile-networks --fix-all
612 06e23415 Christos Stavrakakis
613 06e23415 Christos Stavrakakis
Please see ``snf-manage reconcile-networks --help`` for all the details.
614 eab73849 Constantinos Venetsanopoulos
615 eab73849 Constantinos Venetsanopoulos
616 a1c707c9 Constantinos Venetsanopoulos
617 eab73849 Constantinos Venetsanopoulos
Block Storage Service (Archipelago)
618 eab73849 Constantinos Venetsanopoulos
===================================
619 eab73849 Constantinos Venetsanopoulos
620 eab73849 Constantinos Venetsanopoulos
Overview
621 eab73849 Constantinos Venetsanopoulos
--------
622 5226b38f Filippos Giannakos
Archipelago offers Copy-On-Write snapshotable volumes. Pithos images can be used
623 5226b38f Filippos Giannakos
to provision a volume with Copy-On-Write semantics (i.e. a clone). Snapshots
624 5226b38f Filippos Giannakos
offer a unique deduplicated image of a volume, that reflects the volume state
625 5226b38f Filippos Giannakos
during snapshot creation and are indistinguishable from a Pithos image.
626 5226b38f Filippos Giannakos
627 5226b38f Filippos Giannakos
Archipelago is used by Cyclades and Ganeti for fast provisioning of VMs based on
628 4bb29566 Filippos Giannakos
CoW volumes. Moreover, it enables live migration of thinly-provisioned VMs with
629 4bb29566 Filippos Giannakos
no physically shared storage.
630 eab73849 Constantinos Venetsanopoulos
631 301294a9 Constantinos Venetsanopoulos
Archipelago Architecture
632 301294a9 Constantinos Venetsanopoulos
------------------------
633 301294a9 Constantinos Venetsanopoulos
634 e3f3abdc Filippos Giannakos
.. image:: images/archipelago-architecture.png
635 e3f3abdc Filippos Giannakos
   :width: 50%
636 e3f3abdc Filippos Giannakos
   :target: _images/archipelago-architecture.png
637 eab73849 Constantinos Venetsanopoulos
638 301294a9 Constantinos Venetsanopoulos
.. _syn+archip+rados:
639 301294a9 Constantinos Venetsanopoulos
640 301294a9 Constantinos Venetsanopoulos
Overview of Synnefo + Archipelago + RADOS
641 301294a9 Constantinos Venetsanopoulos
-----------------------------------------
642 301294a9 Constantinos Venetsanopoulos
643 301294a9 Constantinos Venetsanopoulos
.. image:: images/synnefo-arch3.png
644 301294a9 Constantinos Venetsanopoulos
   :width: 100%
645 301294a9 Constantinos Venetsanopoulos
   :target: _images/synnefo-arch3.png
646 301294a9 Constantinos Venetsanopoulos
647 eab73849 Constantinos Venetsanopoulos
Prereqs
648 eab73849 Constantinos Venetsanopoulos
-------
649 301294a9 Constantinos Venetsanopoulos
650 902d661c Filippos Giannakos
The administrator must initialize the storage backend where archipelago volume
651 902d661c Filippos Giannakos
blocks will reside.
652 902d661c Filippos Giannakos
653 902d661c Filippos Giannakos
In case of a files backend, the administrator must create two directories. One
654 902d661c Filippos Giannakos
for the archipelago data blocks and one for the archipelago map blocks. These
655 902d661c Filippos Giannakos
should probably be over shared storage to enable sharing archipelago volumes
656 902d661c Filippos Giannakos
between multiple nodes. He or she, must also be able to supply a directory where
657 902d661c Filippos Giannakos
the pithos data and map blocks reside.
658 902d661c Filippos Giannakos
659 902d661c Filippos Giannakos
In case of a RADOS backend, the administrator must create two rados pools, one
660 902d661c Filippos Giannakos
for data blocks, and one for the map blocks. These pools, must be the same pools
661 902d661c Filippos Giannakos
used in pithos, in order to enable volume creation based on pithos images.
662 902d661c Filippos Giannakos
663 eab73849 Constantinos Venetsanopoulos
Installation
664 eab73849 Constantinos Venetsanopoulos
------------
665 301294a9 Constantinos Venetsanopoulos
666 902d661c Filippos Giannakos
Archipelago consists of
667 902d661c Filippos Giannakos
668 902d661c Filippos Giannakos
* ``libxseg0``: libxseg used to communicate over shared memory segments
669 5226b38f Filippos Giannakos
* ``python-xseg``: python bindings for libxseg
670 902d661c Filippos Giannakos
* ``archipelago-kernel-dkms``: contains archipelago kernel modules to provide
671 902d661c Filippos Giannakos
  block devices to be used as vm disks
672 5226b38f Filippos Giannakos
* ``python-archipelago``: archipelago python module. Includes archipelago and
673 5226b38f Filippos Giannakos
  vlmc functionality.
674 902d661c Filippos Giannakos
* ``archipelago``: user space tools and peers for the archipelago management and
675 902d661c Filippos Giannakos
  volume composition
676 902d661c Filippos Giannakos
* ``archipelago-ganeti``: ganeti ext storage scripts, that enable ganeti to
677 902d661c Filippos Giannakos
  provision VMs over archipelago
678 902d661c Filippos Giannakos
679 902d661c Filippos Giannakos
Performing
680 902d661c Filippos Giannakos
681 902d661c Filippos Giannakos
.. code-block:: console
682 902d661c Filippos Giannakos
683 902d661c Filippos Giannakos
  $ apt-get install archipelago-ganeti 
684 902d661c Filippos Giannakos
685 902d661c Filippos Giannakos
should fetch all the required packages and get you up 'n going with archipelago
686 902d661c Filippos Giannakos
687 902d661c Filippos Giannakos
Bare in mind, that custom librados is required, which is provided in the apt
688 5226b38f Filippos Giannakos
repo of GRNet.
689 902d661c Filippos Giannakos
690 902d661c Filippos Giannakos
691 5226b38f Filippos Giannakos
For now, librados is a dependency of archipelago, even if you do not intend to
692 5226b38f Filippos Giannakos
use archipelago over RADOS.
693 eab73849 Constantinos Venetsanopoulos
694 eab73849 Constantinos Venetsanopoulos
Configuration
695 eab73849 Constantinos Venetsanopoulos
-------------
696 902d661c Filippos Giannakos
Archipelago should work out of the box with a RADOS backend, but basic
697 902d661c Filippos Giannakos
configuration can be done in ``/etc/default/archipelago`` .
698 902d661c Filippos Giannakos
699 902d661c Filippos Giannakos
If you wish to change the storage backend to files, set
700 902d661c Filippos Giannakos
701 902d661c Filippos Giannakos
.. code-block:: console
702 902d661c Filippos Giannakos
703 902d661c Filippos Giannakos
   STORAGE="files"
704 902d661c Filippos Giannakos
705 902d661c Filippos Giannakos
and provide the appropriate settings for files storage backend in the conf file.
706 902d661c Filippos Giannakos
707 902d661c Filippos Giannakos
These are:
708 902d661c Filippos Giannakos
709 902d661c Filippos Giannakos
* ``FILED_IMAGES``: directory for archipelago data blocks.
710 902d661c Filippos Giannakos
* ``FILED_MAPS``: directory for archipelago map blocks.
711 902d661c Filippos Giannakos
* ``PITHOS``: directory of pithos data blocks.
712 902d661c Filippos Giannakos
* ``PITHOSMAPS``: directory of pithos map blocks.
713 902d661c Filippos Giannakos
714 902d661c Filippos Giannakos
The settings for RADOS storage backend are:
715 902d661c Filippos Giannakos
716 902d661c Filippos Giannakos
* ``RADOS_POOL_MAPS``: The pool where archipelago and pithos map blocks reside.
717 902d661c Filippos Giannakos
* ``RADOS_POOL_BLOCKS``: The pool where archipelago and pithos data blocks
718 5226b38f Filippos Giannakos
  reside.
719 902d661c Filippos Giannakos
720 902d661c Filippos Giannakos
Examples can be found in the conf file.
721 902d661c Filippos Giannakos
722 902d661c Filippos Giannakos
Be aware that archipelago infrastructure doesn't provide default values for this
723 902d661c Filippos Giannakos
settings. If they are not set in the conf file, archipelago will not be able to
724 902d661c Filippos Giannakos
function.
725 902d661c Filippos Giannakos
726 902d661c Filippos Giannakos
Archipelago also provides ``VERBOSITY`` config options to control the output
727 902d661c Filippos Giannakos
generated by the userspace peers.
728 902d661c Filippos Giannakos
729 902d661c Filippos Giannakos
The available options are:
730 902d661c Filippos Giannakos
731 902d661c Filippos Giannakos
* ``VERBOSITY_BLOCKERB``
732 902d661c Filippos Giannakos
* ``VERBOSITY_BLOCKERM``
733 902d661c Filippos Giannakos
* ``VERBOSITY_MAPPER``
734 902d661c Filippos Giannakos
* ``VERBOSITY_VLMC``
735 902d661c Filippos Giannakos
736 902d661c Filippos Giannakos
and the available values are:
737 902d661c Filippos Giannakos
738 902d661c Filippos Giannakos
* 0 : Error only logging.
739 902d661c Filippos Giannakos
* 1 : Warning logging.
740 902d661c Filippos Giannakos
* 2 : Info logging.
741 902d661c Filippos Giannakos
* 3 : Debug logging. WARNING: This options produces tons of output, but the
742 902d661c Filippos Giannakos
  logrotate daemon should take care of it.
743 eab73849 Constantinos Venetsanopoulos
744 eab73849 Constantinos Venetsanopoulos
Working with Archipelago
745 eab73849 Constantinos Venetsanopoulos
------------------------
746 eab73849 Constantinos Venetsanopoulos
747 902d661c Filippos Giannakos
``archipelago`` provides basic functionality for archipelago.
748 5226b38f Filippos Giannakos
749 5226b38f Filippos Giannakos
Usage:
750 5226b38f Filippos Giannakos
751 5226b38f Filippos Giannakos
.. code-block:: console
752 5226b38f Filippos Giannakos
753 5226b38f Filippos Giannakos
  $ archipelago [-u] command
754 5226b38f Filippos Giannakos
755 5226b38f Filippos Giannakos
756 902d661c Filippos Giannakos
Currently it supports the following commands:
757 902d661c Filippos Giannakos
758 5226b38f Filippos Giannakos
* ``start [peer]``
759 5226b38f Filippos Giannakos
  Starts archipelago or the specified peer.
760 5226b38f Filippos Giannakos
* ``stop [peer]``
761 5226b38f Filippos Giannakos
  Stops archipelago or the specified peer.
762 5226b38f Filippos Giannakos
* ``restart [peer]``
763 5226b38f Filippos Giannakos
  Restarts archipelago or the specified peer.
764 902d661c Filippos Giannakos
* ``status``
765 5226b38f Filippos Giannakos
  Show the status of archipelago.
766 5226b38f Filippos Giannakos
767 5226b38f Filippos Giannakos
Available peers: ``blockerm``, ``blockerb``, ``mapperd``, ``vlmcd``.
768 5226b38f Filippos Giannakos
769 902d661c Filippos Giannakos
770 902d661c Filippos Giannakos
``start``, ``stop``, ``restart`` can be combined with the ``-u / --user`` option
771 902d661c Filippos Giannakos
to affect only the userspace peers supporting archipelago.
772 902d661c Filippos Giannakos
773 902d661c Filippos Giannakos
774 902d661c Filippos Giannakos
775 eab73849 Constantinos Venetsanopoulos
Archipelago advanced operations
776 eab73849 Constantinos Venetsanopoulos
-------------------------------
777 902d661c Filippos Giannakos
The ``vlmc`` tool provides a way to interact with archipelago volumes
778 902d661c Filippos Giannakos
779 902d661c Filippos Giannakos
* ``vlmc map <volumename>``: maps the volume to a xsegbd device.
780 6c900328 Filippos Giannakos
781 5226b38f Filippos Giannakos
* ``vlmc unmap </dev/xsegbd[1-..]>``: unmaps the specified device from the
782 902d661c Filippos Giannakos
  system.
783 6c900328 Filippos Giannakos
784 902d661c Filippos Giannakos
* ``vlmc create <volumename> --snap <snapname> --size <size>``: creates a new
785 902d661c Filippos Giannakos
  volume named <volumename> from snapshot name <snapname> with size <size>.
786 301294a9 Constantinos Venetsanopoulos
  The ``--snap`` and ``--size`` are optional, but at least one of them is
787 301294a9 Constantinos Venetsanopoulos
  mandatory. e.g:
788 902d661c Filippos Giannakos
789 301294a9 Constantinos Venetsanopoulos
  ``vlmc create <volumename> --snap <snapname>`` creates a volume named
790 301294a9 Constantinos Venetsanopoulos
  volumename from snapshot snapname. The size of the volume is the same as
791 301294a9 Constantinos Venetsanopoulos
  the size of the snapshot.
792 902d661c Filippos Giannakos
793 301294a9 Constantinos Venetsanopoulos
  ``vlmc create <volumename> --size <size>`` creates an empty volume of size
794 301294a9 Constantinos Venetsanopoulos
  <size> named <volumename>.
795 6c900328 Filippos Giannakos
796 902d661c Filippos Giannakos
* ``vlmc remove <volumename>``: removes the volume and all the related
797 902d661c Filippos Giannakos
  archipelago blocks from storage.
798 6c900328 Filippos Giannakos
799 902d661c Filippos Giannakos
* ``vlmc list``: provides a list of archipelago volumes. Currently only works
800 902d661c Filippos Giannakos
  with RADOS storage backend.
801 f846d8df Constantinos Venetsanopoulos
802 5226b38f Filippos Giannakos
* ``vlmc info <volumename>``: shows volume information. Currently returns only
803 5226b38f Filippos Giannakos
  volume size.
804 5226b38f Filippos Giannakos
805 6c900328 Filippos Giannakos
* ``vlmc open <volumename>``: opens an archipelago volume. That is, taking all
806 6c900328 Filippos Giannakos
  the necessary locks and also make the rest of the infrastructure aware of the
807 6c900328 Filippos Giannakos
  operation.
808 6c900328 Filippos Giannakos
809 6c900328 Filippos Giannakos
  This operation succeeds if the volume is alread opened.
810 6c900328 Filippos Giannakos
811 6c900328 Filippos Giannakos
* ``vlmc close <volumename>``: closes an archipelago volume. That is, performing
812 6c900328 Filippos Giannakos
  all the necessary functions in the insfrastrure to successfully release the
813 6c900328 Filippos Giannakos
  volume. Also releases all the acquired locks.
814 6c900328 Filippos Giannakos
815 6c900328 Filippos Giannakos
  ``vlmc close`` should be performed after a ``vlmc open`` operation.
816 6c900328 Filippos Giannakos
817 6c900328 Filippos Giannakos
* ``vlmc lock <volumename>``: locks a volume. This step allow the administrator
818 6c900328 Filippos Giannakos
  to lock an archipelago volume, independently from the rest of the
819 5226b38f Filippos Giannakos
  infrastrure.
820 6c900328 Filippos Giannakos
821 6c900328 Filippos Giannakos
* ``vlmc unlock [-f] <volumename>``: unlocks a volume. This allow the
822 6c900328 Filippos Giannakos
  administrator to unlock a volume, independently from the rest of the
823 6c900328 Filippos Giannakos
  infrastructure.
824 6c900328 Filippos Giannakos
  The unlock option can be performed only by the blocker that acquired the lock
825 6c900328 Filippos Giannakos
  in the first place. To unlock a volume from another blocker, ``-f`` option
826 6c900328 Filippos Giannakos
  must be used to break the lock.
827 6c900328 Filippos Giannakos
828 a1c707c9 Constantinos Venetsanopoulos
829 bc055d09 Constantinos Venetsanopoulos
The "kamaki" API client
830 eab73849 Constantinos Venetsanopoulos
=======================
831 bc055d09 Constantinos Venetsanopoulos
832 bc055d09 Constantinos Venetsanopoulos
To upload, register or modify an image you will need the **kamaki** tool.
833 bc055d09 Constantinos Venetsanopoulos
Before proceeding make sure that it is configured properly. Verify that
834 dd04efac Stavros Sachtouris
*image.url*, *file.url*, *user.url* and *token* are set as needed:
835 bc055d09 Constantinos Venetsanopoulos
836 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
837 bc055d09 Constantinos Venetsanopoulos
838 bc055d09 Constantinos Venetsanopoulos
   $ kamaki config list
839 bc055d09 Constantinos Venetsanopoulos
840 bc055d09 Constantinos Venetsanopoulos
To chage a setting use ``kamaki config set``:
841 bc055d09 Constantinos Venetsanopoulos
842 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
843 bc055d09 Constantinos Venetsanopoulos
844 dd04efac Stavros Sachtouris
   $ kamaki config set image.url https://cyclades.example.com/plankton
845 dd04efac Stavros Sachtouris
   $ kamaki config set file.url https://pithos.example.com/v1
846 dd04efac Stavros Sachtouris
   $ kamaki config set user.url https://accounts.example.com
847 bc055d09 Constantinos Venetsanopoulos
   $ kamaki config set token ...
848 bc055d09 Constantinos Venetsanopoulos
849 c0d88cf3 Constantinos Venetsanopoulos
To test that everything works, try authenticating the current account with
850 c0d88cf3 Constantinos Venetsanopoulos
kamaki:
851 dd04efac Stavros Sachtouris
852 dd04efac Stavros Sachtouris
.. code-block:: console
853 dd04efac Stavros Sachtouris
854 dd04efac Stavros Sachtouris
  $ kamaki user authenticate
855 dd04efac Stavros Sachtouris
856 c0d88cf3 Constantinos Venetsanopoulos
This will output user information.
857 dd04efac Stavros Sachtouris
858 bc055d09 Constantinos Venetsanopoulos
Upload Image
859 bc055d09 Constantinos Venetsanopoulos
------------
860 bc055d09 Constantinos Venetsanopoulos
861 c0d88cf3 Constantinos Venetsanopoulos
By convention, images are stored in a container called ``images``. Check if the
862 c0d88cf3 Constantinos Venetsanopoulos
container exists, by listing all containers in your account:
863 bc055d09 Constantinos Venetsanopoulos
864 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
865 bc055d09 Constantinos Venetsanopoulos
866 dd04efac Stavros Sachtouris
   $ kamaki file list
867 bc055d09 Constantinos Venetsanopoulos
868 dd04efac Stavros Sachtouris
If the container ``images`` does not exist, create it:
869 bc055d09 Constantinos Venetsanopoulos
870 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
871 bc055d09 Constantinos Venetsanopoulos
872 dd04efac Stavros Sachtouris
  $ kamaki file create images
873 bc055d09 Constantinos Venetsanopoulos
874 c0d88cf3 Constantinos Venetsanopoulos
You are now ready to upload an image to container ``images``. You can upload it
875 c0d88cf3 Constantinos Venetsanopoulos
with a Pithos+ client, or use kamaki directly:
876 bc055d09 Constantinos Venetsanopoulos
877 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
878 bc055d09 Constantinos Venetsanopoulos
879 dd04efac Stavros Sachtouris
   $ kamaki file upload ubuntu.iso images
880 bc055d09 Constantinos Venetsanopoulos
881 c0d88cf3 Constantinos Venetsanopoulos
You can use any Pithos+ client to verify that the image was uploaded correctly,
882 c0d88cf3 Constantinos Venetsanopoulos
or you can list the contents of the container with kamaki:
883 bc055d09 Constantinos Venetsanopoulos
884 dd04efac Stavros Sachtouris
.. code-block:: console
885 dd04efac Stavros Sachtouris
886 dd04efac Stavros Sachtouris
  $ kamaki file list images
887 bc055d09 Constantinos Venetsanopoulos
888 bc055d09 Constantinos Venetsanopoulos
The full Pithos URL for the previous example will be
889 c0d88cf3 Constantinos Venetsanopoulos
``pithos://u53r-un1qu3-1d/images/ubuntu.iso`` where ``u53r-un1qu3-1d`` is the
890 c0d88cf3 Constantinos Venetsanopoulos
unique user id (uuid).
891 bc055d09 Constantinos Venetsanopoulos
892 bc055d09 Constantinos Venetsanopoulos
Register Image
893 bc055d09 Constantinos Venetsanopoulos
--------------
894 bc055d09 Constantinos Venetsanopoulos
895 bc055d09 Constantinos Venetsanopoulos
To register an image you will need to use the full Pithos+ URL. To register as
896 bc055d09 Constantinos Venetsanopoulos
a public image the one from the previous example use:
897 bc055d09 Constantinos Venetsanopoulos
898 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
899 bc055d09 Constantinos Venetsanopoulos
900 dd04efac Stavros Sachtouris
   $ kamaki image register Ubuntu pithos://u53r-un1qu3-1d/images/ubuntu.iso --public
901 bc055d09 Constantinos Venetsanopoulos
902 bc055d09 Constantinos Venetsanopoulos
The ``--public`` flag is important, if missing the registered image will not
903 dd04efac Stavros Sachtouris
be listed by ``kamaki image list``.
904 bc055d09 Constantinos Venetsanopoulos
905 dd04efac Stavros Sachtouris
Use ``kamaki image register`` with no arguments to see a list of available
906 bc055d09 Constantinos Venetsanopoulos
options. A more complete example would be the following:
907 bc055d09 Constantinos Venetsanopoulos
908 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
909 bc055d09 Constantinos Venetsanopoulos
910 dd04efac Stavros Sachtouris
   $ kamaki image register Ubuntu pithos://u53r-un1qu3-1d/images/ubuntu.iso \
911 bc055d09 Constantinos Venetsanopoulos
            --public --disk-format diskdump --property kernel=3.1.2
912 bc055d09 Constantinos Venetsanopoulos
913 bc055d09 Constantinos Venetsanopoulos
To verify that the image was registered successfully use:
914 bc055d09 Constantinos Venetsanopoulos
915 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
916 bc055d09 Constantinos Venetsanopoulos
917 dd04efac Stavros Sachtouris
   $ kamaki image list --name-like=ubuntu
918 bc055d09 Constantinos Venetsanopoulos
919 eab73849 Constantinos Venetsanopoulos
920 eab73849 Constantinos Venetsanopoulos
Miscellaneous
921 eab73849 Constantinos Venetsanopoulos
=============
922 eab73849 Constantinos Venetsanopoulos
923 08ad5b01 Constantinos Venetsanopoulos
.. _branding:
924 9c2edbf1 Olga Brani
925 42e767d4 Olga Brani
Branding
926 08ad5b01 Constantinos Venetsanopoulos
--------
927 9c2edbf1 Olga Brani
928 08ad5b01 Constantinos Venetsanopoulos
Since Synnefo v0.14, you are able to adapt the Astakos, Pithos and Cyclades Web
929 08ad5b01 Constantinos Venetsanopoulos
UI to your company’s visual identity. This is possible using the snf-branding
930 08ad5b01 Constantinos Venetsanopoulos
component, which is automatically installed on the nodes running the API
931 08ad5b01 Constantinos Venetsanopoulos
servers for Astakos, Pithos and Cyclades. 
932 9c2edbf1 Olga Brani
933 9c2edbf1 Olga Brani
Configuration
934 9c2edbf1 Olga Brani
~~~~~~~~~~~~~
935 9c2edbf1 Olga Brani
936 08ad5b01 Constantinos Venetsanopoulos
This can be done by changing only the settings of the snf-branding component.
937 08ad5b01 Constantinos Venetsanopoulos
The settings for the snf-branding application can be found inside the
938 08ad5b01 Constantinos Venetsanopoulos
configuration file ``/etc/synnefo/15-snf-branding.conf`` on the nodes that have
939 08ad5b01 Constantinos Venetsanopoulos
Astakos, Pithos and Cyclades installed.
940 9c2edbf1 Olga Brani
941 08ad5b01 Constantinos Venetsanopoulos
By default, the global service name is "Synnefo" and the company name is
942 08ad5b01 Constantinos Venetsanopoulos
"GRNET". These names and their respective logos and URLs are used throughout
943 08ad5b01 Constantinos Venetsanopoulos
the Astakos, Pithos and Cyclades UI.
944 9c2edbf1 Olga Brani
945 08ad5b01 Constantinos Venetsanopoulos
**Names and URLs:**
946 9c2edbf1 Olga Brani
947 08ad5b01 Constantinos Venetsanopoulos
The first group of branding customization refers to the service's and company's
948 08ad5b01 Constantinos Venetsanopoulos
information.
949 9c2edbf1 Olga Brani
950 08ad5b01 Constantinos Venetsanopoulos
You can overwrite the company and the service name and URL respectively by
951 08ad5b01 Constantinos Venetsanopoulos
uncommenting and setting the following:
952 9c2edbf1 Olga Brani
953 9c2edbf1 Olga Brani
.. code-block:: console
954 9c2edbf1 Olga Brani
955 9c2edbf1 Olga Brani
  #BRANDING_SERVICE_NAME = 'Synnefo'
956 9c2edbf1 Olga Brani
  #BRANDING_SERVICE_URL = 'http://www.synnefo.org/'
957 9c2edbf1 Olga Brani
  #BRANDING_COMPANY_NAME = 'GRNET'
958 9c2edbf1 Olga Brani
  #BRANDING_COMPANY_URL = 'https://www.grnet.gr/en/'
959 9c2edbf1 Olga Brani
960 08ad5b01 Constantinos Venetsanopoulos
| ``BRANDING_SERVICE_NAME`` appears in Astakos Dashboard/Projects pages.
961 08ad5b01 Constantinos Venetsanopoulos
| ``BRANDING_COMPANY_NAME`` and ``BRANDING_COMPANY_URL`` appear in Astakos,
962 08ad5b01 Constantinos Venetsanopoulos
  Pithos and Cyclades footer only if ``BRANDING_SHOW_COPYRIGHT`` is set to True.
963 9c2edbf1 Olga Brani
964 9c2edbf1 Olga Brani
**Copyright options:**
965 9c2edbf1 Olga Brani
966 08ad5b01 Constantinos Venetsanopoulos
By default, no Copyright message is shown in the UI footer. If you want to make
967 08ad5b01 Constantinos Venetsanopoulos
it visible in the footer of Astakos, Pithos and Cyclades UI, you can uncomment
968 08ad5b01 Constantinos Venetsanopoulos
and set to ``True`` the setting:
969 9c2edbf1 Olga Brani
970 9c2edbf1 Olga Brani
.. code-block:: console
971 9c2edbf1 Olga Brani
972 9c2edbf1 Olga Brani
  #BRANDING_SHOW_COPYRIGHT = False
973 9c2edbf1 Olga Brani
974 42e767d4 Olga Brani
Copyright message defaults to 'Copyright (c) 2011-<current_year> 
975 08ad5b01 Constantinos Venetsanopoulos
<BRANDING_COMPANY_NAME>.' but you can overwrite it to a completely custom one by
976 08ad5b01 Constantinos Venetsanopoulos
setting the following option:
977 9c2edbf1 Olga Brani
978 9c2edbf1 Olga Brani
.. code-block:: console
979 9c2edbf1 Olga Brani
980 42e767d4 Olga Brani
  #BRANDING_COPYRIGHT_MESSAGE = 'Copyright (c) 2011-<current_year> GRNET'
981 9c2edbf1 Olga Brani
982 9c2edbf1 Olga Brani
**Images:**
983 9c2edbf1 Olga Brani
984 08ad5b01 Constantinos Venetsanopoulos
The Astakos, Pithos and Cyclades Web UI has some logos and images.
985 08ad5b01 Constantinos Venetsanopoulos
 
986 9c2edbf1 Olga Brani
The branding-related images are presented in  the following table:
987 9c2edbf1 Olga Brani
988 9c2edbf1 Olga Brani
===============  ============================  =========
989 9c2edbf1 Olga Brani
Image            Name/extension  convention    Usage
990 9c2edbf1 Olga Brani
===============  ============================  =========
991 9c2edbf1 Olga Brani
Favicon          favicon.ico                   Favicon for all services
992 9c2edbf1 Olga Brani
Dashboard logo   dashboard_logo.png            Visible in all Astakos UI pages
993 9c2edbf1 Olga Brani
Compute logo     compute_logo.png              Visible in all Cyclades UI pages
994 08ad5b01 Constantinos Venetsanopoulos
Console logo     console_logo.png              Visible in the Cyclades Console Window
995 08ad5b01 Constantinos Venetsanopoulos
Storage logo     storage_logo.png              Visible in all Pithos UI pages
996 9c2edbf1 Olga Brani
===============  ============================  =========
997 9c2edbf1 Olga Brani
998 08ad5b01 Constantinos Venetsanopoulos
There are two methods  available for replacing all, or individual, 
999 263cb456 Olga Brani
branding-related images:
1000 9c2edbf1 Olga Brani
1001 08ad5b01 Constantinos Venetsanopoulos
1. Create a new directory and  place there some or all of your images.
1002 9c2edbf1 Olga Brani
1003 08ad5b01 Constantinos Venetsanopoulos
   If you want to replace all of your images, keep the name/extension
1004 08ad5b01 Constantinos Venetsanopoulos
   conventions as indicated in the above table and set:
1005 9c2edbf1 Olga Brani
1006 9c2edbf1 Olga Brani
.. code-block:: console
1007 9c2edbf1 Olga Brani
1008 9c2edbf1 Olga Brani
  #BRANDING_IMAGE_MEDIA_URL= MEDIA_URL + 'branding/images/' 
1009 9c2edbf1 Olga Brani
1010 42e767d4 Olga Brani
to the relative path of your directory. 
1011 42e767d4 Olga Brani
You could also use an absolute path to a directory and set for example 
1012 08ad5b01 Constantinos Venetsanopoulos
``BRANDING_IMAGE_MEDIA_URL`` = 'https://www.synnefo.org/images/'
1013 9c2edbf1 Olga Brani
1014 08ad5b01 Constantinos Venetsanopoulos
   If you wish to replace individual images, **do not uncomment**
1015 08ad5b01 Constantinos Venetsanopoulos
   ``BRANDING_IMAGE_MEDIA_URL``, but instead provide a relative path, pointing to
1016 08ad5b01 Constantinos Venetsanopoulos
   the file inside your directory for each ``BRANDING_<image>_URL`` that you wish
1017 08ad5b01 Constantinos Venetsanopoulos
   to replace.
1018 9c2edbf1 Olga Brani
1019 263cb456 Olga Brani
2. Upload some or all of your images to a server and replace each 
1020 08ad5b01 Constantinos Venetsanopoulos
   ``BRANDING_<image>_URL`` with the absolute url of the image (i.e.
1021 08ad5b01 Constantinos Venetsanopoulos
   ``BRANDING_DASHBOARD_URL``= 'https://www.synnefo.com/images/my_dashboard.jpg').
1022 9c2edbf1 Olga Brani
1023 08ad5b01 Constantinos Venetsanopoulos
   Note that the alternative text  for each image tag inside html documents  is 
1024 08ad5b01 Constantinos Venetsanopoulos
   alt=“BRANDING_SERVICE_NAME {Dashboard, Compute. Console, Storage}” respectively.
1025 9c2edbf1 Olga Brani
1026 42e767d4 Olga Brani
.. note:: Retina optimized images:
1027 9c2edbf1 Olga Brani
1028 08ad5b01 Constantinos Venetsanopoulos
   Synnefo UI is optimized for Retina displays. As far as images are concerned,  
1029 08ad5b01 Constantinos Venetsanopoulos
   `retina.js <http://retinajs.com/>`_ is used.
1030 9c2edbf1 Olga Brani
1031 08ad5b01 Constantinos Venetsanopoulos
   Retina.js checks each image on a page to  see if there is a high-resolution 
1032 08ad5b01 Constantinos Venetsanopoulos
   version of that image on your server. If a high-resolution variant exists, 
1033 08ad5b01 Constantinos Venetsanopoulos
   the script will swap in that image in-place.
1034 9c2edbf1 Olga Brani
1035 08ad5b01 Constantinos Venetsanopoulos
   The script assumes you use  `Apple's prescribed high-resolution modifier (@2x)
1036 08ad5b01 Constantinos Venetsanopoulos
   <http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/
1037 08ad5b01 Constantinos Venetsanopoulos
   DrawingPrintingiOS/SupportingHiResScreensInViews/SupportingHiResScreensInViews
1038 08ad5b01 Constantinos Venetsanopoulos
   .html#//apple_ref/doc/uid/TP40010156-CH15-SW1>`_ to denote high-resolution 
1039 08ad5b01 Constantinos Venetsanopoulos
   image variants on your server.
1040 9c2edbf1 Olga Brani
1041 08ad5b01 Constantinos Venetsanopoulos
   For each of the images that you wish the script to  replace, you must have a 
1042 08ad5b01 Constantinos Venetsanopoulos
   high-resolution variant in the same folder  named correctly and it will be 
1043 08ad5b01 Constantinos Venetsanopoulos
   detected automatically. For example if your image is in <my_directory> and is 
1044 08ad5b01 Constantinos Venetsanopoulos
   named "my_image.jpg" the script will look in the same directory for an image 
1045 08ad5b01 Constantinos Venetsanopoulos
   named "my_image@2x.jpg".
1046 9c2edbf1 Olga Brani
1047 08ad5b01 Constantinos Venetsanopoulos
   In case that you don’t want to use a high-resolution image, the 
1048 08ad5b01 Constantinos Venetsanopoulos
   normal-resolution image will be visible.
1049 9c2edbf1 Olga Brani
1050 08ad5b01 Constantinos Venetsanopoulos
More branding
1051 08ad5b01 Constantinos Venetsanopoulos
~~~~~~~~~~~~~
1052 9c2edbf1 Olga Brani
1053 08ad5b01 Constantinos Venetsanopoulos
Although, it is not 100% branding-related, further verbal customization is
1054 08ad5b01 Constantinos Venetsanopoulos
feasible. 
1055 9c2edbf1 Olga Brani
1056 9c2edbf1 Olga Brani
**EMAILS**
1057 9c2edbf1 Olga Brani
1058 263cb456 Olga Brani
The output of all email *.txt files will be already customized to contain your 
1059 263cb456 Olga Brani
company and service names but you can further alter their content if you feel 
1060 017b7d20 Olga Brani
it best fits your needs  using django’s TEMPLATE_DIRS setting.    
1061 9c2edbf1 Olga Brani
1062 9c2edbf1 Olga Brani
For more information visit  
1063 017b7d20 Olga Brani
https://docs.djangoproject.com/en/1.2/ref/settings/#template-dirs.                           
1064 017b7d20 Olga Brani
1065 017b7d20 Olga Brani
In order to overwrite one or more email-templates you need to create a new one 
1066 017b7d20 Olga Brani
directory and  provide its path to the TEMPLATE_DIRS. Inside this directory, you
1067 017b7d20 Olga Brani
must place your <email-file>.txt files respecting the following structure:
1068 017b7d20 Olga Brani
  
1069 017b7d20 Olga Brani
  *<emails-dir>*/
1070 017b7d20 Olga Brani
      *im*/
1071 017b7d20 Olga Brani
          | activation_email.txt
1072 017b7d20 Olga Brani
          | email.txt
1073 017b7d20 Olga Brani
          | invitation.txt
1074 017b7d20 Olga Brani
          | switch_accounts_email.txt
1075 017b7d20 Olga Brani
          | welcome_email.txt
1076 017b7d20 Olga Brani
          *projects*/
1077 017b7d20 Olga Brani
              | project_approval_notification.txt
1078 017b7d20 Olga Brani
              | project_denial_notification.txt    
1079 017b7d20 Olga Brani
              | project_membership_change_notification.txt
1080 017b7d20 Olga Brani
              | project_membership_enroll_notification.txt
1081 017b7d20 Olga Brani
              | project_membership_leave_request_notification.txt
1082 017b7d20 Olga Brani
              | project_membership_request_notification.txt
1083 017b7d20 Olga Brani
              | project_suspension_notification.txt
1084 017b7d20 Olga Brani
              | project_termination_notification.txt
1085 017b7d20 Olga Brani
      *registration*/
1086 017b7d20 Olga Brani
          | email_change_email.txt
1087 017b7d20 Olga Brani
          | password_email.txt
1088 017b7d20 Olga Brani
1089 017b7d20 Olga Brani
Feel free to omit any of the above files you do not wish to overwrite.
1090 017b7d20 Olga Brani
1091 9c2edbf1 Olga Brani
Below is a list of all emails sent by Synnefo to users along with a short 
1092 9c2edbf1 Olga Brani
description and a link to their content:
1093 9c2edbf1 Olga Brani
1094 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/email.txt``
1095 08ad5b01 Constantinos Venetsanopoulos
  Base email template. Contains a contact email and a “thank you” message.
1096 08ad5b01 Constantinos Venetsanopoulos
  (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/email.txt>`_)
1097 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/activation_email.txt`` Email sent to
1098 08ad5b01 Constantinos Venetsanopoulos
  user that prompts  him/her to click on a link provided to activate the account.
1099 08ad5b01 Constantinos Venetsanopoulos
  Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/activation_email.txt>`_)
1100 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/invitation.txt`` Email sent to an
1101 08ad5b01 Constantinos Venetsanopoulos
  invited user. He/she has to click on a link provided to activate the account.
1102 08ad5b01 Constantinos Venetsanopoulos
  Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/invitation.txt>`_)
1103 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/switch_accounts_email.txt`` Email
1104 08ad5b01 Constantinos Venetsanopoulos
  sent to user upon his/her request to associate this email address with a
1105 08ad5b01 Constantinos Venetsanopoulos
  shibboleth account. He/she has to click on a link provided to activate the
1106 08ad5b01 Constantinos Venetsanopoulos
  association. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/switch_accounts_email.txt>`_)
1107 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/welcome_email.txt`` Email sent to
1108 08ad5b01 Constantinos Venetsanopoulos
  inform the user that his/ her account has been activated. Extends “email.txt”
1109 08ad5b01 Constantinos Venetsanopoulos
  (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/welcome_email.txt>`_)
1110 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/registration/email_change_email.txt``
1111 08ad5b01 Constantinos Venetsanopoulos
  Email sent to user when he/she has requested new email address assignment. The
1112 08ad5b01 Constantinos Venetsanopoulos
  user has to click on a link provided to validate this action. Extends
1113 08ad5b01 Constantinos Venetsanopoulos
  “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/registration/email_change_email.txt>`_)
1114 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/registration/password_email.txt`` Email
1115 08ad5b01 Constantinos Venetsanopoulos
  sent for resetting password purpose. The user has to click on a link provided
1116 08ad5b01 Constantinos Venetsanopoulos
  to validate this action. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/registration/password_email.txt>`_)
1117 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_approval_notification.txt``
1118 08ad5b01 Constantinos Venetsanopoulos
  Informs  the project owner that his/her project has been approved. Extends
1119 08ad5b01 Constantinos Venetsanopoulos
  “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_approval_notification.txt>`_)
1120 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_denial_notification.txt``
1121 08ad5b01 Constantinos Venetsanopoulos
  Informs the project owner that his/her  project application has been denied
1122 08ad5b01 Constantinos Venetsanopoulos
  explaining the reasons. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_denial_notification.txt>`_)
1123 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_membership_change_notification.txt``
1124 08ad5b01 Constantinos Venetsanopoulos
  An email is sent to a user containing information about his project membership
1125 08ad5b01 Constantinos Venetsanopoulos
  (whether he has been accepted, rejected or removed). Extends “email.txt” (`Link
1126 08ad5b01 Constantinos Venetsanopoulos
  <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_membership_change_notification.txt>`_)
1127 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_membership_enroll_notification.txt``
1128 08ad5b01 Constantinos Venetsanopoulos
  Informs a user that he/she  has been enrolled to a project. Extends
1129 08ad5b01 Constantinos Venetsanopoulos
  “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_membership_enroll_notification.txt>`_)
1130 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_membership_leave_request_notification.txt``
1131 08ad5b01 Constantinos Venetsanopoulos
  An email is sent to the project owner to make him aware of a  user having
1132 08ad5b01 Constantinos Venetsanopoulos
  requested to leave his project. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_membership_leave_request_notification.txt>`_)
1133 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_membership_request_notification.txt``
1134 08ad5b01 Constantinos Venetsanopoulos
  An email is sent to the project owner to make him/her aware of a user having
1135 08ad5b01 Constantinos Venetsanopoulos
  requested to join  his project. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_membership_request_notification.txt>`_)
1136 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_suspension_notification.txt``
1137 08ad5b01 Constantinos Venetsanopoulos
  An email is sent to the project owner to make him/her aware of his/her project
1138 08ad5b01 Constantinos Venetsanopoulos
  having been suspended. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_suspension_notification.txt>`_)
1139 08ad5b01 Constantinos Venetsanopoulos
* ``snf-astakos-app/astakos/im/templates/im/projects/project_termination_notification.txt``
1140 08ad5b01 Constantinos Venetsanopoulos
  An email is sent to the project owner to make him/her aware of his/her project
1141 08ad5b01 Constantinos Venetsanopoulos
  having been terminated. Extends “email.txt” (`Link <https://code.grnet.gr/projects/synnefo/repository/revisions/master/changes/snf-astakos-app/astakos/im/templates/im/projects/project_termination_notification.txt>`_)
1142 9c2edbf1 Olga Brani
1143 9c2edbf1 Olga Brani
.. warning:: Django templates language:
1144 9c2edbf1 Olga Brani
1145 9c2edbf1 Olga Brani
  If you choose to  overwrite these email templates, be mindful of the necessary 
1146 263cb456 Olga Brani
  information contained in django template variables that must not be omitted, 
1147 263cb456 Olga Brani
  such as the activation link for activating one’s account and many more. 
1148 263cb456 Olga Brani
  These variables are contained into {{}} inside the templates.
1149 9c2edbf1 Olga Brani
1150 9c2edbf1 Olga Brani
1151 9b659162 Christos Stavrakakis
.. RabbitMQ
1152 a1c707c9 Constantinos Venetsanopoulos
1153 9b659162 Christos Stavrakakis
RabbitMQ Broker
1154 9b659162 Christos Stavrakakis
---------------
1155 9b659162 Christos Stavrakakis
1156 9b659162 Christos Stavrakakis
Queue nodes run the RabbitMQ sofware, which provides AMQP functionality. To
1157 9b659162 Christos Stavrakakis
guarantee high-availability, more than one Queue nodes should be deployed, each
1158 9b659162 Christos Stavrakakis
of them belonging to the same `RabbitMQ cluster
1159 a1c707c9 Constantinos Venetsanopoulos
<http://www.rabbitmq.com/clustering.html>`_. Synnefo uses the RabbitMQ
1160 a1c707c9 Constantinos Venetsanopoulos
active/active `High Available Queues <http://www.rabbitmq.com/ha.html>`_ which
1161 a1c707c9 Constantinos Venetsanopoulos
are mirrored between two nodes within a RabbitMQ cluster.
1162 a1c707c9 Constantinos Venetsanopoulos
1163 a1c707c9 Constantinos Venetsanopoulos
The RabbitMQ nodes that form the cluster, are declared to Synnefo through the
1164 a1c707c9 Constantinos Venetsanopoulos
`AMQP_HOSTS` setting. Each time a Synnefo component needs to connect to
1165 a1c707c9 Constantinos Venetsanopoulos
RabbitMQ, one of these nodes is chosen in a random way. The client that Synnefo
1166 a1c707c9 Constantinos Venetsanopoulos
uses to connect to RabbitMQ, handles connection failures transparently and
1167 a1c707c9 Constantinos Venetsanopoulos
tries to reconnect to a different node. As long as one of these nodes are up
1168 a1c707c9 Constantinos Venetsanopoulos
and running, functionality of Synnefo should not be downgraded by the RabbitMQ
1169 a1c707c9 Constantinos Venetsanopoulos
node failures.
1170 9b659162 Christos Stavrakakis
1171 9b659162 Christos Stavrakakis
All the queues that are being used are declared as durable, meaning that
1172 a1c707c9 Constantinos Venetsanopoulos
messages are persistently stored to RabbitMQ, until they get successfully
1173 a1c707c9 Constantinos Venetsanopoulos
processed by a client.
1174 9b659162 Christos Stavrakakis
1175 9b659162 Christos Stavrakakis
Currently, RabbitMQ is used by the following components:
1176 9b659162 Christos Stavrakakis
1177 a1c707c9 Constantinos Venetsanopoulos
* `snf-ganeti-eventd`, `snf-ganeti-hook` and `snf-progress-monitor`:
1178 9b659162 Christos Stavrakakis
  These components send messages concerning the status and progress of
1179 9b659162 Christos Stavrakakis
  jobs in the Ganeti backend.
1180 a1c707c9 Constantinos Venetsanopoulos
* `snf-dispatcher`: This daemon, consumes the messages that are sent from
1181 a1c707c9 Constantinos Venetsanopoulos
  the above components, and updates the Cyclades DB accordingly.
1182 9b659162 Christos Stavrakakis
1183 e4404297 Christos Stavrakakis
1184 9b659162 Christos Stavrakakis
Installation
1185 301294a9 Constantinos Venetsanopoulos
~~~~~~~~~~~~
1186 301294a9 Constantinos Venetsanopoulos
1187 a1c707c9 Constantinos Venetsanopoulos
Please check the RabbitMQ documentation which covers extensively the
1188 a1c707c9 Constantinos Venetsanopoulos
`installation of RabbitMQ server <http://www.rabbitmq.com/download.html>`_ and
1189 a1c707c9 Constantinos Venetsanopoulos
the setup of a `RabbitMQ cluster <http://www.rabbitmq.com/clustering.html>`_.
1190 a1c707c9 Constantinos Venetsanopoulos
Also, check out the `web management plugin
1191 a1c707c9 Constantinos Venetsanopoulos
<http://www.rabbitmq.com/management.html>`_ that can be useful for managing and
1192 a1c707c9 Constantinos Venetsanopoulos
monitoring RabbitMQ.
1193 9b659162 Christos Stavrakakis
1194 9b659162 Christos Stavrakakis
For a basic installation of RabbitMQ on two nodes (node1 and node2) you can do
1195 a1c707c9 Constantinos Venetsanopoulos
the following:
1196 9b659162 Christos Stavrakakis
1197 a1c707c9 Constantinos Venetsanopoulos
On both nodes, install rabbitmq-server and create a Synnefo user:
1198 9b659162 Christos Stavrakakis
1199 9b659162 Christos Stavrakakis
.. code-block:: console
1200 9b659162 Christos Stavrakakis
1201 9b659162 Christos Stavrakakis
  $ apt-get install rabbitmq-server
1202 9b659162 Christos Stavrakakis
  $ rabbitmqctl add_user synnefo "example_pass"
1203 9b659162 Christos Stavrakakis
  $ rabbitmqctl set_permissions synnefo  ".*" ".*" ".*"
1204 9b659162 Christos Stavrakakis
1205 a1c707c9 Constantinos Venetsanopoulos
Also guarantee that both nodes share the same cookie, by running:
1206 9b659162 Christos Stavrakakis
1207 9b659162 Christos Stavrakakis
.. code-block:: console
1208 9b659162 Christos Stavrakakis
1209 9b659162 Christos Stavrakakis
  $ scp node1:/var/lib/rabbitmq/.erlang.cookie node2:/var/lib/rabbitmq/.erlang.cookie
1210 9b659162 Christos Stavrakakis
1211 9b659162 Christos Stavrakakis
and restart the nodes:
1212 9b659162 Christos Stavrakakis
1213 9b659162 Christos Stavrakakis
.. code-block:: console
1214 9b659162 Christos Stavrakakis
1215 9b659162 Christos Stavrakakis
  $ /etc/init.d/rabbitmq-server restart
1216 9b659162 Christos Stavrakakis
1217 9b659162 Christos Stavrakakis
1218 9b659162 Christos Stavrakakis
To setup the RabbitMQ cluster run:
1219 9b659162 Christos Stavrakakis
1220 9b659162 Christos Stavrakakis
.. code-block:: console
1221 9b659162 Christos Stavrakakis
1222 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl stop_app
1223 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl reset
1224 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl cluster rabbit@node1 rabbit@node2
1225 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl start_app
1226 9b659162 Christos Stavrakakis
1227 9b659162 Christos Stavrakakis
You can verify that the cluster is set up correctly by running:
1228 9b659162 Christos Stavrakakis
1229 9b659162 Christos Stavrakakis
.. code-block:: console
1230 9b659162 Christos Stavrakakis
1231 9b659162 Christos Stavrakakis
  root@node2: rabbitmqctl cluster_status
1232 9b659162 Christos Stavrakakis
1233 9b659162 Christos Stavrakakis
1234 9b659162 Christos Stavrakakis
1235 9b659162 Christos Stavrakakis
1236 9b659162 Christos Stavrakakis
1237 bc055d09 Constantinos Venetsanopoulos
Admin tool: snf-manage
1238 bc055d09 Constantinos Venetsanopoulos
----------------------
1239 bc055d09 Constantinos Venetsanopoulos
1240 bc055d09 Constantinos Venetsanopoulos
``snf-manage`` is a tool used to perform various administrative tasks. It needs
1241 bc055d09 Constantinos Venetsanopoulos
to be able to access the django database, so the following should be able to
1242 bc055d09 Constantinos Venetsanopoulos
import the Django settings.
1243 bc055d09 Constantinos Venetsanopoulos
1244 bc055d09 Constantinos Venetsanopoulos
Additionally, administrative tasks can be performed via the admin web interface
1245 e18edd26 Constantinos Venetsanopoulos
located in /admin. Only users of type ADMIN can access the admin pages. To
1246 998f872c Christos Stavrakakis
change the type of a user to ADMIN, snf-manage can be used:
1247 bc055d09 Constantinos Venetsanopoulos
1248 bc055d09 Constantinos Venetsanopoulos
.. code-block:: console
1249 bc055d09 Constantinos Venetsanopoulos
1250 7a3439cf Constantinos Venetsanopoulos
   $ snf-manage user-modify 42 --type ADMIN
1251 bc055d09 Constantinos Venetsanopoulos
1252 bc055d09 Constantinos Venetsanopoulos
Logging
1253 bc055d09 Constantinos Venetsanopoulos
-------
1254 bc055d09 Constantinos Venetsanopoulos
1255 bc055d09 Constantinos Venetsanopoulos
Logging in Synnefo is using Python's logging module. The module is configured
1256 bc055d09 Constantinos Venetsanopoulos
using dictionary configuration, whose format is described here:
1257 bc055d09 Constantinos Venetsanopoulos
1258 bc055d09 Constantinos Venetsanopoulos
http://docs.python.org/release/2.7.1/library/logging.html#logging-config-dictschema
1259 bc055d09 Constantinos Venetsanopoulos
1260 bc055d09 Constantinos Venetsanopoulos
Note that this is a feature of Python 2.7 that we have backported for use in
1261 bc055d09 Constantinos Venetsanopoulos
Python 2.6.
1262 bc055d09 Constantinos Venetsanopoulos
1263 4be65f1f Christos Stavrakakis
The logging configuration dictionary is defined in
1264 a1c707c9 Constantinos Venetsanopoulos
``/etc/synnefo/10-snf-webproject-logging.conf``
1265 bc055d09 Constantinos Venetsanopoulos
1266 a1c707c9 Constantinos Venetsanopoulos
The administrator can have finer logging control by modifying the
1267 a1c707c9 Constantinos Venetsanopoulos
``LOGGING_SETUP`` dictionary, and defining subloggers with different handlers
1268 a1c707c9 Constantinos Venetsanopoulos
and log levels.  e.g. To enable debug messages only for the API set the level
1269 a1c707c9 Constantinos Venetsanopoulos
of 'synnefo.api' to ``DEBUG``
1270 4be65f1f Christos Stavrakakis
1271 a1c707c9 Constantinos Venetsanopoulos
By default, the Django webapp and snf-manage logs to syslog, while
1272 a1c707c9 Constantinos Venetsanopoulos
`snf-dispatcher` logs to `/var/log/synnefo/dispatcher.log`.
1273 bc055d09 Constantinos Venetsanopoulos
1274 d189d11c Constantinos Venetsanopoulos
1275 21d3d487 Constantinos Venetsanopoulos
.. _scale-up:
1276 21d3d487 Constantinos Venetsanopoulos
1277 bc055d09 Constantinos Venetsanopoulos
Scaling up to multiple nodes
1278 bc055d09 Constantinos Venetsanopoulos
============================
1279 bc055d09 Constantinos Venetsanopoulos
1280 301294a9 Constantinos Venetsanopoulos
Here we will describe how should a large scale Synnefo deployment look like. Make
1281 301294a9 Constantinos Venetsanopoulos
sure you are familiar with Synnefo and Ganeti before proceeding with this section.
1282 301294a9 Constantinos Venetsanopoulos
This means you should at least have already set up successfully a working Synnefo
1283 301294a9 Constantinos Venetsanopoulos
deployment as described in the :ref:`Admin's Quick Installation Guide
1284 301294a9 Constantinos Venetsanopoulos
<quick-install-admin-guide>` and also read the Administrator's Guide until this
1285 301294a9 Constantinos Venetsanopoulos
section.
1286 2f6143c9 Constantinos Venetsanopoulos
1287 301294a9 Constantinos Venetsanopoulos
Graph of a scale-out Synnefo deployment
1288 301294a9 Constantinos Venetsanopoulos
---------------------------------------
1289 2f6143c9 Constantinos Venetsanopoulos
1290 301294a9 Constantinos Venetsanopoulos
Each box in the following graph corresponds to a distinct physical node:
1291 2f6143c9 Constantinos Venetsanopoulos
1292 301294a9 Constantinos Venetsanopoulos
.. image:: images/synnefo-arch2-roles.png
1293 301294a9 Constantinos Venetsanopoulos
   :width: 100%
1294 301294a9 Constantinos Venetsanopoulos
   :target: _images/synnefo-arch2-roles.png
1295 301294a9 Constantinos Venetsanopoulos
1296 301294a9 Constantinos Venetsanopoulos
The above graph is actually the same with the one at the beginning of this
1297 301294a9 Constantinos Venetsanopoulos
:ref:`guide <admin-guide>`, with the only difference that here we show the
1298 301294a9 Constantinos Venetsanopoulos
Synnefo roles of each physical node. These roles are described in the
1299 301294a9 Constantinos Venetsanopoulos
following section.
1300 301294a9 Constantinos Venetsanopoulos
1301 21d3d487 Constantinos Venetsanopoulos
.. _physical-node-roles:
1302 21d3d487 Constantinos Venetsanopoulos
1303 301294a9 Constantinos Venetsanopoulos
Physical Node roles
1304 301294a9 Constantinos Venetsanopoulos
-------------------
1305 301294a9 Constantinos Venetsanopoulos
1306 301294a9 Constantinos Venetsanopoulos
As appears in the previous graph, a scale-out Synnefo deployment consists of
1307 301294a9 Constantinos Venetsanopoulos
multiple physical nodes that have the following roles:
1308 301294a9 Constantinos Venetsanopoulos
1309 301294a9 Constantinos Venetsanopoulos
* **WEBSERVER**: A web server running in front of gunicorn (e.g.: Apache, nginx)
1310 301294a9 Constantinos Venetsanopoulos
* **ASTAKOS**: The Astakos application (gunicorn)
1311 301294a9 Constantinos Venetsanopoulos
* **ASTAKOS_DB**: The Astakos database (postgresql)
1312 301294a9 Constantinos Venetsanopoulos
* **PITHOS**: The Pithos application (gunicorn)
1313 301294a9 Constantinos Venetsanopoulos
* **PITHOS_DB**: The Pithos database (postgresql)
1314 301294a9 Constantinos Venetsanopoulos
* **CYCLADES**: The Cyclades application (gunicorn)
1315 301294a9 Constantinos Venetsanopoulos
* **CYCLADES_DB**: The Cyclades database (postgresql)
1316 301294a9 Constantinos Venetsanopoulos
* **MQ**: The message queue (RabbitMQ)
1317 301294a9 Constantinos Venetsanopoulos
* **GANETI_MASTER**: The Ganeti master of a Ganeti cluster
1318 301294a9 Constantinos Venetsanopoulos
* **GANETI_NODE** : A VM-capable Ganeti node of a Ganeti cluster
1319 2f6143c9 Constantinos Venetsanopoulos
1320 301294a9 Constantinos Venetsanopoulos
You will probably also have:
1321 2f6143c9 Constantinos Venetsanopoulos
1322 301294a9 Constantinos Venetsanopoulos
* **CMS**: The CMS used as a frotend portal for the Synnefo services
1323 21d3d487 Constantinos Venetsanopoulos
* **NS**: A nameserver serving all other Synnefo nodes and resolving Synnefo FQDNs
1324 301294a9 Constantinos Venetsanopoulos
* **CLIENT**: A machine that runs the Synnefo clients (e.g.: kamaki, Web UI),
1325 301294a9 Constantinos Venetsanopoulos
              most of the times, the end user's local machine
1326 301294a9 Constantinos Venetsanopoulos
1327 301294a9 Constantinos Venetsanopoulos
From this point we will also refer to the following groups of roles:
1328 301294a9 Constantinos Venetsanopoulos
1329 301294a9 Constantinos Venetsanopoulos
* **SYNNEFO**: [ **ASTAKOS**, **ASTAKOS_DB**, **PITHOS**, **PITHOS_DB**, **CYCLADES**, **CYCLADES_DB**, **MQ**, **CMS**]
1330 301294a9 Constantinos Venetsanopoulos
* **G_BACKEND**: [**GANETI_MASTER**, **GANETI_NODE**]
1331 301294a9 Constantinos Venetsanopoulos
1332 301294a9 Constantinos Venetsanopoulos
Of course, when deploying Synnefo you can combine multiple of the above roles on a
1333 301294a9 Constantinos Venetsanopoulos
single physical node, but if you are trying to scale out, the above separation
1334 301294a9 Constantinos Venetsanopoulos
gives you significant advantages.
1335 301294a9 Constantinos Venetsanopoulos
1336 301294a9 Constantinos Venetsanopoulos
So, in the next section we will take a look on what components you will have to
1337 301294a9 Constantinos Venetsanopoulos
install on each physical node depending on its Synnefo role. We assume the graph's
1338 301294a9 Constantinos Venetsanopoulos
architecture.
1339 301294a9 Constantinos Venetsanopoulos
1340 301294a9 Constantinos Venetsanopoulos
Components for each role
1341 301294a9 Constantinos Venetsanopoulos
------------------------
1342 2f6143c9 Constantinos Venetsanopoulos
1343 301294a9 Constantinos Venetsanopoulos
When deploying Synnefo in large scale, you need to install different Synnefo
1344 301294a9 Constantinos Venetsanopoulos
or/and third party components on different physical nodes according to their
1345 301294a9 Constantinos Venetsanopoulos
Synnefo role, as stated in the previous section.
1346 301294a9 Constantinos Venetsanopoulos
1347 301294a9 Constantinos Venetsanopoulos
Specifically:
1348 301294a9 Constantinos Venetsanopoulos
1349 301294a9 Constantinos Venetsanopoulos
Role **WEBSERVER**
1350 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1351 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Apache
1352 301294a9 Constantinos Venetsanopoulos
Role **ASTAKOS**
1353 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-astakos-app`
1354 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django, Gunicorn
1355 301294a9 Constantinos Venetsanopoulos
Role **ASTAKOS_DB**
1356 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1357 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: PostgreSQL
1358 301294a9 Constantinos Venetsanopoulos
Role **PITHOS**
1359 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-pithos-app`, `snf-pithos-webclient`
1360 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django, Gunicorn
1361 301294a9 Constantinos Venetsanopoulos
Role **PITHOS_DB**
1362 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1363 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: PostgreSQL
1364 301294a9 Constantinos Venetsanopoulos
Role **CYCLADES**
1365 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-cyclades-app`, `snf-vncauthproxy`
1366 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django Gunicorn
1367 301294a9 Constantinos Venetsanopoulos
Role **CYCLADES_DB**
1368 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1369 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: PostgreSQL
1370 301294a9 Constantinos Venetsanopoulos
Role **MQ**
1371 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1372 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: RabbitMQ
1373 301294a9 Constantinos Venetsanopoulos
Role **GANETI_MASTER**
1374 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-cyclades-gtools`
1375 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Ganeti
1376 301294a9 Constantinos Venetsanopoulos
Role **GANETI_NODE**
1377 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-cyclades-gtools`, `snf-network`, `snf-image`, `nfdhcpd`
1378 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Ganeti
1379 301294a9 Constantinos Venetsanopoulos
Role **CMS**
1380 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `snf-webproject`, `snf-cloudcms`
1381 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: Django, Gunicorn
1382 301294a9 Constantinos Venetsanopoulos
Role **NS**
1383 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `None`
1384 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: BIND
1385 301294a9 Constantinos Venetsanopoulos
Role **CLIENT**
1386 301294a9 Constantinos Venetsanopoulos
    * Synnefo components: `kamaki`, `snf-image-creator`
1387 301294a9 Constantinos Venetsanopoulos
    * 3rd party components: `None`
1388 301294a9 Constantinos Venetsanopoulos
1389 301294a9 Constantinos Venetsanopoulos
Example scale out installation
1390 301294a9 Constantinos Venetsanopoulos
------------------------------
1391 301294a9 Constantinos Venetsanopoulos
1392 301294a9 Constantinos Venetsanopoulos
In this section we describe an example of a medium scale installation which
1393 301294a9 Constantinos Venetsanopoulos
combines multiple roles on 10 different physical nodes. We also provide a
1394 301294a9 Constantinos Venetsanopoulos
:ref:`guide <i-synnefo>` to help with such an install.
1395 301294a9 Constantinos Venetsanopoulos
1396 301294a9 Constantinos Venetsanopoulos
We assume that we have the following 10 physical nodes with the corresponding
1397 301294a9 Constantinos Venetsanopoulos
roles:
1398 301294a9 Constantinos Venetsanopoulos
1399 301294a9 Constantinos Venetsanopoulos
Node1:
1400 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **ASTAKOS**
1401 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1402 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1403 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1404 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1405 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1406 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-astakos-app <i-astakos>`
1407 301294a9 Constantinos Venetsanopoulos
Node2:
1408 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **PITHOS**
1409 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1410 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1411 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1412 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1413 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1414 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-pithos-app <i-pithos>`
1415 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-pithos-webclient <i-pithos>`
1416 301294a9 Constantinos Venetsanopoulos
Node3:
1417 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **CYCLADES**
1418 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1419 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1420 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1421 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1422 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1423 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cyclades-app <i-cyclades>`
1424 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-vncauthproxy <i-cyclades>`
1425 301294a9 Constantinos Venetsanopoulos
Node4:
1426 301294a9 Constantinos Venetsanopoulos
    **WEBSERVER**, **CMS**
1427 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1428 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1429 301294a9 Constantinos Venetsanopoulos
        * :ref:`gunicorn <i-gunicorn>`
1430 301294a9 Constantinos Venetsanopoulos
        * :ref:`apache <i-apache>`
1431 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-webproject <i-webproject>`
1432 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cloudcms <i-cms>`
1433 301294a9 Constantinos Venetsanopoulos
Node5:
1434 301294a9 Constantinos Venetsanopoulos
    **ASTAKOS_DB**, **PITHOS_DB**, **CYCLADES_DB**
1435 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1436 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1437 301294a9 Constantinos Venetsanopoulos
        * :ref:`postgresql <i-db>`
1438 301294a9 Constantinos Venetsanopoulos
Node6:
1439 301294a9 Constantinos Venetsanopoulos
    **MQ**
1440 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1441 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1442 301294a9 Constantinos Venetsanopoulos
        * :ref:`rabbitmq <i-mq>`
1443 301294a9 Constantinos Venetsanopoulos
Node7:
1444 301294a9 Constantinos Venetsanopoulos
    **GANETI_MASTER**, **GANETI_NODE**
1445 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1446 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1447 301294a9 Constantinos Venetsanopoulos
        * :ref:`general <i-backends>`
1448 301294a9 Constantinos Venetsanopoulos
        * :ref:`ganeti <i-ganeti>`
1449 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cyclades-gtools <i-gtools>`
1450 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-network <i-network>`
1451 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-image <i-image>`
1452 301294a9 Constantinos Venetsanopoulos
        * :ref:`nfdhcpd <i-network>`
1453 301294a9 Constantinos Venetsanopoulos
Node8:
1454 301294a9 Constantinos Venetsanopoulos
    **GANETI_NODE**
1455 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1456 301294a9 Constantinos Venetsanopoulos
        * :ref:`apt <i-apt>`
1457 301294a9 Constantinos Venetsanopoulos
        * :ref:`general <i-backends>`
1458 301294a9 Constantinos Venetsanopoulos
        * :ref:`ganeti <i-ganeti>`
1459 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-cyclades-gtools <i-gtools>`
1460 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-network <i-network>`
1461 301294a9 Constantinos Venetsanopoulos
        * :ref:`snf-image <i-image>`
1462 301294a9 Constantinos Venetsanopoulos
        * :ref:`nfdhcpd <i-network>`
1463 301294a9 Constantinos Venetsanopoulos
Node9:
1464 301294a9 Constantinos Venetsanopoulos
    **GANETI_NODE**
1465 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1466 301294a9 Constantinos Venetsanopoulos
        `Same as Node8`
1467 301294a9 Constantinos Venetsanopoulos
Node10:
1468 301294a9 Constantinos Venetsanopoulos
    **GANETI_NODE**
1469 301294a9 Constantinos Venetsanopoulos
      Guide sections:
1470 301294a9 Constantinos Venetsanopoulos
        `Same as Node8`
1471 301294a9 Constantinos Venetsanopoulos
1472 301294a9 Constantinos Venetsanopoulos
All sections: :ref:`Scale out Guide <i-synnefo>`
1473 547c78f6 Constantinos Venetsanopoulos
1474 bc055d09 Constantinos Venetsanopoulos
1475 bbcd3dd1 Constantinos Venetsanopoulos
Upgrade Notes
1476 bbcd3dd1 Constantinos Venetsanopoulos
=============
1477 bc055d09 Constantinos Venetsanopoulos
1478 457fe4fc Georgios D. Tsoukalas
.. toctree::
1479 457fe4fc Georgios D. Tsoukalas
   :maxdepth: 1
1480 457fe4fc Georgios D. Tsoukalas
1481 1cd3daa1 Constantinos Venetsanopoulos
   v0.12 -> v0.13 <upgrade/upgrade-0.13>
1482 457fe4fc Georgios D. Tsoukalas
1483 bbcd3dd1 Constantinos Venetsanopoulos
1484 3045e739 Constantinos Venetsanopoulos
Changelog, NEWS
1485 bbcd3dd1 Constantinos Venetsanopoulos
===============
1486 bbcd3dd1 Constantinos Venetsanopoulos
1487 bbcd3dd1 Constantinos Venetsanopoulos
* v0.13 :ref:`Changelog <Changelog-0.13>`, :ref:`NEWS <NEWS-0.13>`