Fuel bootstrap on Ubuntu
Implements: https://blueprints.launchpad.net/fuel/+spec/fuel-bootstrap-on-ubuntu Change-Id: Ia1026e8c07e9bf03c5fdb7e76689ad0bf5b96897
This commit is contained in:
parent
fc14d94245
commit
1f438985b3
206
specs/7.0/fuel-bootstrap-on-ubuntu.rst
Normal file
206
specs/7.0/fuel-bootstrap-on-ubuntu.rst
Normal file
@ -0,0 +1,206 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
====================================================================
|
||||
Fuel bootstrap on Ubuntu 14.04, generated dynamically on Fuel master
|
||||
====================================================================
|
||||
|
||||
https://blueprints.launchpad.net/fuel/+spec/fuel-bootstrap-on-ubuntu
|
||||
|
||||
Use Ubuntu as an operating system of Fuel bootstrap nodes.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
Using CentOS 6.x based bootstrap in MOS 7.0 would be extremely problematic:
|
||||
- Hardware support is already the pain in the neck
|
||||
- The kernel (kernel.org 3.10.y) EOL is August 2015
|
||||
(http://www.kroah.com/log/blog/2013/08/04/longterm-kernel-3-dot-10)
|
||||
- Some bootstrap code (in particular IBP) uses OpenStack python
|
||||
libraries (oslo.*) which don't support python 2.6 anymore.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Dynamically assemble a bootable Ubuntu image (AKA live image) which contains
|
||||
necessary nailgun components and is configured to act as a discovery node.
|
||||
|
||||
Advantages:
|
||||
- Linux 3.13 (with Canonical modifications) provides a better hardware support
|
||||
- The same kernel on bootstrap and OpenStack nodes => less maintenance.
|
||||
- The initramfs images is moderately sized (~ 20MB), the root filesystem image
|
||||
is downloaded via http => less load on the master node.
|
||||
- Bootstrap is a full fledged Ubuntu system, it's possible install and
|
||||
upgrade packages (custom drivers, debugging symbols, etc) without
|
||||
rebuilding the image (the changes don't persist across reboots, though).
|
||||
- Faster development workflow: rebuild the nailgun-* package, rebuild
|
||||
the bootstrap image (run a script on the master node), restart the slave
|
||||
nodes.
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
Use Debian instead of Ubuntu and ship the default bootstrap image on Fuel ISO.
|
||||
|
||||
Data model impact
|
||||
-----------------
|
||||
|
||||
None.
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
None.
|
||||
|
||||
Upgrade impact
|
||||
--------------
|
||||
|
||||
None.
|
||||
|
||||
|
||||
Security impact
|
||||
---------------
|
||||
|
||||
Building bootstrap images requires root privileges.
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
None.
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
The bootstrap images are generated during the master node deployment. This
|
||||
process is supposed to work without any user intervention if the master node
|
||||
has an access to the default Ubuntu_ and MOS_ mirrors. Otherwise the user
|
||||
is prompted to configure the APT repositories using the Fuel menu.
|
||||
The deployment of the master node fails if the bootstrap image can not be
|
||||
generated (the master node is next to useless without a bootstrap image).
|
||||
The advanced users can generate a custom bootstrap images using
|
||||
the corresponding script on the master node.
|
||||
|
||||
.. _Ubuntu: http://archive.ubuntu.com/ubuntu
|
||||
.. _MOS: http://mirror.fuel-infra.org/mos/ubuntu
|
||||
|
||||
Performance Impact
|
||||
------------------
|
||||
|
||||
The OpenStack nodes themselves are not affected in any way. The master node
|
||||
deployment time is expected to be somewhat longer due to building the default
|
||||
bootstrap image. Building process requires around 2GB additional disk space
|
||||
on master node.
|
||||
|
||||
|
||||
Plugin impact
|
||||
-------------
|
||||
|
||||
None.
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
The master node must have an access to Ubuntu and MOS APT repositories
|
||||
(either via Internet or a local mirror) in order for Fuel to be able to
|
||||
detect the nodes. An access to 3rd party repositories is also required
|
||||
to make use of the custom packages (such as the additional hardware
|
||||
drivers) in the bootstrap image.
|
||||
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
The new bootstrap is a full fledged Ubuntu system, one can install or
|
||||
upgrade packages (although these changes are not persistent across reboots).
|
||||
In particular it's possible to reinstall nailgun-agent, fuel-agent, etc
|
||||
without rebuilding the bootstrap image.
|
||||
|
||||
Infrastructure impact
|
||||
---------------------
|
||||
|
||||
The lab must have an access to Ubuntu and MOS APT repositories.
|
||||
Deployment tests are going to run a bit slower (5 -- 10 minutes).
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Build the "live" Ubuntu image, i.e. the root filesystem image (squashfs),
|
||||
initramfs, and the kernel bootable via network. Initramfs detects and
|
||||
configures the network interface(s) and downloads the root filesystem
|
||||
image from the master node via HTTP. Initramfs configures a writable
|
||||
overlay filesystem (using tmpfs as a writable branch). Use the live-boot_
|
||||
package for building such initramfs.
|
||||
|
||||
The root filesystem must contain the software necessary for acting as
|
||||
a discovery/bootstrap node (mcollective, nailgun-agent, nailgun-mcagents,
|
||||
nailgun-net-check, fuel-agent, etc).
|
||||
|
||||
.. _live-boot: http://live.debian.net/devel/live-boot
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
asheplyakov
|
||||
|
||||
Other contributors:
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
1. Change the ISO build process to make Ubuntu based bootstrap images.
|
||||
This approach is not feasible for a release (the images should be
|
||||
generated dynamically), however it requires minimal changes and allows
|
||||
to start testing early enough (intended to start hardware support
|
||||
test as early as possible).
|
||||
|
||||
2. Move the code for building based bootstrap images to the master node.
|
||||
Generate the bootstrap image during the master node deployment using
|
||||
the default Ubuntu and MOS. Note: at this stage deployment fails if
|
||||
the default mirrors are not accessible.
|
||||
|
||||
3. Make Ubuntu and MOS mirrors configurable via the fuel menu. Verify that
|
||||
the user specified mirrors are accessible.
|
||||
|
||||
4. Check if the default Ubuntu and MOS APT mirros are accessible from
|
||||
the master node, if not pop up the Fuel menu and prompt the user to
|
||||
configure the APT repositories for the bootstrap image.
|
||||
|
||||
5. [Optional] Reduce fuel-agent run time dependencies to keep the root
|
||||
filesystem reasonably small.
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
None
|
||||
|
||||
|
||||
Testing
|
||||
=======
|
||||
|
||||
Usual deployment tests cover the bootstrap functionality.
|
||||
|
||||
Acceptance criteria
|
||||
-------------------
|
||||
|
||||
|
||||
Documentation Impact
|
||||
====================
|
||||
|
||||
* Master node should have the access to the default Ubuntu and MOS APT
|
||||
repositories in order for deployment of the master node to be fully
|
||||
noninteractive
|
||||
* If the default Ubuntu and MOS APT repositories are not accessible from
|
||||
the master node (i.e. master node has no access to the Internet) the user
|
||||
is supposed to configure the corresponding APT repos via the Fuel menu.
|
||||
|
||||
|
||||
References
|
||||
==========
|
Loading…
Reference in New Issue
Block a user