Remove usage of reserved key word 'family'
[ganeti-local] / doc / hooks.rst
1 Ganeti customisation using hooks
2 ================================
3
4 Documents Ganeti version 2.6
5
6 .. contents::
7
8 Introduction
9 ------------
10
11 In order to allow customisation of operations, Ganeti runs scripts in
12 sub-directories of ``@SYSCONFDIR@/ganeti/hooks``. These sub-directories
13 are named ``$hook-$phase.d``, where ``$phase`` is either ``pre`` or
14 ``post`` and ``$hook`` matches the directory name given for a hook (e.g.
15 ``cluster-verify-post.d`` or ``node-add-pre.d``).
16
17 This is similar to the ``/etc/network/`` structure present in Debian
18 for network interface handling.
19
20 Organisation
21 ------------
22
23 For every operation, two sets of scripts are run:
24
25 - pre phase (for authorization/checking)
26 - post phase (for logging)
27
28 Also, for each operation, the scripts are run on one or more nodes,
29 depending on the operation type.
30
31 Note that, even though we call them scripts, we are actually talking
32 about any executable.
33
34 *pre* scripts
35 ~~~~~~~~~~~~~
36
37 The *pre* scripts have a definite target: to check that the operation
38 is allowed given the site-specific constraints. You could have, for
39 example, a rule that says every new instance is required to exists in
40 a database; to implement this, you could write a script that checks
41 the new instance parameters against your database.
42
43 The objective of these scripts should be their return code (zero or
44 non-zero for success and failure). However, if they modify the
45 environment in any way, they should be idempotent, as failed
46 executions could be restarted and thus the script(s) run again with
47 exactly the same parameters.
48
49 Note that if a node is unreachable at the time a hooks is run, this
50 will not be interpreted as a deny for the execution. In other words,
51 only an actual error returned from a script will cause abort, and not
52 an unreachable node.
53
54 Therefore, if you want to guarantee that a hook script is run and
55 denies an action, it's best to put it on the master node.
56
57 *post* scripts
58 ~~~~~~~~~~~~~~
59
60 These scripts should do whatever you need as a reaction to the
61 completion of an operation. Their return code is not checked (but
62 logged), and they should not depend on the fact that the *pre* scripts
63 have been run.
64
65 Naming
66 ~~~~~~
67
68 The allowed names for the scripts consist of (similar to *run-parts*)
69 upper and lower case, digits, underscores and hyphens. In other words,
70 the regexp ``^[a-zA-Z0-9_-]+$``. Also, non-executable scripts will be
71 ignored.
72
73
74 Order of execution
75 ~~~~~~~~~~~~~~~~~~
76
77 On a single node, the scripts in a directory are run in lexicographic
78 order (more exactly, the python string comparison order). It is
79 advisable to implement the usual *NN-name* convention where *NN* is a
80 two digit number.
81
82 For an operation whose hooks are run on multiple nodes, there is no
83 specific ordering of nodes with regard to hooks execution; you should
84 assume that the scripts are run in parallel on the target nodes
85 (keeping on each node the above specified ordering).  If you need any
86 kind of inter-node synchronisation, you have to implement it yourself
87 in the scripts.
88
89 Execution environment
90 ~~~~~~~~~~~~~~~~~~~~~
91
92 The scripts will be run as follows:
93
94 - no command line arguments
95
96 - no controlling *tty*
97
98 - stdin is actually */dev/null*
99
100 - stdout and stderr are directed to files
101
102 - PATH is reset to :pyeval:`constants.HOOKS_PATH`
103
104 - the environment is cleared, and only ganeti-specific variables will
105   be left
106
107
108 All information about the cluster is passed using environment
109 variables. Different operations will have sligthly different
110 environments, but most of the variables are common.
111
112 Operation list
113 --------------
114
115 Node operations
116 ~~~~~~~~~~~~~~~
117
118 OP_NODE_ADD
119 +++++++++++
120
121 Adds a node to the cluster.
122
123 :directory: node-add
124 :env. vars: NODE_NAME, NODE_PIP, NODE_SIP, MASTER_CAPABLE, VM_CAPABLE
125 :pre-execution: all existing nodes
126 :post-execution: all nodes plus the new node
127
128
129 OP_NODE_REMOVE
130 ++++++++++++++
131
132 Removes a node from the cluster. On the removed node the hooks are
133 called during the execution of the operation and not after its
134 completion.
135
136 :directory: node-remove
137 :env. vars: NODE_NAME
138 :pre-execution: all existing nodes except the removed node
139 :post-execution: all existing nodes
140
141 OP_NODE_SET_PARAMS
142 ++++++++++++++++++
143
144 Changes a node's parameters.
145
146 :directory: node-modify
147 :env. vars: MASTER_CANDIDATE, OFFLINE, DRAINED, MASTER_CAPABLE, VM_CAPABLE
148 :pre-execution: master node, the target node
149 :post-execution: master node, the target node
150
151 OP_NODE_MIGRATE
152 ++++++++++++++++
153
154 Relocate secondary instances from a node.
155
156 :directory: node-migrate
157 :env. vars: NODE_NAME
158 :pre-execution: master node
159 :post-execution: master node
160
161
162 Node group operations
163 ~~~~~~~~~~~~~~~~~~~~~
164
165 OP_GROUP_ADD
166 ++++++++++++
167
168 Adds a node group to the cluster.
169
170 :directory: group-add
171 :env. vars: GROUP_NAME
172 :pre-execution: master node
173 :post-execution: master node
174
175 OP_GROUP_SET_PARAMS
176 +++++++++++++++++++
177
178 Changes a node group's parameters.
179
180 :directory: group-modify
181 :env. vars: GROUP_NAME, NEW_ALLOC_POLICY
182 :pre-execution: master node
183 :post-execution: master node
184
185 OP_GROUP_REMOVE
186 +++++++++++++++
187
188 Removes a node group from the cluster. Since the node group must be
189 empty for removal to succeed, the concept of "nodes in the group" does
190 not exist, and the hook is only executed in the master node.
191
192 :directory: group-remove
193 :env. vars: GROUP_NAME
194 :pre-execution: master node
195 :post-execution: master node
196
197 OP_GROUP_RENAME
198 +++++++++++++++
199
200 Renames a node group.
201
202 :directory: group-rename
203 :env. vars: OLD_NAME, NEW_NAME
204 :pre-execution: master node and all nodes in the group
205 :post-execution: master node and all nodes in the group
206
207 OP_GROUP_EVACUATE
208 +++++++++++++++++
209
210 Evacuates a node group.
211
212 :directory: group-evacuate
213 :env. vars: GROUP_NAME, TARGET_GROUPS
214 :pre-execution: master node and all nodes in the group
215 :post-execution: master node and all nodes in the group
216
217 Network operations
218 ~~~~~~~~~~~~~~~~~~
219
220 OP_NETWORK_ADD
221 ++++++++++++++
222
223 Adds a network to the cluster.
224
225 :directory: network-add
226 :env. vars: NETWORK_NAME, NETWORK_SUBNET, NETWORK_GATEWAY, NETWORK_SUBNET6,
227             NETWORK_GATEWAY6, NETWORK_TYPE, NETWORK_MAC_PREFIX, NETWORK_TAGS
228 :pre-execution: master node
229 :post-execution: master node
230
231 OP_NETWORK_REMOVE
232 +++++++++++++++++
233
234 Removes a network from the cluster.
235
236 :directory: network-remove
237 :env. vars: NETWORK_NAME
238 :pre-execution: master node
239 :post-execution: master node
240
241 OP_NETWORK_CONNECT
242 ++++++++++++++++++
243
244 Connects a network to a nodegroup.
245
246 :directory: network-connect
247 :env. vars: GROUP_NAME, NETWORK_NAME,
248             GROUP_NETWORK_MODE, GROUP_NETWORK_LINK,
249             NETWORK_SUBNET, NETWORK_GATEWAY, NETWORK_SUBNET6,
250             NETWORK_GATEWAY6, NETWORK_TYPE, NETWORK_MAC_PREFIX, NETWORK_TAGS
251 :pre-execution: nodegroup nodes
252 :post-execution: nodegroup nodes
253
254
255 OP_NETWORK_DISCONNECT
256 +++++++++++++++++++++
257
258 Disconnects a network from a nodegroup.
259
260 :directory: network-disconnect
261 :env. vars: GROUP_NAME, NETWORK_NAME,
262             GROUP_NETWORK_MODE, GROUP_NETWORK_LINK,
263             NETWORK_SUBNET, NETWORK_GATEWAY, NETWORK_SUBNET6,
264             NETWORK_GATEWAY6, NETWORK_TYPE, NETWORK_MAC_PREFIX, NETWORK_TAGS
265 :pre-execution: nodegroup nodes
266 :post-execution: nodegroup nodes
267
268
269 OP_NETWORK_SET_PARAMS
270 +++++++++++++++++++++
271
272 Modifies a network.
273
274 :directory: network-modify
275 :env. vars: NETWORK_NAME, NETWORK_SUBNET, NETWORK_GATEWAY, NETWORK_SUBNET6,
276             NETWORK_GATEWAY6, NETWORK_TYPE, NETWORK_MAC_PREFIX, NETWORK_TAGS
277 :pre-execution: master node
278 :post-execution: master node
279
280
281 Instance operations
282 ~~~~~~~~~~~~~~~~~~~
283
284 All instance operations take at least the following variables:
285 INSTANCE_NAME, INSTANCE_PRIMARY, INSTANCE_SECONDARY,
286 INSTANCE_OS_TYPE, INSTANCE_DISK_TEMPLATE, INSTANCE_MEMORY,
287 INSTANCE_DISK_SIZES, INSTANCE_VCPUS, INSTANCE_NIC_COUNT,
288 INSTANCE_NICn_IP, INSTANCE_NICn_BRIDGE, INSTANCE_NICn_MAC,
289 INSTANCE_DISK_COUNT, INSTANCE_DISKn_SIZE, INSTANCE_DISKn_MODE.
290
291 The INSTANCE_NICn_* and INSTANCE_DISKn_* variables represent the
292 properties of the *n* -th NIC and disk, and are zero-indexed.
293
294
295 OP_INSTANCE_CREATE
296 ++++++++++++++++++
297
298 Creates a new instance.
299
300 :directory: instance-add
301 :env. vars: ADD_MODE, SRC_NODE, SRC_PATH, SRC_IMAGES
302 :pre-execution: master node, primary and secondary nodes
303 :post-execution: master node, primary and secondary nodes
304
305 OP_INSTANCE_REINSTALL
306 +++++++++++++++++++++
307
308 Reinstalls an instance.
309
310 :directory: instance-reinstall
311 :env. vars: only the standard instance vars
312 :pre-execution: master node, primary and secondary nodes
313 :post-execution: master node, primary and secondary nodes
314
315 OP_BACKUP_EXPORT
316 ++++++++++++++++
317
318 Exports the instance.
319
320 :directory: instance-export
321 :env. vars: EXPORT_MODE, EXPORT_NODE, EXPORT_DO_SHUTDOWN, REMOVE_INSTANCE
322 :pre-execution: master node, primary and secondary nodes
323 :post-execution: master node, primary and secondary nodes
324
325 OP_INSTANCE_STARTUP
326 +++++++++++++++++++
327
328 Starts an instance.
329
330 :directory: instance-start
331 :env. vars: FORCE
332 :pre-execution: master node, primary and secondary nodes
333 :post-execution: master node, primary and secondary nodes
334
335 OP_INSTANCE_SHUTDOWN
336 ++++++++++++++++++++
337
338 Stops an instance.
339
340 :directory: instance-stop
341 :env. vars: TIMEOUT
342 :pre-execution: master node, primary and secondary nodes
343 :post-execution: master node, primary and secondary nodes
344
345 OP_INSTANCE_REBOOT
346 ++++++++++++++++++
347
348 Reboots an instance.
349
350 :directory: instance-reboot
351 :env. vars: IGNORE_SECONDARIES, REBOOT_TYPE, SHUTDOWN_TIMEOUT
352 :pre-execution: master node, primary and secondary nodes
353 :post-execution: master node, primary and secondary nodes
354
355 OP_INSTANCE_SET_PARAMS
356 ++++++++++++++++++++++
357
358 Modifies the instance parameters.
359
360 :directory: instance-modify
361 :env. vars: NEW_DISK_TEMPLATE, RUNTIME_MEMORY
362 :pre-execution: master node, primary and secondary nodes
363 :post-execution: master node, primary and secondary nodes
364
365 OP_INSTANCE_FAILOVER
366 ++++++++++++++++++++
367
368 Failovers an instance. In the post phase INSTANCE_PRIMARY and
369 INSTANCE_SECONDARY refer to the nodes that were repectively primary
370 and secondary before failover.
371
372 :directory: instance-failover
373 :env. vars: IGNORE_CONSISTENCY, SHUTDOWN_TIMEOUT, OLD_PRIMARY, OLD_SECONDARY, NEW_PRIMARY, NEW_SECONDARY
374 :pre-execution: master node, secondary node
375 :post-execution: master node, primary and secondary nodes
376
377 OP_INSTANCE_MIGRATE
378 ++++++++++++++++++++
379
380 Migrates an instance. In the post phase INSTANCE_PRIMARY and
381 INSTANCE_SECONDARY refer to the nodes that were repectively primary
382 and secondary before migration.
383
384 :directory: instance-migrate
385 :env. vars: MIGRATE_LIVE, MIGRATE_CLEANUP, OLD_PRIMARY, OLD_SECONDARY, NEW_PRIMARY, NEW_SECONDARY
386 :pre-execution: master node, secondary node
387 :post-execution: master node, primary and secondary nodes
388
389
390 OP_INSTANCE_REMOVE
391 ++++++++++++++++++
392
393 Remove an instance.
394
395 :directory: instance-remove
396 :env. vars: SHUTDOWN_TIMEOUT
397 :pre-execution: master node
398 :post-execution: master node, primary and secondary nodes
399
400 OP_INSTANCE_GROW_DISK
401 +++++++++++++++++++++
402
403 Grows the disk of an instance.
404
405 :directory: disk-grow
406 :env. vars: DISK, AMOUNT
407 :pre-execution: master node, primary and secondary nodes
408 :post-execution: master node, primary and secondary nodes
409
410 OP_INSTANCE_RENAME
411 ++++++++++++++++++
412
413 Renames an instance.
414
415 :directory: instance-rename
416 :env. vars: INSTANCE_NEW_NAME
417 :pre-execution: master node, primary and secondary nodes
418 :post-execution: master node, primary and secondary nodes
419
420 OP_INSTANCE_MOVE
421 ++++++++++++++++
422
423 Move an instance by data-copying.
424
425 :directory: instance-move
426 :env. vars: TARGET_NODE, SHUTDOWN_TIMEOUT
427 :pre-execution: master node, primary and target nodes
428 :post-execution: master node, primary and target nodes
429
430 OP_INSTANCE_RECREATE_DISKS
431 ++++++++++++++++++++++++++
432
433 Recreate an instance's missing disks.
434
435 :directory: instance-recreate-disks
436 :env. vars: only the standard instance vars
437 :pre-execution: master node, primary and secondary nodes
438 :post-execution: master node, primary and secondary nodes
439
440 OP_INSTANCE_REPLACE_DISKS
441 +++++++++++++++++++++++++
442
443 Replace the disks of an instance.
444
445 :directory: mirrors-replace
446 :env. vars: MODE, NEW_SECONDARY, OLD_SECONDARY
447 :pre-execution: master node, primary and new secondary nodes
448 :post-execution: master node, primary and new secondary nodes
449
450 OP_INSTANCE_CHANGE_GROUP
451 ++++++++++++++++++++++++
452
453 Moves an instance to another group.
454
455 :directory: instance-change-group
456 :env. vars: TARGET_GROUPS
457 :pre-execution: master node
458 :post-execution: master node
459
460
461 Cluster operations
462 ~~~~~~~~~~~~~~~~~~
463
464 OP_CLUSTER_POST_INIT
465 ++++++++++++++++++++
466
467 This hook is called via a special "empty" LU right after cluster
468 initialization.
469
470 :directory: cluster-init
471 :env. vars: none
472 :pre-execution: none
473 :post-execution: master node
474
475 OP_CLUSTER_DESTROY
476 ++++++++++++++++++
477
478 The post phase of this hook is called during the execution of destroy
479 operation and not after its completion.
480
481 :directory: cluster-destroy
482 :env. vars: none
483 :pre-execution: none
484 :post-execution: master node
485
486 OP_CLUSTER_VERIFY_GROUP
487 +++++++++++++++++++++++
488
489 Verifies all nodes in a group. This is a special LU with regard to
490 hooks, as the result of the opcode will be combined with the result of
491 post-execution hooks, in order to allow administrators to enhance the
492 cluster verification procedure.
493
494 :directory: cluster-verify
495 :env. vars: CLUSTER, MASTER, CLUSTER_TAGS, NODE_TAGS_<name>
496 :pre-execution: none
497 :post-execution: all nodes in a group
498
499 OP_CLUSTER_RENAME
500 +++++++++++++++++
501
502 Renames the cluster.
503
504 :directory: cluster-rename
505 :env. vars: NEW_NAME
506 :pre-execution: master-node
507 :post-execution: master-node
508
509 OP_CLUSTER_SET_PARAMS
510 +++++++++++++++++++++
511
512 Modifies the cluster parameters.
513
514 :directory: cluster-modify
515 :env. vars: NEW_VG_NAME
516 :pre-execution: master node
517 :post-execution: master node
518
519 Virtual operation :pyeval:`constants.FAKE_OP_MASTER_TURNUP`
520 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
521
522 This doesn't correspond to an actual op-code, but it is called when the
523 master IP is activated.
524
525 :directory: master-ip-turnup
526 :env. vars: MASTER_NETDEV, MASTER_IP, MASTER_NETMASK, CLUSTER_IP_VERSION
527 :pre-execution: master node
528 :post-execution: master node
529
530 Virtual operation :pyeval:`constants.FAKE_OP_MASTER_TURNDOWN`
531 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
532
533 This doesn't correspond to an actual op-code, but it is called when the
534 master IP is deactivated.
535
536 :directory: master-ip-turndown
537 :env. vars: MASTER_NETDEV, MASTER_IP, MASTER_NETMASK, CLUSTER_IP_VERSION
538 :pre-execution: master node
539 :post-execution: master node
540
541
542 Obsolete operations
543 ~~~~~~~~~~~~~~~~~~~
544
545 The following operations are no longer present or don't execute hooks
546 anymore in Ganeti 2.0:
547
548 - OP_INIT_CLUSTER
549 - OP_MASTER_FAILOVER
550 - OP_INSTANCE_ADD_MDDRBD
551 - OP_INSTANCE_REMOVE_MDDRBD
552
553
554 Environment variables
555 ---------------------
556
557 Note that all variables listed here are actually prefixed with *GANETI_*
558 in order to provide a clear namespace. In addition, post-execution
559 scripts receive another set of variables, prefixed with *GANETI_POST_*,
560 representing the status after the opcode executed.
561
562 Common variables
563 ~~~~~~~~~~~~~~~~
564
565 This is the list of environment variables supported by all operations:
566
567 HOOKS_VERSION
568   Documents the hooks interface version. In case this doesnt match
569   what the script expects, it should not run. The documents conforms
570   to the version 2.
571
572 HOOKS_PHASE
573   One of *PRE* or *POST* denoting which phase are we in.
574
575 CLUSTER
576   The cluster name.
577
578 MASTER
579   The master node.
580
581 OP_CODE
582   One of the *OP_* values from the list of operations.
583
584 OBJECT_TYPE
585   One of ``INSTANCE``, ``NODE``, ``CLUSTER``.
586
587 DATA_DIR
588   The path to the Ganeti configuration directory (to read, for
589   example, the *ssconf* files).
590
591
592 Specialised variables
593 ~~~~~~~~~~~~~~~~~~~~~
594
595 This is the list of variables which are specific to one or more
596 operations.
597
598 CLUSTER_IP_VERSION
599   IP version of the master IP (4 or 6)
600
601 INSTANCE_NAME
602   The name of the instance which is the target of the operation.
603
604 INSTANCE_BE_x,y,z,...
605   Instance BE params. There is one variable per BE param. For instance, GANETI_INSTANCE_BE_auto_balance
606
607 INSTANCE_DISK_TEMPLATE
608   The disk type for the instance.
609
610 NEW_DISK_TEMPLATE
611   The new disk type for the instance.
612
613 INSTANCE_DISK_COUNT
614   The number of disks for the instance.
615
616 INSTANCE_DISKn_SIZE
617   The size of disk *n* for the instance.
618
619 INSTANCE_DISKn_MODE
620   Either *rw* for a read-write disk or *ro* for a read-only one.
621
622 INSTANCE_HV_x,y,z,...
623   Instance hypervisor options. There is one variable per option. For instance, GANETI_INSTANCE_HV_use_bootloader
624
625 INSTANCE_HYPERVISOR
626   The instance hypervisor.
627
628 INSTANCE_NIC_COUNT
629   The number of NICs for the instance.
630
631 INSTANCE_NICn_BRIDGE
632   The bridge to which the *n* -th NIC of the instance is attached.
633
634 INSTANCE_NICn_IP
635   The IP (if any) of the *n* -th NIC of the instance.
636
637 INSTANCE_NICn_MAC
638   The MAC address of the *n* -th NIC of the instance.
639
640 INSTANCE_NICn_MODE
641   The mode of the *n* -th NIC of the instance.
642
643 INSTANCE_OS_TYPE
644   The name of the instance OS.
645
646 INSTANCE_PRIMARY
647   The name of the node which is the primary for the instance. Note that
648   for migrations/failovers, you shouldn't rely on this variable since
649   the nodes change during the exectution, but on the
650   OLD_PRIMARY/NEW_PRIMARY values.
651
652 INSTANCE_SECONDARY
653   Space-separated list of secondary nodes for the instance. Note that
654   for migrations/failovers, you shouldn't rely on this variable since
655   the nodes change during the exectution, but on the
656   OLD_SECONDARY/NEW_SECONDARY values.
657
658 INSTANCE_MEMORY
659   The memory size (in MiBs) of the instance.
660
661 INSTANCE_VCPUS
662   The number of virtual CPUs for the instance.
663
664 INSTANCE_STATUS
665   The run status of the instance.
666
667 MASTER_CAPABLE
668   Whether a node is capable of being promoted to master.
669
670 VM_CAPABLE
671   Whether the node can host instances.
672
673 MASTER_NETDEV
674   Network device of the master IP
675
676 MASTER_IP
677   The master IP
678
679 MASTER_NETMASK
680   Netmask of the master IP
681
682 INSTANCE_TAGS
683   A space-delimited list of the instance's tags.
684
685 NODE_NAME
686   The target node of this operation (not the node on which the hook
687   runs).
688
689 NODE_PIP
690   The primary IP of the target node (the one over which inter-node
691   communication is done).
692
693 NODE_SIP
694   The secondary IP of the target node (the one over which drbd
695   replication is done). This can be equal to the primary ip, in case
696   the cluster is not dual-homed.
697
698 FORCE
699   This is provided by some operations when the user gave this flag.
700
701 IGNORE_CONSISTENCY
702   The user has specified this flag. It is used when failing over
703   instances in case the primary node is down.
704
705 ADD_MODE
706   The mode of the instance create: either *create* for create from
707   scratch or *import* for restoring from an exported image.
708
709 SRC_NODE, SRC_PATH, SRC_IMAGE
710   In case the instance has been added by import, these variables are
711   defined and point to the source node, source path (the directory
712   containing the image and the config file) and the source disk image
713   file.
714
715 NEW_SECONDARY
716   The name of the node on which the new mirror component is being
717   added (for replace disk). This can be the name of the current
718   secondary, if the new mirror is on the same secondary. For
719   migrations/failovers, this is the old primary node.
720
721 OLD_SECONDARY
722   The name of the old secondary in the replace-disks command. Note that
723   this can be equal to the new secondary if the secondary node hasn't
724   actually changed. For migrations/failovers, this is the new primary
725   node.
726
727 OLD_PRIMARY, NEW_PRIMARY
728   For migrations/failovers, the old and respectively new primary
729   nodes. These two mirror the NEW_SECONDARY/OLD_SECONDARY variables
730
731 EXPORT_MODE
732   The instance export mode. Either "remote" or "local".
733
734 EXPORT_NODE
735   The node on which the exported image of the instance was done.
736
737 EXPORT_DO_SHUTDOWN
738   This variable tells if the instance has been shutdown or not while
739   doing the export. In the "was shutdown" case, it's likely that the
740   filesystem is consistent, whereas in the "did not shutdown" case,
741   the filesystem would need a check (journal replay or full fsck) in
742   order to guarantee consistency.
743
744 REMOVE_INSTANCE
745   Whether the instance was removed from the node.
746
747 SHUTDOWN_TIMEOUT
748   Amount of time to wait for the instance to shutdown.
749
750 TIMEOUT
751   Amount of time to wait before aborting the op.
752
753 OLD_NAME, NEW_NAME
754   Old/new name of the node group.
755
756 GROUP_NAME
757   The name of the node group.
758
759 NEW_ALLOC_POLICY
760   The new allocation policy for the node group.
761
762 CLUSTER_TAGS
763   The list of cluster tags, space separated.
764
765 NODE_TAGS_<name>
766   The list of tags for node *<name>*, space separated.
767
768 Examples
769 --------
770
771 The startup of an instance will pass this environment to the hook
772 script::
773
774   GANETI_CLUSTER=cluster1.example.com
775   GANETI_DATA_DIR=/var/lib/ganeti
776   GANETI_FORCE=False
777   GANETI_HOOKS_PATH=instance-start
778   GANETI_HOOKS_PHASE=post
779   GANETI_HOOKS_VERSION=2
780   GANETI_INSTANCE_DISK0_MODE=rw
781   GANETI_INSTANCE_DISK0_SIZE=128
782   GANETI_INSTANCE_DISK_COUNT=1
783   GANETI_INSTANCE_DISK_TEMPLATE=drbd
784   GANETI_INSTANCE_MEMORY=128
785   GANETI_INSTANCE_NAME=instance2.example.com
786   GANETI_INSTANCE_NIC0_BRIDGE=xen-br0
787   GANETI_INSTANCE_NIC0_IP=
788   GANETI_INSTANCE_NIC0_MAC=aa:00:00:a5:91:58
789   GANETI_INSTANCE_NIC_COUNT=1
790   GANETI_INSTANCE_OS_TYPE=debootstrap
791   GANETI_INSTANCE_PRIMARY=node3.example.com
792   GANETI_INSTANCE_SECONDARY=node5.example.com
793   GANETI_INSTANCE_STATUS=down
794   GANETI_INSTANCE_VCPUS=1
795   GANETI_MASTER=node1.example.com
796   GANETI_OBJECT_TYPE=INSTANCE
797   GANETI_OP_CODE=OP_INSTANCE_STARTUP
798   GANETI_OP_TARGET=instance2.example.com
799
800 .. vim: set textwidth=72 :
801 .. Local Variables:
802 .. mode: rst
803 .. fill-column: 72
804 .. End: