分类: LINUX
2010-11-17 11:24:56
The apk-*-linux-ub versions are compatible with the following OS distros:
To install APK you need either:
The image must be with the ext3 file system, if the APK-provided kernel and initrd files will be used.
IMPORTANT: the Linux versions of APK support only PVM virtual machine setup, using the AppLogic-provided build of the Linux kernel. The install script will erase any GRUB configuration file found on the target image, making it un-bootable in HVM mode. Saving the GRUB file (and not erasing the default OS kernel as documented below) may allow using APK on an HVM Linux domain, but this is not supported and is not guaranteed to work. In particular, clean appliance shutdown will not work in HVM mode.
The following steps may vary, depending on how the OS was originally installed. They are not performed by the APK setup script, and are left to the discretion of the operator, because some of them are invasive and may be destructive, if accidentally done on a live system (rather than on the image being prepared) - therefore running them in an automated script may be indadvisable.
Skip any steps that are not appropriate.
/etc/network/interfaces
) and remove all interfaces except 'lo'.
etc/fstab
file and change the name of the root device to be /dev/hda1
. This is important , the installer will also check and print a warning if it finds the root device is specified by label or by UUID.
apt-get install libc6-i386
). The APK binaries are 32-bit, they will not run without the 32-bit libraries. Note:
if you need to run other 32-bit executables besides those in APK
itself, consider installing the ia32-libs meta-package - it installs all
packages containing 32-bit libraries.
NOTE: After it is cleaned up, the volume may be 'shrunk' to produce a smaller boot volume image for the appliance, however ensure that at least 10-15MB of free space is left, to have space for installing the XEN DomU kernel and APK, as well as to have some headroom for log files, temporary files, etc.
APK uses a simple initial ramdisk image (initrd) created with the RedHat 'nash' bootstrap program. It does not load any kernel modules and its only purpose is to set up the ramdisk-based /dev/ directory for the 'udev' program an populate it.
It works fine in booting a Ubuntu-based virtual
appliance and there is no need to create a "ubuntu-style" initrd image
for the appliance. The Ubuntu 6/7 initrd images are heavier and have
more advanced functionality, which isn't necessary in most appliances.
If desired, a Ubuntu-specific initrd file can be created and used.
Simply edit the /boot/grub/menu.lst file to point to an alternate initrd
image. Note that this change will have to be re-applied should you
re-install APK in the future.
Note:
The installation instructions given here assume that APK install is being done an OS image that is not actually running, but has been prepared ahead of time, either by installing a clean OS, shutting it down and taking the boot disk image, or an existing AppLogic appliance is being upgraded with a new version of APK.
Live install (on a running OS) is also possible, and can be used with the 'iso2class' utility provided in AppLogic 2.4.5 and later. Note however that 'iso2class' will create an HVM appliance for you, and APK does not work in HVM mode; the appliance has to be changed to Paravirtualized mode after APK is installed. To install on a live system, follow the steps below, but use / as the current directory for all operations. This is best done in a XEN virtual machine (e.g., using 'iso2class'), doing this on a bare-metal system will result in an unbootable machine.
Have the OS image mounted in your file system. If the image is already installed as a volume on an AppLogic grid, it can be accessed using the 'vol manage' command. Copy the APK files to the /tmp directory on the image itself or to a temporary directory on the host where the image is mounted. If the image is already on a grid, copy the files to the image itself using the Web interface. (If not doing this on a grid: note that the following operations must be done as user 'root'.)
Transitional Note: The prototype Ubuntu appliance created for AppLogic 2.3.0 does not have the 'wget' program installed. APK requires wget for its operation. Make sure that 'wget' is installed.
Un-pack the DomU kernel and the APK binary archive into the root directory of the image, .e.g:
cd /mnt/vol
tar -zxf tmp/domu-linux-2.6.18.8.i386.tar.gz
tar -zxf tmp/apk-2.0.14-ub.tar.gz
Make sure to use the correct domu-linux archive for your distro architecture! Installing a 32-bit kernel will not work on a 64-bit distro.
The setup script will be unpacked into the ./tmp directory. Run the setup script::
tmp/apk-install
Note that the APK-supplied init scripts no longer support appliance-specific scripts installed in "/appliance". If it is present, the install script will stop and prompt for user input. If no appliance-specific customization was done in this directory (i.e., its contents are the same or similar to what is found on LUX), it is safe to delete it. All of the standard functionality that used to be installed there is now provided by APK. Otherwise, choose "save to /tmp" and proceed with the install. See details on customizing APK further below.
The setup script (and the tar files, if they were copied to the image itself) can be removed now:
rm tmp/apk-install = =tmp/domu-linux-*.tar.gz
= tmp/apk-*.tar.gz=
Un-mount the image and import it to your AppLogic grid (or just close the 'vol manage' shell, if the image was already on your grid and was edited using 'vol manage').
If the image was that of an existing appliance: edit the class (using the GUI editor) and remove the kernel and initrd file names. Set the configuration mode to 'dhcp'.
For full details please refer to the User Guide.
If the file /etc/sysconfig/applogic_init
is present, the APK init script reads it as a shell include script
(with the "." command). The following parameters can be defined in /etc/sysconfig/applogic_init
:
APK_AUTH_KEY_PATH |
location in which to store the appliance SSH access public key. The '3t
comp ssh' command connects to appliances using the matching private
key. Default is /root/.ssh. If set to an empty string, the key will not
be stored anywhere. If the specifiled location is an existing file, its owner and permissions will be preserved. Otherwise the file will be created with owner 'root'. |
APK_CONFIG_FILES |
space-separated list of files to which to apply appliance properties.
This replaces the config file list specified in the "Edit Class" dialog
in the GUI (for appliances that are not using APK). An appliance
outfitted with APK will use the APK_CONFIG_FILES list found on the
appliance itself, not the list specified in the GUI. Important: if installing APK in an existing appliance - check in the class descriptor (using the editor GUI) for the presence of configuration files in the "Config Files" tab found in the View Class / Edit Class dialog. Transfer the list of files to the APK_CONFIG_FILES setting in the appliance. |
Important: the /etc/sysconfig/applogic_init file is executed before any configuration data is retrieved or or applied, therefore the script cannot rely on the presence of any of the appliance's configuration files. Do not use this file for executing initialization code, only for the configuration variables defined above.
Example /etc/sysconfig/applogic_init:
APK_CONFIG_FILES=/etc/httpd/conf.d/myconfig.conf
APK_AUTH_KEY_PATH=/root/.ssh/alternate_keys
If the file /etc/sysconfig/applogic_appliance
is present, the APK "late init" script reads it as a shell include
script (with the "." command), after all services on the appliance have
been started. The return status from the script indicates whether the
appliance is to be considered "started OK" or "failed". If the script
prints a message to stderr and returns an error, the last line from this
message will be used as the error message sent to the controller.
Example post-start check file, for a Web server appliance - verifies that the server is up and responds to HTTP GET to the home page:
if ! wget -q -O /dev/null ; then
echo "start failed - Web server is not responding" >&2
return 1
fi
return 0
Important: some appliances in the system catalog use a customized script located in /appliance
to initialize services. This is no longer supported. This directory is
deleted when APK is installed, to keep the root directory structure
clean and compliant with the Filesystem Hierarchy Standard. One could
move the code from such scripts to /etc/sysconfig/applogic_appliance
, to emulate the old behavior but this is not the intention of the
post-start check file and is not recommended. Instead, an installed
service should have its own init script and in general should be able to
operate entirely outside of AppLogic.