diff options
author | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2014-12-04 15:55:56 +0000 |
---|---|---|
committer | Pedro Alvarez <pedro.alvarez@codethink.co.uk> | 2014-12-10 10:48:24 +0000 |
commit | 56200c41fbd573e0905d51217f45246d356e00a0 (patch) | |
tree | 362263dbdd5751878733b1df600da93317f5e185 /installer.configure | |
parent | 02456901e3e0a0ed30760c986d1e265259f8da99 (diff) | |
download | definitions-56200c41fbd573e0905d51217f45246d356e00a0.tar.gz |
Add the ability to deploy installer systems and add examples.
The installer-x86_64 system is a system that can be used to install other
systems in an storage device. This system is intended to be booted by usb,
pxeboot... to install a Baserock system in your local disk.
The installer system requires the installer.configure extension to generate
a configuration file located in /etc/install.conf. With this extension
you can specify the following variables in a cluster morphology:
- INSTALLER_TARGET_STORAGE_DEVICE: Target storage device to install the
Baserock system.
- INSTALLER_ROOTFS_TO_INSTALL: The location of the root filesystem that
is going to be installed.
- INSTALLER_POST_INSTALL_COMMAND: Commands that will be run after the
installation finishes. It defaults to `reboot -f`.
The installer-utils stratum is required to contain the installer-scripts
chunk. This chunk contains the installer script that is going to be
installed in /usr/lib/installer/installer.py
The clusters/installer-build-system-x86_64.morph file defines the deployment
of a installer system as a rawdisk image. This installer system will
install a build-system-x86_64 located in /rootfs into the /dev/sda device.
Also this cluster defines a subsystem which is the build-system that
is going to end up in /rootfs on the installer system.
Diffstat (limited to 'installer.configure')
-rwxr-xr-x | installer.configure | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/installer.configure b/installer.configure new file mode 100755 index 00000000..a77dc851 --- /dev/null +++ b/installer.configure @@ -0,0 +1,48 @@ +#!/usr/bin/python +# +# Copyright (C) 2014 Codethink Limited +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +# +# This is a "morph deploy" configuration extension to configure an installer +# system. It will create the configuration needed in the installer system +# to perform an installation. It uses the following variables from the +# environment: +# +# * INSTALLER_TARGET_STORAGE_DEVICE +# * INSTALLER_ROOTFS_TO_INSTALL +# * INSTALLER_POST_INSTALL_COMMAND (optional, defaults to `reboot -f`) + +import os +import sys +import yaml + +install_config_file = os.path.join(sys.argv[1], 'etc', 'install.conf') + +try: + installer_configuration = { + 'INSTALLER_TARGET_STORAGE_DEVICE': os.environ['INSTALLER_TARGET_STORAGE_DEVICE'], + 'INSTALLER_ROOTFS_TO_INSTALL': os.environ['INSTALLER_ROOTFS_TO_INSTALL'], + } +except KeyError as e: + print "Not configuring as an installer system" + sys.exit(0) + +postinstkey = 'INSTALLER_POST_INSTALL_COMMAND' +installer_configuration[postinstkey] = os.environ.get(postinstkey, 'reboot -f') + +with open(install_config_file, 'w') as f: + f.write( yaml.dump(installer_configuration, default_flow_style=False) ) + +print "Configuration of the installer system in %s" % install_config_file |