Announcing TurnKey OpenStack optimized builds
Alon Swartz - Wed, 2012/02/01 - 13:51 - 20 comments

As we mentioned before, making TurnKey easy to deploy on as many public and private clouds is an important goal for us. Unfortunately there are too many players in the cloud software space for us to support every single one. It's much easier to put effort into making TurnKey work well with the winning horses.
TurnKey has been supported on the leading public cloud platform Amazon EC2 from early on, not to mention simplifying management and deployment via the Hub.
OpenStack is particularly interesting, because as it is most likely the future of open source clouds.
I originally got intrigued when I heard about NASA planning to open source Nebula in 2009, which has become the basis for Nova, the compute component in OpenStack. Since then, I've been following OpenStack development from a far and have been itching to develop support for TurnKey on the platform.
The time has finally arrived, and I'm pleased to announce TurnKey optimized builds are hot out of our build farm, and available for immediate download and deployment.
You can get them from the "Download -> More Builds" link on the appliance pages.
TurnKey OpenStack optimized builds
- EBS auto-mounting support: we've updated our custom EBSmount mechanism for OpenStack, which automatically mounts EBS devices when attached.
- Support for automating instance setup: via the user-data scripts mechanism.
- Automatic APT configuration on boot: saves bandwidth costs by using the closest package archive for maximum performance.
- SSH key support: instances that are launched with a key-pair will be configured accordingly.
- SSH host key fingerprints displayed in system log: verification of server to prevent man-in-the-middle (mitm) attacks.
- Randomly generated root password: is set on first boot, and displayed in the system log **.
- Randomly generated mysql/postgres passwords: the MySQL root and/or PostgreSQL postgres passwords are set to to the same random password as root **.
- Instance metadata python library and CLI: used internally, but useful for advanced users. (learn more).
** Because OpenStack builds are used in headless deployments (without a console), they include an inithook which preseeds default values, and random passwords:
/usr/lib/inithooks/firstboot.d/29preseed MASTERPASS=$(mcookie | cut --bytes 1-8) cat>$INITHOOKS_CONF<<EOF export ROOT_PASS=$MASTERPASS export DB_PASS=$MASTERPASS export APP_PASS=turnkey export APP_EMAIL=admin@example.com export APP_DOMAIN=DEFAULT export HUB_APIKEY=SKIP export SEC_UPDATES=FORCE
Depending on your use case, you can utilize user-data (note the security implications) to preseed during boot, or once the system has booted by executing turnkey-init.
Exemplary import of TurnKey Core on OpenStack
There are several ways of uploading an image into an OpenStack deployment, below is one way to get you started.
[update] Please note: apparently the 'glance add' command has apparently been depreciated. Please see Dmitry's post below.
# cd /tmp
# tar -zxf turnkey-core-11.3-lucid-x86-openstack.tar.gz
# ls turnkey-core-11.3-lucid-x86
turnkey-core-11.3-lucid-x86-initrd
turnkey-core-11.3-lucid-x86-kernel
turnkey-core-11.3-lucid-x86.img
# IMG=turnkey-core-11.3-lucid-x86
# glance add -A $GLANCE_TOKEN \
is_public=true \
container_format=aki \
disk_format=aki \
name="$IMG-kernel" \
< /tmp/$IMG/$IMG-kernel
Added new image with ID: 5
# KERNEL_ID=5
# glance add -A $GLANCE_TOKEN \
is_public=true \
container_format=ami \
disk_format=ami \
kernel_id=$KERNEL_ID \
name="$IMG" \
< /tmp/$IMG/$IMG.img
Added new image with ID: 6
# glance -A $GLANCE_TOKEN index
ID Name Disk Format Container Format Size
-- ---------------------------------- ----------- ---------------- ---------
6 turnkey-core-11.3-lucid-x86 ami ami 688498688
5 turnkey-core-11.3-lucid-x86-kernel aki aki 4179712
# euca-describe-images
IMAGE ami-00000006 turnkey-core-11.3-lucid-x86 available public machine aki-00000005
IMAGE aki-00000005 turnkey-core-11.3-lucid-x86-kernel available public kernel