Bootstrap Debian images for virtualized environments
Find a file
2015-04-16 22:15:19 +02:00
bootstrapvz Require Pyro4 >= 4.30 2015-04-16 22:15:19 +02:00
docs Remove bogus intro text from providers/index.rst 2015-04-12 15:42:43 +02:00
manifests Fix some links 2015-04-12 15:01:06 +02:00
tests VirtualBox integration 2015-04-16 22:15:19 +02:00
.gitignore Ignore build_servers.yml 2015-04-16 22:15:18 +02:00
.travis.yml Add Travis CI 2014-04-27 10:12:04 -03:00
bootstrap-vz Initial work on integration testing started. 2015-04-16 22:15:17 +02:00
bootstrap-vz-remote Little refactor 2015-04-16 22:15:17 +02:00
bootstrap-vz-server Initial work on integration testing started. 2015-04-16 22:15:17 +02:00
CHANGELOG.rst Include changelog in docs (converted it to rst) 2015-04-11 17:12:31 +02:00
CONTRIBUTING.rst Fix some links 2015-04-12 15:01:06 +02:00
LICENSE Add license 2014-04-02 21:26:14 +02:00
MANIFEST.in Add yml files to MANIFEST.in 2015-04-11 17:05:51 +02:00
README.rst Move developer doc stuff into developers/ subfolder 2015-04-12 15:12:37 +02:00
setup.py Depend on boto 2014-04-08 21:58:48 +02:00
tox.ini Require Pyro4 >= 4.30 2015-04-16 22:15:19 +02:00

Introduction
============

bootstrap-vz is a bootstrapping framework for Debian.
It is is specifically targeted at bootstrapping systems for virtualized environments.
bootstrap-vz runs without any user intervention and
generates ready-to-boot images for a number of virtualization
platforms.
Its aim is to provide a reproducable bootstrapping process using
`manifests <http://bootstrap-vz.readthedocs.org/en/master/manifest.html>`__
as well as supporting a high degree of customizability through plugins.

bootstrap-vz was coded from scratch in python once the bash script
architecture that was used in the
`build-debian-cloud <https://github.com/andsens/build-debian-cloud>`__
bootstrapper reached its limits.

Documentation
-------------

The documentation for bootstrap-vz is available at
`bootstrap-vz.readthedocs.org <http://bootstrap-vz.readthedocs.org/en/master>`__.
There, you can discover `what the
dependencies <http://bootstrap-vz.readthedocs.org/en/master/index.html#dependencies>`__
for a specific cloud provider are, `see a list of available
plugins <http://bootstrap-vz.readthedocs.org/en/master/plugins>`__ and
learn `how you create a
manifest <http://bootstrap-vz.readthedocs.org/en/master/manifest.html>`__.

Installation
------------

bootstrap-vz has a master branch for stable releases and a development
for, well, development.

After checking out the branch of your choice you can install the
python dependencies by running ``python setup.py install``. However,
depending on what kind of image you'd like to bootstrap, there are
other debian package dependencies as well, at the very least you will
need ``debootstrap``.
`The documentation <http://bootstrap-vz.readthedocs.org/en/master>`__
explains this in more detail.

Note that bootstrap-vz will tell you which tools it requires when they
aren't present (the different packages are mentioned in the error
message), so you can simply run bootstrap-vz once to get a list of the
packages, install them, and then re-run.

Quick start
-----------

Here are a few quickstart tutorials for the most common images.
If you plan on partitioning your volume, you will need the ``parted``
package and ``kpartx``:

.. code:: sh

    root@host:~# apt-get install parted kpartx

VirtualBox Vagrant
~~~~~~~~~~~~~~~~~~

::

    user@host:~$ sudo -i # become root
    root@host:~# git clone https://github.com/andsens/bootstrap-vz.git # Clone the repo
    root@host:~# apt-get install qemu-utils debootstrap python-pip # Install dependencies from aptitude
    root@host:~# pip install termcolor jsonschema fysom docopt pyyaml # Install python dependencies
    root@host:~# bootstrap-vz/bootstrap-vz bootstrap-vz/manifests/virtualbox-vagrant.manifest.yml

If you want to use the `minimize\_size <http://bootstrap-vz.readthedocs.org/en/master/plugins/minimize_size.html>`__
plugin, you will have to install the ``zerofree`` package and `VMWare
Workstation <https://my.vmware.com/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation/10_0>`__
as well.

Amazon EC2 EBS backed AMI
~~~~~~~~~~~~~~~~~~~~~~~~~

.. code:: sh

    user@host:~$ sudo -i # become root
    root@host:~# git clone https://github.com/andsens/bootstrap-vz.git # Clone the repo
    root@host:~# apt-get install debootstrap python-pip # Install dependencies from aptitude
    root@host:~# pip install termcolor jsonschema fysom docopt pyyaml boto # Install python dependencies
    root@host:~# bootstrap-vz/bootstrap-vz bootstrap-vz/manifests/ec2-ebs-debian-official-amd64-pvm.manifest.yml

To bootstrap S3 backed AMIs, bootstrap-vz will also need the
``euca2ools`` package. However, version 3.2.0 is required meaning you
must however install it directly from the eucalyptus repository like
this:

.. code:: sh

    apt-get install --no-install-recommends python-dev libxml2-dev libxslt-dev gcc
    pip install git+git://github.com/eucalyptus/euca2ools.git@v3.2.0

Cleanup
-------

bootstrap-vz tries very hard to clean up after itself both if a run was
successful but also if it failed. This ensures that you are not left
with volumes still attached to the host which are useless. If an error
occurred you can simply correct the problem that caused it and rerun
everything, there will be no leftovers from the previous run (as always
there are of course rare/unlikely exceptions to that rule). The error
messages should always give you a strong hint at what is wrong, if that
is not the case please consider `opening an
issue <https://github.com/andsens/bootstrap-vz/issues>`__ and attach
both the error message and your manifest (preferably as a gist or
similar).

Dependencies
------------

bootstrap-vz has a number of dependencies depending on the target
platform and `the selected plugins <http://bootstrap-vz.readthedocs.org/en/master/plugins>`__.
At a bare minimum the following python libraries are needed:

* `termcolor <https://pypi.python.org/pypi/termcolor>`__
* `fysom <https://pypi.python.org/pypi/fysom>`__
* `jsonschema <https://pypi.python.org/pypi/jsonschema>`__
* `docopt <https://pypi.python.org/pypi/docopt>`__
* `pyyaml <https://pypi.python.org/pypi/pyyaml>`__

To bootstrap Debian itself
`debootstrap <https://packages.debian.org/wheezy/debootstrap>`__
is needed as well.

Any other requirements are dependent upon the manifest configuration
and are detailed in the corresponding sections of the documentation.
bootstrap-vz will however warn you if a requirement has not been met,
before the bootstrapping process begins.

Developers
----------

The API documentation, development guidelines and an explanation of
bootstrap-vz internals can be found at
`bootstrap-vz.readthedocs.org <http://bootstrap-vz.readthedocs.org/en/master/developers>`__.

Contributing
------------

Contribution guidelines are described in the documentation under
`Contributing <http://bootstrap-vz.readthedocs.org/en/master/developers/contributing.html>`__.
There's also
`a topic <http://bootstrap-vz.readthedocs.org/en/master/developers/contributing.html#coding-style>`__
regarding the coding style.