summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-12-18 10:39:22 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-12-18 10:39:22 +0000
commit8e319db777ccb11ae565293e5c86919192fb459b (patch)
tree02be8458d8ba31ea6a6071df279b30057f4c1fcb
parentc57952ef44a0f1f161441970fcf2f27a39b0de7c (diff)
parente22bd056920d936caf66a24554e4c3e31157d13c (diff)
downloadmorph-8e319db777ccb11ae565293e5c86919192fb459b.tar.gz
Merge remote-tracking branch 'petefoth/petefoth/generic-params2'
Reviewed-By: James Thomas <james.thomas@codethink.co.uk> Reviewed-By: Sam Thursfield <sam.thursfield@codethink.co.uk>
-rw-r--r--morphlib/exts/kvm.write.help31
-rwxr-xr-xmorphlib/exts/nfsboot.write13
-rw-r--r--morphlib/exts/nfsboot.write.help9
-rw-r--r--morphlib/exts/rawdisk.write.help30
-rw-r--r--morphlib/exts/virtualbox-ssh.write.help30
-rw-r--r--morphlib/writeexts.py27
6 files changed, 125 insertions, 15 deletions
diff --git a/morphlib/exts/kvm.write.help b/morphlib/exts/kvm.write.help
index 26a54d9c..04393b8a 100644
--- a/morphlib/exts/kvm.write.help
+++ b/morphlib/exts/kvm.write.help
@@ -42,6 +42,35 @@ help: |
* AUTOSTART=<VALUE>` - boolean. If it is set, the VM will be started when
it has been deployed.
+ * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree
+ binary - Give the full path (without a leading /) to the location of the
+ DTB in the built system image . The deployment will fail if `path` does
+ not exist.
+
+ * BOOTLOADER_INSTALL=value: the bootloader to be installed
+ **(MANDATORY)** for non-x86 systems
+
+ allowed values =
+ - 'extlinux' (default) - the extlinux bootloader will
+ be installed
+ - 'none' - no bootloader will be installed by `morph deploy`. A
+ bootloader must be installed manually. This value must be used when
+ deploying non-x86 systems such as ARM.
+
+ * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used.
+ If not specified for x86-32 and x86-64 systems, 'extlinux' will be used
+
+ allowed values =
+ - 'extlinux'
+
+ * KERNEL_ARGS=args: optional additional kernel command-line parameters to
+ be appended to the default set. The default set is:
+
+ 'rw init=/sbin/init rootfstype=btrfs \
+ rootflags=subvol=systems/default/run \
+ root=[name or UUID of root filesystem]'
+
+ (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt)
+
(See `morph help deploy` for details of how to pass parameters to write
extensions)
-
diff --git a/morphlib/exts/nfsboot.write b/morphlib/exts/nfsboot.write
index 8d3d6df7..49d71174 100755
--- a/morphlib/exts/nfsboot.write
+++ b/morphlib/exts/nfsboot.write
@@ -17,6 +17,16 @@
'''A Morph deployment write extension for deploying to an nfsboot server
+*** DO NOT USE ***
+- This was written before 'proper' deployment mechanisms were in place
+It is unlikely to work at all and will not work correctly
+
+Use the pxeboot write extension instead
+
+***
+
+
+
An nfsboot server is defined as a baserock system that has tftp and nfs
servers running, the tftp server is exporting the contents of
/srv/nfsboot/tftp/ and the user has sufficient permissions to create nfs roots
@@ -125,7 +135,7 @@ class NFSBootWriteExtension(morphlib.writeexts.WriteExtension):
self.status(msg='Creating destination directories')
try:
- cliapp.ssh_runcmd('root@%s' % location,
+ cliapp.ssh_runcmd('root@%s' % location,
['mkdir', '-p', orig_path, run_path])
except cliapp.AppException:
raise cliapp.AppException('Could not create dirs %s and %s on %s'
@@ -191,4 +201,3 @@ mv "$temp" "$target"
NFSBootWriteExtension().run()
-
diff --git a/morphlib/exts/nfsboot.write.help b/morphlib/exts/nfsboot.write.help
index 598b1b23..310fd7a4 100644
--- a/morphlib/exts/nfsboot.write.help
+++ b/morphlib/exts/nfsboot.write.help
@@ -1,6 +1,13 @@
help: |
+ *** DO NOT USE ***
+ - This was written before 'proper' deployment mechanisms were in place.
+ It is unlikely to work at all, and will not work correctly.
+
+ Use the pxeboot write extension instead
+
+ ***
Deploy a system image and kernel to an nfsboot server.
-
+
An nfsboot server is defined as a baserock system that has
tftp and nfs servers running, the tftp server is exporting
the contents of /srv/nfsboot/tftp/ and the user has sufficient
diff --git a/morphlib/exts/rawdisk.write.help b/morphlib/exts/rawdisk.write.help
index 81f35024..54af81c4 100644
--- a/morphlib/exts/rawdisk.write.help
+++ b/morphlib/exts/rawdisk.write.help
@@ -34,5 +34,35 @@ help: |
* INITRAMFS_PATH=path: the location of an initramfs for the bootloader to
tell Linux to use, rather than booting the rootfs directly.
+ * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree
+ binary - Give the full path (without a leading /) to the location of the
+ DTB in the built system image . The deployment will fail if `path` does
+ not exist.
+
+ * BOOTLOADER_INSTALL=value: the bootloader to be installed
+ **(MANDATORY)** for non-x86 systems
+
+ allowed values =
+ - 'extlinux' (default) - the extlinux bootloader will
+ be installed
+ - 'none' - no bootloader will be installed by `morph deploy`. A
+ bootloader must be installed manually. This value must be used when
+ deploying non-x86 systems such as ARM.
+
+ * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used.
+ If not specified for x86-32 and x86-64 systems, 'extlinux' will be used
+
+ allowed values =
+ - 'extlinux'
+
+ * KERNEL_ARGS=args: optional additional kernel command-line parameters to
+ be appended to the default set. The default set is:
+
+ 'rw init=/sbin/init rootfstype=btrfs \
+ rootflags=subvol=systems/default/run \
+ root=[name or UUID of root filesystem]'
+
+ (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt)
+
(See `morph help deploy` for details of how to pass parameters to write
extensions)
diff --git a/morphlib/exts/virtualbox-ssh.write.help b/morphlib/exts/virtualbox-ssh.write.help
index b4c59553..cb50acc0 100644
--- a/morphlib/exts/virtualbox-ssh.write.help
+++ b/morphlib/exts/virtualbox-ssh.write.help
@@ -41,6 +41,36 @@ help: |
* INITRAMFS_PATH=path: the location of an initramfs for the bootloader to
tell Linux to use, rather than booting the rootfs directly.
+ * DTB_PATH=path: **(MANDATORY)** for systems that require a device tree
+ binary - Give the full path (without a leading /) to the location of the
+ DTB in the built system image . The deployment will fail if `path` does
+ not exist.
+
+ * BOOTLOADER_INSTALL=value: the bootloader to be installed
+ **(MANDATORY)** for non-x86 systems
+
+ allowed values =
+ - 'extlinux' (default) - the extlinux bootloader will
+ be installed
+ - 'none' - no bootloader will be installed by `morph deploy`. A
+ bootloader must be installed manually. This value must be used when
+ deploying non-x86 systems such as ARM.
+
+ * BOOTLOADER_CONFIG_FORMAT=value: the bootloader format to be used.
+ If not specified for x86-32 and x86-64 systems, 'extlinux' will be used
+
+ allowed values =
+ - 'extlinux'
+
+ * KERNEL_ARGS=args: optional additional kernel command-line parameters to
+ be appended to the default set. The default set is:
+
+ 'rw init=/sbin/init rootfstype=btrfs \
+ rootflags=subvol=systems/default/run \
+ root=[name or UUID of root filesystem]'
+
+ (See https://www.kernel.org/doc/Documentation/kernel-parameters.txt)
+
* AUTOSTART=<VALUE> - boolean. If it is set, the VM will be started when
it has been deployed.
diff --git a/morphlib/writeexts.py b/morphlib/writeexts.py
index 91936f64..6ab2dd55 100644
--- a/morphlib/writeexts.py
+++ b/morphlib/writeexts.py
@@ -83,14 +83,14 @@ class Fstab(object):
class WriteExtension(cliapp.Application):
'''A base class for deployment write extensions.
-
+
A subclass should subclass this class, and add a
``process_args`` method.
-
+
Note that it is not necessary to subclass this class for write
extensions. This class is here just to collect common code for
write extensions.
-
+
'''
def setup_logging(self):
@@ -125,13 +125,13 @@ class WriteExtension(cliapp.Application):
def status(self, **kwargs):
'''Provide status output.
-
+
The ``msg`` keyword argument is the actual message,
the rest are values for fields in the message as interpolated
by %.
-
+
'''
-
+
self.output.write('%s\n' % (kwargs['msg'] % kwargs))
self.output.flush()
@@ -184,9 +184,9 @@ class WriteExtension(cliapp.Application):
def _parse_size(self, size):
'''Parse a size from a string.
-
+
Return size in bytes.
-
+
'''
m = re.match('^(\d+)([kmgKMG]?)$', size)
@@ -474,6 +474,12 @@ class WriteExtension(cliapp.Application):
self.status(msg='Creating extlinux.conf')
config = os.path.join(real_root, 'extlinux.conf')
+
+ ''' Please also update the documentation in the following files
+ if you change these default kernel args:
+ - kvm.write.help
+ - rawdisk.write.help
+ - virtualbox-ssh.write.help '''
kernel_args = (
'rw ' # ro ought to work, but we don't test that regularly
'init=/sbin/init ' # default, but it doesn't hurt to be explicit
@@ -545,9 +551,8 @@ class WriteExtension(cliapp.Application):
'''Does the user want to generate a bootloader config?
The user may set $BOOTLOADER_CONFIG_FORMAT to the desired
- format (u-boot or extlinux). If not set, extlinux is the
- default but will be generated on x86-32 and x86-64, but not
- otherwise.
+ format. 'extlinux' is the only allowed value, and is the default
+ value for x86-32 and x86-64.
'''