Statistics
| Branch: | Tag: | Revision:

root / doc / hooks.rst @ b830193c

History | View | Annotate | Download (21.3 kB)

1
Ganeti customisation using hooks
2
================================
3

    
4
Documents Ganeti version 2.7
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_NICn_NETWORK_SUBNET, INSTANCE_NICn_NETWORK_GATEWAY,
290
INSTANCE_NICn_NETWORK_SUBNET6, INSTANCE_NICn_NETWORK_GATEWAY6,
291
INSTANCE_NICn_NETWORK_MAC_PREFIX, INSTANCE_NICn_NETWORK_TYPE,
292
INSTANCE_DISK_COUNT, INSTANCE_DISKn_SIZE, INSTANCE_DISKn_MODE.
293

    
294
The INSTANCE_NICn_* and INSTANCE_DISKn_* variables represent the
295
properties of the *n* -th NIC and disk, and are zero-indexed.
296

    
297
The INSTANCE_NICn_NETWORK_* variables are only passed if a NIC's network
298
parameter is set (that is if the NIC is associated to a network defined
299
via ``gnt-network``)
300

    
301

    
302
OP_INSTANCE_CREATE
303
++++++++++++++++++
304

    
305
Creates a new instance.
306

    
307
:directory: instance-add
308
:env. vars: ADD_MODE, SRC_NODE, SRC_PATH, SRC_IMAGES
309
:pre-execution: master node, primary and secondary nodes
310
:post-execution: master node, primary and secondary nodes
311

    
312
OP_INSTANCE_REINSTALL
313
+++++++++++++++++++++
314

    
315
Reinstalls an instance.
316

    
317
:directory: instance-reinstall
318
:env. vars: only the standard instance vars
319
:pre-execution: master node, primary and secondary nodes
320
:post-execution: master node, primary and secondary nodes
321

    
322
OP_BACKUP_EXPORT
323
++++++++++++++++
324

    
325
Exports the instance.
326

    
327
:directory: instance-export
328
:env. vars: EXPORT_MODE, EXPORT_NODE, EXPORT_DO_SHUTDOWN, REMOVE_INSTANCE
329
:pre-execution: master node, primary and secondary nodes
330
:post-execution: master node, primary and secondary nodes
331

    
332
OP_INSTANCE_STARTUP
333
+++++++++++++++++++
334

    
335
Starts an instance.
336

    
337
:directory: instance-start
338
:env. vars: FORCE
339
:pre-execution: master node, primary and secondary nodes
340
:post-execution: master node, primary and secondary nodes
341

    
342
OP_INSTANCE_SHUTDOWN
343
++++++++++++++++++++
344

    
345
Stops an instance.
346

    
347
:directory: instance-stop
348
:env. vars: TIMEOUT
349
:pre-execution: master node, primary and secondary nodes
350
:post-execution: master node, primary and secondary nodes
351

    
352
OP_INSTANCE_REBOOT
353
++++++++++++++++++
354

    
355
Reboots an instance.
356

    
357
:directory: instance-reboot
358
:env. vars: IGNORE_SECONDARIES, REBOOT_TYPE, SHUTDOWN_TIMEOUT
359
:pre-execution: master node, primary and secondary nodes
360
:post-execution: master node, primary and secondary nodes
361

    
362
OP_INSTANCE_SET_PARAMS
363
++++++++++++++++++++++
364

    
365
Modifies the instance parameters.
366

    
367
:directory: instance-modify
368
:env. vars: NEW_DISK_TEMPLATE, RUNTIME_MEMORY
369
:pre-execution: master node, primary and secondary nodes
370
:post-execution: master node, primary and secondary nodes
371

    
372
OP_INSTANCE_FAILOVER
373
++++++++++++++++++++
374

    
375
Failovers an instance. In the post phase INSTANCE_PRIMARY and
376
INSTANCE_SECONDARY refer to the nodes that were repectively primary
377
and secondary before failover.
378

    
379
:directory: instance-failover
380
:env. vars: IGNORE_CONSISTENCY, SHUTDOWN_TIMEOUT, OLD_PRIMARY, OLD_SECONDARY, NEW_PRIMARY, NEW_SECONDARY
381
:pre-execution: master node, secondary node
382
:post-execution: master node, primary and secondary nodes
383

    
384
OP_INSTANCE_MIGRATE
385
++++++++++++++++++++
386

    
387
Migrates an instance. In the post phase INSTANCE_PRIMARY and
388
INSTANCE_SECONDARY refer to the nodes that were repectively primary
389
and secondary before migration.
390

    
391
:directory: instance-migrate
392
:env. vars: MIGRATE_LIVE, MIGRATE_CLEANUP, OLD_PRIMARY, OLD_SECONDARY, NEW_PRIMARY, NEW_SECONDARY
393
:pre-execution: master node, primary and secondary nodes
394
:post-execution: master node, primary and secondary nodes
395

    
396

    
397
OP_INSTANCE_REMOVE
398
++++++++++++++++++
399

    
400
Remove an instance.
401

    
402
:directory: instance-remove
403
:env. vars: SHUTDOWN_TIMEOUT
404
:pre-execution: master node
405
:post-execution: master node, primary and secondary nodes
406

    
407
OP_INSTANCE_GROW_DISK
408
+++++++++++++++++++++
409

    
410
Grows the disk of an instance.
411

    
412
:directory: disk-grow
413
:env. vars: DISK, AMOUNT
414
:pre-execution: master node, primary and secondary nodes
415
:post-execution: master node, primary and secondary nodes
416

    
417
OP_INSTANCE_RENAME
418
++++++++++++++++++
419

    
420
Renames an instance.
421

    
422
:directory: instance-rename
423
:env. vars: INSTANCE_NEW_NAME
424
:pre-execution: master node, primary and secondary nodes
425
:post-execution: master node, primary and secondary nodes
426

    
427
OP_INSTANCE_MOVE
428
++++++++++++++++
429

    
430
Move an instance by data-copying.
431

    
432
:directory: instance-move
433
:env. vars: TARGET_NODE, SHUTDOWN_TIMEOUT
434
:pre-execution: master node, primary and target nodes
435
:post-execution: master node, primary and target nodes
436

    
437
OP_INSTANCE_RECREATE_DISKS
438
++++++++++++++++++++++++++
439

    
440
Recreate an instance's missing disks.
441

    
442
:directory: instance-recreate-disks
443
:env. vars: only the standard instance vars
444
:pre-execution: master node, primary and secondary nodes
445
:post-execution: master node, primary and secondary nodes
446

    
447
OP_INSTANCE_REPLACE_DISKS
448
+++++++++++++++++++++++++
449

    
450
Replace the disks of an instance.
451

    
452
:directory: mirrors-replace
453
:env. vars: MODE, NEW_SECONDARY, OLD_SECONDARY
454
:pre-execution: master node, primary and new secondary nodes
455
:post-execution: master node, primary and new secondary nodes
456

    
457
OP_INSTANCE_CHANGE_GROUP
458
++++++++++++++++++++++++
459

    
460
Moves an instance to another group.
461

    
462
:directory: instance-change-group
463
:env. vars: TARGET_GROUPS
464
:pre-execution: master node
465
:post-execution: master node
466

    
467

    
468
Cluster operations
469
~~~~~~~~~~~~~~~~~~
470

    
471
OP_CLUSTER_POST_INIT
472
++++++++++++++++++++
473

    
474
This hook is called via a special "empty" LU right after cluster
475
initialization.
476

    
477
:directory: cluster-init
478
:env. vars: none
479
:pre-execution: none
480
:post-execution: master node
481

    
482
OP_CLUSTER_DESTROY
483
++++++++++++++++++
484

    
485
The post phase of this hook is called during the execution of destroy
486
operation and not after its completion.
487

    
488
:directory: cluster-destroy
489
:env. vars: none
490
:pre-execution: none
491
:post-execution: master node
492

    
493
OP_CLUSTER_VERIFY_GROUP
494
+++++++++++++++++++++++
495

    
496
Verifies all nodes in a group. This is a special LU with regard to
497
hooks, as the result of the opcode will be combined with the result of
498
post-execution hooks, in order to allow administrators to enhance the
499
cluster verification procedure.
500

    
501
:directory: cluster-verify
502
:env. vars: CLUSTER, MASTER, CLUSTER_TAGS, NODE_TAGS_<name>
503
:pre-execution: none
504
:post-execution: all nodes in a group
505

    
506
OP_CLUSTER_RENAME
507
+++++++++++++++++
508

    
509
Renames the cluster.
510

    
511
:directory: cluster-rename
512
:env. vars: NEW_NAME
513
:pre-execution: master-node
514
:post-execution: master-node
515

    
516
OP_CLUSTER_SET_PARAMS
517
+++++++++++++++++++++
518

    
519
Modifies the cluster parameters.
520

    
521
:directory: cluster-modify
522
:env. vars: NEW_VG_NAME
523
:pre-execution: master node
524
:post-execution: master node
525

    
526
Virtual operation :pyeval:`constants.FAKE_OP_MASTER_TURNUP`
527
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
528

    
529
This doesn't correspond to an actual op-code, but it is called when the
530
master IP is activated.
531

    
532
:directory: master-ip-turnup
533
:env. vars: MASTER_NETDEV, MASTER_IP, MASTER_NETMASK, CLUSTER_IP_VERSION
534
:pre-execution: master node
535
:post-execution: master node
536

    
537
Virtual operation :pyeval:`constants.FAKE_OP_MASTER_TURNDOWN`
538
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
539

    
540
This doesn't correspond to an actual op-code, but it is called when the
541
master IP is deactivated.
542

    
543
:directory: master-ip-turndown
544
:env. vars: MASTER_NETDEV, MASTER_IP, MASTER_NETMASK, CLUSTER_IP_VERSION
545
:pre-execution: master node
546
:post-execution: master node
547

    
548

    
549
Obsolete operations
550
~~~~~~~~~~~~~~~~~~~
551

    
552
The following operations are no longer present or don't execute hooks
553
anymore in Ganeti 2.0:
554

    
555
- OP_INIT_CLUSTER
556
- OP_MASTER_FAILOVER
557
- OP_INSTANCE_ADD_MDDRBD
558
- OP_INSTANCE_REMOVE_MDDRBD
559

    
560

    
561
Environment variables
562
---------------------
563

    
564
Note that all variables listed here are actually prefixed with *GANETI_*
565
in order to provide a clear namespace. In addition, post-execution
566
scripts receive another set of variables, prefixed with *GANETI_POST_*,
567
representing the status after the opcode executed.
568

    
569
Common variables
570
~~~~~~~~~~~~~~~~
571

    
572
This is the list of environment variables supported by all operations:
573

    
574
HOOKS_VERSION
575
  Documents the hooks interface version. In case this doesnt match
576
  what the script expects, it should not run. The documents conforms
577
  to the version 2.
578

    
579
HOOKS_PHASE
580
  One of *PRE* or *POST* denoting which phase are we in.
581

    
582
CLUSTER
583
  The cluster name.
584

    
585
MASTER
586
  The master node.
587

    
588
OP_CODE
589
  One of the *OP_* values from the list of operations.
590

    
591
OBJECT_TYPE
592
  One of ``INSTANCE``, ``NODE``, ``CLUSTER``.
593

    
594
DATA_DIR
595
  The path to the Ganeti configuration directory (to read, for
596
  example, the *ssconf* files).
597

    
598

    
599
Specialised variables
600
~~~~~~~~~~~~~~~~~~~~~
601

    
602
This is the list of variables which are specific to one or more
603
operations.
604

    
605
CLUSTER_IP_VERSION
606
  IP version of the master IP (4 or 6)
607

    
608
INSTANCE_NAME
609
  The name of the instance which is the target of the operation.
610

    
611
INSTANCE_BE_x,y,z,...
612
  Instance BE params. There is one variable per BE param. For instance, GANETI_INSTANCE_BE_auto_balance
613

    
614
INSTANCE_DISK_TEMPLATE
615
  The disk type for the instance.
616

    
617
NEW_DISK_TEMPLATE
618
  The new disk type for the instance.
619

    
620
INSTANCE_DISK_COUNT
621
  The number of disks for the instance.
622

    
623
INSTANCE_DISKn_SIZE
624
  The size of disk *n* for the instance.
625

    
626
INSTANCE_DISKn_MODE
627
  Either *rw* for a read-write disk or *ro* for a read-only one.
628

    
629
INSTANCE_HV_x,y,z,...
630
  Instance hypervisor options. There is one variable per option. For instance, GANETI_INSTANCE_HV_use_bootloader
631

    
632
INSTANCE_HYPERVISOR
633
  The instance hypervisor.
634

    
635
INSTANCE_NIC_COUNT
636
  The number of NICs for the instance.
637

    
638
INSTANCE_NICn_BRIDGE
639
  The bridge to which the *n* -th NIC of the instance is attached.
640

    
641
INSTANCE_NICn_IP
642
  The IP (if any) of the *n* -th NIC of the instance.
643

    
644
INSTANCE_NICn_MAC
645
  The MAC address of the *n* -th NIC of the instance.
646

    
647
INSTANCE_NICn_MODE
648
  The mode of the *n* -th NIC of the instance.
649

    
650
INSTANCE_OS_TYPE
651
  The name of the instance OS.
652

    
653
INSTANCE_PRIMARY
654
  The name of the node which is the primary for the instance. Note that
655
  for migrations/failovers, you shouldn't rely on this variable since
656
  the nodes change during the exectution, but on the
657
  OLD_PRIMARY/NEW_PRIMARY values.
658

    
659
INSTANCE_SECONDARY
660
  Space-separated list of secondary nodes for the instance. Note that
661
  for migrations/failovers, you shouldn't rely on this variable since
662
  the nodes change during the exectution, but on the
663
  OLD_SECONDARY/NEW_SECONDARY values.
664

    
665
INSTANCE_MEMORY
666
  The memory size (in MiBs) of the instance.
667

    
668
INSTANCE_VCPUS
669
  The number of virtual CPUs for the instance.
670

    
671
INSTANCE_STATUS
672
  The run status of the instance.
673

    
674
MASTER_CAPABLE
675
  Whether a node is capable of being promoted to master.
676

    
677
VM_CAPABLE
678
  Whether the node can host instances.
679

    
680
MASTER_NETDEV
681
  Network device of the master IP
682

    
683
MASTER_IP
684
  The master IP
685

    
686
MASTER_NETMASK
687
  Netmask of the master IP
688

    
689
INSTANCE_TAGS
690
  A space-delimited list of the instance's tags.
691

    
692
NODE_NAME
693
  The target node of this operation (not the node on which the hook
694
  runs).
695

    
696
NODE_PIP
697
  The primary IP of the target node (the one over which inter-node
698
  communication is done).
699

    
700
NODE_SIP
701
  The secondary IP of the target node (the one over which drbd
702
  replication is done). This can be equal to the primary ip, in case
703
  the cluster is not dual-homed.
704

    
705
FORCE
706
  This is provided by some operations when the user gave this flag.
707

    
708
IGNORE_CONSISTENCY
709
  The user has specified this flag. It is used when failing over
710
  instances in case the primary node is down.
711

    
712
ADD_MODE
713
  The mode of the instance create: either *create* for create from
714
  scratch or *import* for restoring from an exported image.
715

    
716
SRC_NODE, SRC_PATH, SRC_IMAGE
717
  In case the instance has been added by import, these variables are
718
  defined and point to the source node, source path (the directory
719
  containing the image and the config file) and the source disk image
720
  file.
721

    
722
NEW_SECONDARY
723
  The name of the node on which the new mirror component is being
724
  added (for replace disk). This can be the name of the current
725
  secondary, if the new mirror is on the same secondary. For
726
  migrations/failovers, this is the old primary node.
727

    
728
OLD_SECONDARY
729
  The name of the old secondary in the replace-disks command. Note that
730
  this can be equal to the new secondary if the secondary node hasn't
731
  actually changed. For migrations/failovers, this is the new primary
732
  node.
733

    
734
OLD_PRIMARY, NEW_PRIMARY
735
  For migrations/failovers, the old and respectively new primary
736
  nodes. These two mirror the NEW_SECONDARY/OLD_SECONDARY variables
737

    
738
EXPORT_MODE
739
  The instance export mode. Either "remote" or "local".
740

    
741
EXPORT_NODE
742
  The node on which the exported image of the instance was done.
743

    
744
EXPORT_DO_SHUTDOWN
745
  This variable tells if the instance has been shutdown or not while
746
  doing the export. In the "was shutdown" case, it's likely that the
747
  filesystem is consistent, whereas in the "did not shutdown" case,
748
  the filesystem would need a check (journal replay or full fsck) in
749
  order to guarantee consistency.
750

    
751
REMOVE_INSTANCE
752
  Whether the instance was removed from the node.
753

    
754
SHUTDOWN_TIMEOUT
755
  Amount of time to wait for the instance to shutdown.
756

    
757
TIMEOUT
758
  Amount of time to wait before aborting the op.
759

    
760
OLD_NAME, NEW_NAME
761
  Old/new name of the node group.
762

    
763
GROUP_NAME
764
  The name of the node group.
765

    
766
NEW_ALLOC_POLICY
767
  The new allocation policy for the node group.
768

    
769
CLUSTER_TAGS
770
  The list of cluster tags, space separated.
771

    
772
NODE_TAGS_<name>
773
  The list of tags for node *<name>*, space separated.
774

    
775
Examples
776
--------
777

    
778
The startup of an instance will pass this environment to the hook
779
script::
780

    
781
  GANETI_CLUSTER=cluster1.example.com
782
  GANETI_DATA_DIR=/var/lib/ganeti
783
  GANETI_FORCE=False
784
  GANETI_HOOKS_PATH=instance-start
785
  GANETI_HOOKS_PHASE=post
786
  GANETI_HOOKS_VERSION=2
787
  GANETI_INSTANCE_DISK0_MODE=rw
788
  GANETI_INSTANCE_DISK0_SIZE=128
789
  GANETI_INSTANCE_DISK_COUNT=1
790
  GANETI_INSTANCE_DISK_TEMPLATE=drbd
791
  GANETI_INSTANCE_MEMORY=128
792
  GANETI_INSTANCE_NAME=instance2.example.com
793
  GANETI_INSTANCE_NIC0_BRIDGE=xen-br0
794
  GANETI_INSTANCE_NIC0_IP=
795
  GANETI_INSTANCE_NIC0_MAC=aa:00:00:a5:91:58
796
  GANETI_INSTANCE_NIC_COUNT=1
797
  GANETI_INSTANCE_OS_TYPE=debootstrap
798
  GANETI_INSTANCE_PRIMARY=node3.example.com
799
  GANETI_INSTANCE_SECONDARY=node5.example.com
800
  GANETI_INSTANCE_STATUS=down
801
  GANETI_INSTANCE_VCPUS=1
802
  GANETI_MASTER=node1.example.com
803
  GANETI_OBJECT_TYPE=INSTANCE
804
  GANETI_OP_CODE=OP_INSTANCE_STARTUP
805
  GANETI_OP_TARGET=instance2.example.com
806

    
807
.. vim: set textwidth=72 :
808
.. Local Variables:
809
.. mode: rst
810
.. fill-column: 72
811
.. End: