5
0
mirror of git://git.proxmox.com/git/pve-docs.git synced 2025-01-03 01:17:49 +03:00

add documentation about snippet content-type and hookscripts

also add an example perl hookscript, that documents the phases
and arguments

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2019-01-31 14:33:41 +01:00 committed by Thomas Lamprecht
parent 1a58a3c916
commit c2c8eb89d1
10 changed files with 99 additions and 11 deletions

View File

@ -186,12 +186,14 @@ gen-install: $(GEN_DEB_SOURCES) asciidoc-pve asciidoc/mediawiki.conf
install -m 0644 asciidoc/pve-html.conf $(DESTDIR)/usr/share/${GEN_PACKAGE}/asciidoc/
.PHONY: doc-install
doc-install: index.html $(WIKI_IMPORTS) $(API_VIEWER_SOURCES) verify-images
doc-install: index.html $(WIKI_IMPORTS) $(API_VIEWER_SOURCES) verify-images guest-example-hookscript.pl
install -dm755 $(DESTDIR)/usr/share/$(DOC_PACKAGE)
install -dm755 $(DESTDIR)/usr/share/doc/$(DOC_PACKAGE)
# install files for pvedocs package
install -dm755 $(DESTDIR)/usr/share/${DOC_PACKAGE}
install -dm755 $(DESTDIR)/usr/share/doc/${DOC_PACKAGE}
install -dm755 $(DESTDIR)/usr/share/${DOC_PACKAGE}/examples/
install -m 755 guest-example-hookscript.pl $(DESTDIR)/usr/share/${DOC_PACKAGE}/examples/
install -m 0644 index.html ${INDEX_INCLUDES} $(DESTDIR)/usr/share/${DOC_PACKAGE}
install -m 0644 ${WIKI_IMPORTS} $(DESTDIR)/usr/share/${DOC_PACKAGE}
# install images

61
guest-example-hookscript.pl Executable file
View File

@ -0,0 +1,61 @@
#!/usr/bin/perl
# Exmple hook script for PVE guests (hookscript config option)
# You can set this via pct/qm with
# pct set <vmid> -hookscript <volume-id>
# qm set <vmid> -hookscript <volume-id>
# where <volume-id> has to be an executable file in the snippets folder
# of any storage with directories e.g.:
# qm set 100 -hookscript local:snippets/hookscript.pl
use strict;
use warnings;
print "GUEST HOOK: " . join(' ', @ARGV). "\n";
# First argument is the vmid
my $vmid = shift;
# Second argument is the phase
my $phase = shift;
if ($phase eq 'pre-start') {
# First phase 'pre-start' will be executed before the guest
# ist started. Exiting with a code != 0 will abort the start
print "$vmid is starting, doing preparations.\n";
# print "preparations failed, aborting."
# exit(1);
} elsif ($phase eq 'post-start') {
# Second phase 'post-start' will be executed after the guest
# successfully started.
print "$vmid started successfully.\n";
} elsif ($phase eq 'pre-stop') {
# Third phase 'pre-stop' will be executed before stopping the guest
# via the API. Will not be executed if the guest is stopped from
# within e.g., with a 'poweroff'
print "$vmid will be stopped.\n";
} elsif ($phase eq 'post-stop') {
# Last phase 'post-stop' will be executed after the guest stopped.
# This should even be executed in case the guest crashes or stopped
# unexpectedly.
print "$vmid stopped. Doing cleanup.\n";
} else {
die "got unknown phase '$phase'\n";
}
exit(0);

View File

@ -590,6 +590,16 @@ start after those where the parameter is set, and this parameter only
makes sense between the machines running locally on a host, and not
cluster-wide.
Hookscripts
~~~~~~~~~~~
You can add a hook script to CTs with the config property `hookscript`.
pct set 100 -hookscript local:snippets/hookscript.pl
It will be called during various phases of the guests lifetime.
For an example and documentation see the example script under
`/usr/share/pve-docs/examples/guest-example-hookscript.pl`.
Backup and Restore
------------------

View File

@ -89,8 +89,8 @@ The `cephfs` backend is a POSIX-compliant filesystem on top of a Ceph cluster.
.Storage features for backend `cephfs`
[width="100%",cols="m,m,3*d",options="header"]
|==============================================================================
|Content types |Image formats |Shared |Snapshots |Clones
|vztmpl iso backup |none |yes |yes^[1]^ |no
|Content types |Image formats |Shared |Snapshots |Clones
|vztmpl iso backup snippets |none |yes |yes^[1]^ |no
|==============================================================================
^[1]^ Snapshots, while no known bugs, cannot be guaranteed to be stable yet, as
they lack testing.

View File

@ -79,8 +79,8 @@ features available.
.Storage features for backend `cifs`
[width="100%",cols="m,m,3*d",options="header"]
|==============================================================================
|Content types |Image formats |Shared |Snapshots |Clones
|images rootdir vztmpl iso backup |raw qcow2 vmdk |yes |qcow2 |qcow2
|Content types |Image formats |Shared |Snapshots |Clones
|images rootdir vztmpl iso backup snippets |raw qcow2 vmdk |yes |qcow2 |qcow2
|==============================================================================
Examples

View File

@ -39,6 +39,7 @@ storage backends.
|ISO images |`template/iso/`
|Container templates |`template/cache/`
|Backup files |`dump/`
|Snippets |`snippets/`
|===========================================================
@ -107,8 +108,8 @@ feature to create clones.
.Storage features for backend `dir`
[width="100%",cols="m,m,3*d",options="header"]
|==============================================================================
|Content types |Image formats |Shared |Snapshots |Clones
|images rootdir vztmpl iso backup |raw qcow2 vmdk subvol |no |qcow2 |qcow2
|Content types |Image formats |Shared |Snapshots |Clones
|images rootdir vztmpl iso backup snippets |raw qcow2 vmdk subvol |no |qcow2 |qcow2
|==============================================================================

View File

@ -66,8 +66,8 @@ snapshot/clone implementation.
.Storage features for backend `glusterfs`
[width="100%",cols="m,m,3*d",options="header"]
|==============================================================================
|Content types |Image formats |Shared |Snapshots |Clones
|images vztmpl iso backup |raw qcow2 vmdk |yes |qcow2 |qcow2
|Content types |Image formats |Shared |Snapshots |Clones
|images vztmpl iso backup snippets |raw qcow2 vmdk |yes |qcow2 |qcow2
|==============================================================================
ifdef::wiki[]

View File

@ -69,8 +69,8 @@ to implement snapshots and cloning.
.Storage features for backend `nfs`
[width="100%",cols="m,m,3*d",options="header"]
|==============================================================================
|Content types |Image formats |Shared |Snapshots |Clones
|images rootdir vztmpl iso backup |raw qcow2 vmdk |yes |qcow2 |qcow2
|Content types |Image formats |Shared |Snapshots |Clones
|images rootdir vztmpl iso backup snippets |raw qcow2 vmdk |yes |qcow2 |qcow2
|==============================================================================
Examples

View File

@ -211,6 +211,10 @@ iso:::
ISO images
snippets:::
Snippet files, for example guest hook scripts
shared::
Mark storage as shared.

10
qm.adoc
View File

@ -1030,6 +1030,16 @@ ifndef::wiki[]
include::qm-pci-passthrough.adoc[]
endif::wiki[]
Hookscripts
~~~~~~~~~~~
You can add a hook script to VMs with the config property `hookscript`.
qm set 100 -hookscript local:snippets/hookscript.pl
It will be called during various phases of the guests lifetime.
For an example and documentation see the example script under
`/usr/share/pve-docs/examples/guest-example-hookscript.pl`.
Managing Virtual Machines with `qm`
------------------------------------