[arch-general] Generating Arch OpenStack images

Sebastian Pipping sebastian at pipping.org
Tue Jun 23 01:57:37 UTC 2015


Hello Victor,


On 21.06.2015 12:50, Victor Dmitriyev wrote:
> Arch is highly configurable so it's assumed that you build a system for
> your needs by yourself.

in general: yes.  However, the requirements on OpenStack images [6] are
rather strict, e.g. a single partition with an ext3/4 file system and
using cloud-init.  So the base would be the same for any OpenStack image
playing by the rules.  You could build that base manually, or you could
use a tool and do that (with HTTP caching) in about 90 seconds.  With
that minimal base, you can still configure the system to your very
needs.  I think it's no different to Debian or Gentoo, in that regard.


>> I have been working on a tool called image-bootstrap [4] for a while,
>> originally aimed at creating virtual machine images for Debian and
>> Ubuntu.  Recently, I have added Arch Linux support to image-bootstrap
>> (and created an Arch equivalent of Debian's debootstrap [5] called
>> "directory-bootstrap" in the process, same code base).
> 
> There is pacstrap utility. I think it is official equivalent of
> debootstrap AND it is maintained by Arch developers.

directory-bootstrap is actually using pacstrap internally.  While
debootstrap can be used on a non-Debian flavor of Linux, pacstrap seems
to require that Arch chroot that [9] is teaching users to build.
directory-bootstrap is like a wrapper around pacstrap making it work
from non-Arch distributions.


>> To give access to the full disk space to users, OpenStack images are
>> prepared to do the following:
>>
>>   1. During early boot (initramfs time), the one and only partition is
>>      enlarged to the full size of the disk.
>>
>>   2. during normal boot, cloud-init is running resize2fs to enlarge
>>      the ext4 root file system to the new size of that partition.
>>
>> It's a little crazy, but it works: the user hardly notices.
>>
>> In Debian, apart from cloud-init that magic is done by packages
>> cloud-utils and cloud-initramfs-growroot of cloud-initramfs-tools [7].
>> While Arch does have cloud-init, I find cloud-utils in AUR only and no
>> cloud-initramfs-growroot at all.
> 
> It seems that cloud-init can perform this task by itself
> (https://wiki.archlinux.org/index.php/Cloud-init#Other_sections_in_cloud.cfg).

cloud-init is calling resize2fs (if configured to do so) but it cannot
grow the partition.  That has to be done in the initramfs before
mounting.  So cloud-init relies on an enlarged partition to do the
resize2fs work.  However, unlike with Debian, mkinitcpio-growrootfs is
calling resize2fs itself already so cloud-init does not seem to have
much to resize any more in Arch.


> There is also mkinitcpio-growrootfs
> (https://aur.archlinux.org/packages/mkinitcpio-growrootfs/). It's
> probably what you were looking for but it looks like package is not
> supported by its developer anymore. So you probably shouldn't use this
> mkinitcpio hook.

Just what I was looking for, excellent pointer.  It seems there are two
more alive forks of that:

 * https://github.com/aryklein/mkinitcpio-growrootfs/

 *
http://git.uplinklabs.net/snoonan/projects/archlinux/ec2/ec2-packages.git/tree/mkinitcpio-growrootfs

I still need to have a closer look at those.
I would love to see something like that in the master repository of Arch.


> The cloud-utils package right now is in official repositories
> (https://www.archlinux.org/packages/community/any/cloud-init/), how you
> missed that?

I wrote "[w]hile Arch does have cloud-init".  I didn't miss it.


>> There is yet something else: Trust.  Anyone can make images and upload
>> them but who is going to trust the image if it is not signed by a person
>> that they trust?
>> There is a group of five people in the Arch master signing keys [8].
>> One of them created, signed and uploaded the
>> archlinux-bootstrap-*.tar.gz files that users rely on.  My hope is that
>> one of these five is willing to use image-bootstrap [4] to create, sign
>> and upload OpenStack images as well.
> 
> archlinux-bootstrap-*.tar.gz files are meant for installation of
> Archlinux from a computer running another Linux distribution
> (https://wiki.archlinux.org/index.php/Install_from_existing_Linux#Method_B:_Using_the_Bootstrap_Image_.28recommended.29),
> so, of course, Arch developers sign this installation medium.

I'm very happy that they do.


> In my opinion, official Arch OpenStack images is pointless because what
> point in server image that you need to configure anyway?

Creating an OpenStack images manually takes debugging and time to figure
things out.  That alone may be a reason why some people would either use
something ready to use or to save the trouble altogether.  I don't see
why people would want OpenStack images for Debian, Ubuntu, CentOS,
Fedora, Gentoo, but not Arch Linux.


>> [6]
>> http://docs.openstack.org/image-guide/content/ch_openstack_images.html

[9]
https://wiki.archlinux.org/index.php/Install_from_existing_Linux#Creating_the_chroot


> In conclusion, I have an impression that you miss the point of Arch, so
> I point you towards the ArchWiki again:
> Arch Linux -- https://wiki.archlinux.org/index.php/Arch_Linux
> The Arch Way -- https://wiki.archlinux.org/index.php/The_Arch_Way
> Installation guide --
> https://wiki.archlinux.org/index.php/Installation_guide
> cloud-init -- https://wiki.archlinux.org/index.php/Cloud-init
> and, in general, the ArchWiki has a lot of useful information.

Which point of Arch did I miss?
I'm aware about its rolling release nature and that some people may want
to avoid rolling release distros in a cloud or any server context.  Some
do and some don't.

Best,



Sebastian


More information about the arch-general mailing list