Revision 5949b704
b/README.deploy | ||
---|---|---|
4 | 4 |
deployment. It begins by examining the different node roles, then moves to the |
5 | 5 |
installation and setup of distinct software components. |
6 | 6 |
|
7 |
It is current as of Synnefo v0.5.2.
|
|
7 |
It is current as of Synnefo v0.7.
|
|
8 | 8 |
|
9 | 9 |
|
10 | 10 |
Node types |
... | ... | |
430 | 430 |
sudo pip install -e git+https://code.grnet.gr/git/vncauthproxy@5a196d8481e171a#egg=vncauthproxy |
431 | 431 |
|
432 | 432 |
|
433 |
13. Installation of the customized Ganeti Instance Image for image deployment:
|
|
433 |
13. Installation of the snf-image Ganeti OS provider for image deployment:
|
|
434 | 434 |
For Synnefo to be able to launch VMs from specified Images, you need |
435 |
the gnt-instance-image OS Provider installed on *all* Ganeti nodes. |
|
436 |
There are 2 different ways to install gnt-instance-image on a node: |
|
437 |
|
|
438 |
1.As a debian package (recommended) |
|
439 |
|
|
440 |
Download and install the debian package found here: |
|
441 |
https://code.grnet.gr/attachments/download/351/ganeti-instance-image_0.5.1-1-snf1_all.deb |
|
442 |
You can do this by running the following: |
|
443 |
|
|
444 |
$ wget https://code.grnet.gr/attachments/download/351/ganeti-instance-image_0.5.1-1-snf1_all.deb |
|
445 |
# dpkg -i ganeti-instance-image_0.5.1-1-snf1_all.deb |
|
446 |
|
|
447 |
Make any additional configuration changes in |
|
448 |
/etc/default/ganeti-instance-image. |
|
449 |
It is recommended to change the default IMAGE_DIR from |
|
450 |
/var/cache/ganeti-instance-image to something like /srv/example_images_repo |
|
451 |
|
|
452 |
Be sure to have all the package's needed dependencies installed |
|
453 |
on your system. |
|
454 |
|
|
455 |
2.From source |
|
456 |
|
|
457 |
Download and install gnt-instance-image from its own repository, |
|
458 |
at https://code.grnet.gr/git/gnt-instance-image. |
|
459 |
[FIXME: Must be updated to include information on installation of snf-image] |
|
460 |
|
|
461 |
Make sure to enable progress monitoring, using the --with-progress-monitor |
|
462 |
argument to configure. This requires the snf-progress-monitor tool, |
|
463 |
provided in snf-ganeti-tools/ and also as part of the snf-ganeti-tools |
|
464 |
Debian package. |
|
465 |
|
|
466 |
After installing gnt-instance-image do the following: |
|
467 |
1. $ cd /path-to-repo |
|
468 |
# cp ./defaults /etc/default/ganeti-instance-image |
|
469 |
2. In /etc/ganeti/instance-image/hooks, make sure the hooks you want to |
|
470 |
run during the instance creation process have execute permission. |
|
471 |
For linux you will need at lease `grub' and `root_passwd' to make the |
|
472 |
instance usable: |
|
473 |
chmod +x /etc/ganeti/instance-image/hooks/linux/{grub,root_passwd} |
|
474 |
For security reasons make sure `ssh' hook is also enabled. |
|
475 |
For windows you will need `mbr' and `admin_passwd': |
|
476 |
chmod +x /etc/ganeti/instance-image/hooks/windows/{mbr,admin_passwd} |
|
477 |
For both architectures it is also highly recommended to enable the |
|
478 |
`hostname' hook too: |
|
479 |
chmod +x /et/ganeti/instance-image/hooks/{linux,windows}/hostname |
|
480 |
|
|
481 |
Your custom Images should be stored in a dump format under |
|
482 |
/var/cache/ganeti-instance-image (default) or a different directory of your |
|
483 |
choice, accordingly set in /etc/default/ganeti-instance-image. The latter |
|
484 |
is recommended. Their filenames should have the following format: |
|
485 |
{backend_id}-x86_64-root.dump |
|
486 |
e.g., debian-6.0.1a-x86_64-root.dump (backend_id = "debian-6.0.1a") |
|
435 |
the snf-image OS Provider installed on *all* Ganeti nodes. |
|
436 |
|
|
437 |
Please see https://code.grnet.gr/projects/snf-image/wiki |
|
438 |
for installation instructions and documentation on the design |
|
439 |
and implementation of snf-image. |
|
440 |
|
|
441 |
Please see https://code.grnet.gr/projects/snf-image/files |
|
442 |
for the latest packages. |
|
443 |
|
|
444 |
Images should be stored under extdump format in a directory |
|
445 |
of your choice, configurable as IMAGE_DIR in /etc/default/snf-image. |
|
487 | 446 |
|
488 | 447 |
|
489 | 448 |
14. Setup Synnefo-specific networking on the Ganeti backend: |
b/README.upgrade | ||
---|---|---|
5 | 5 |
For more information, please see README.deploy. |
6 | 6 |
|
7 | 7 |
|
8 |
v0.6.2 -> TBD
|
|
8 |
v0.6.2 -> v0.7
|
|
9 | 9 |
HTML TEMPLATES |
10 | 10 |
* Included a generic service unavailable template based on |
11 | 11 |
generic_info_tpl.html, as ui/static/service_unavailable.html. |
... | ... | |
14 | 14 |
* python-unittest2, python-paramiko needed by the new integration |
15 | 15 |
test suite snf-tools/snf-test. Paramiko shipped with Squeeze uses |
16 | 16 |
broken RandomPool, produces warnings, see #576697. |
17 |
* snf-image must be installed on all Ganeti hosts, see README.deploy, |
|
18 |
Step 13. |
|
17 | 19 |
|
18 |
NEW SETTINGS |
|
20 |
COMPONENTS |
|
21 |
* snf-image replaces snf-ganeti-instance-image as the Ganeti OS provider |
|
22 |
used by Synnefo, and can live alongside snf-ganeti-instance-image. |
|
23 |
Once snf-image has been deployed on all Ganeti nodes, be sure to modify |
|
24 |
the value of settings.d/10-backend.conf:GANETI_CREATEINSTANCE_KWARGS |
|
25 |
to use 'snf-image+default'. |
|
26 |
|
|
27 |
NEW/UPDATED SETTINGS |
|
19 | 28 |
* EMAIL_SUBJECT_PREFIX: |
20 | 29 |
Prepended to automated emails, set to someting that uniquely identifies |
21 | 30 |
the deployment. |
... | ... | |
38 | 47 |
error overlay. |
39 | 48 |
* UI_HANDLE_WINDOW_EXCEPTIONS in 30-ui.conf: |
40 | 49 |
Whether UI should display error overlay for all Javascript exceptions. |
50 |
* GANETI_CREATEINSTANCE_KWARGS in 10-backend.conf: |
|
51 |
Must be updated to use snf-image as the Ganeti OS provider. |
|
41 | 52 |
|
42 | 53 |
DB MIGRATION |
43 | 54 |
* Uniqueness constraints have been added to the metadata models. |
b/logic/backend.py | ||
---|---|---|
236 | 236 |
kw = settings.GANETI_CREATEINSTANCE_KWARGS |
237 | 237 |
kw['mode'] = 'create' |
238 | 238 |
kw['name'] = vm.backend_id |
239 |
# Defined in settings.GANETI_CREATE_INSTANCE_KWARGS
|
|
239 |
# Defined in settings.GANETI_CREATEINSTANCE_KWARGS |
|
240 | 240 |
# kw['disk_template'] = settings.GANETI_DISK_TEMPLATE |
241 | 241 |
kw['disks'] = [{"size": sz}] |
242 | 242 |
kw['nics'] = [nic] |
243 |
# Defined in settings.GANETI_CREATE_INSTANCE_KWARGS
|
|
243 |
# Defined in settings.GANETI_CREATEINSTANCE_KWARGS |
|
244 | 244 |
# kw['os'] = settings.GANETI_OS_PROVIDER |
245 | 245 |
kw['ip_check'] = False |
246 | 246 |
kw['name_check'] = False |
... | ... | |
262 | 262 |
if personality: |
263 | 263 |
kw['osparams']['img_personality'] = json.dumps(personality) |
264 | 264 |
|
265 |
# Defined in settings.GANETI_CREATE_INSTANCE_KWARGS
|
|
265 |
# Defined in settings.GANETI_CREATEINSTANCE_KWARGS |
|
266 | 266 |
# kw['hvparams'] = dict(serial_console=False) |
267 | 267 |
|
268 | 268 |
return rapi.CreateInstance(**kw) |
Also available in: Unified diff