From 56200c41fbd573e0905d51217f45246d356e00a0 Mon Sep 17 00:00:00 2001 From: Pedro Alvarez Date: Thu, 4 Dec 2014 15:55:56 +0000 Subject: 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. --- installer.configure | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100755 installer.configure (limited to 'installer.configure') 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 -- cgit v1.2.1