RETIRED, Fuel Library
Go to file
Roman Podoliaka 4418fba67d nova: configure file injection by the means of config drive
We've seen a number of problems with qemu-nbd (from files not being
injected randomly to kernel panics), and while libguestfs is a
better solution here it does not work out of box on Ubuntu. Neither
of these can be used for file injection when instance ephemeral
drives are stored in Ceph.

Disabling of file injection in Nova libvirt drive allows us to unify
the settings for Ubuntu vs CentOS and file vs Ceph-based ephemerals.
In this case file injection can still be performed by the means of
config drive + cloud-init within images.

Upstream Nova / Devstack explicitly disabled file injection in favor
of using config drives in:

9ce99a44cf85e431227536e2251ef05b52e61524

and

I2388ef0df12a6289b619bfaf30cb952fcc48ef41


DocImpact

File injection is no longer performed on the compute node because it's
slow and error-prone. Instead files to be injected are placed on a
config drive, which is automatically created for every instance. It's up
to cloud-init or a similar mechanism within the image itself to perform
injection on instance boot.

Closes-Bug: #1467860
Closes-Bug: #1556819
Related-Bug: #1467579
Related-Bug: #1493767

Change-Id: Ie46aa3f48d62b7500a7e326348b35573b3262641
2016-05-30 16:10:58 +00:00
debian Merge "Build fuel-library as deb package" 2016-03-29 08:01:51 +00:00
deployment nova: configure file injection by the means of config drive 2016-05-30 16:10:58 +00:00
files Fix OCF MySQL monitor 2016-05-12 23:03:57 +02:00
logs Granular Neutron tasks 2015-10-27 17:26:28 +03:00
specs Merge "Drop monit from fuel-master setup" 2016-04-05 21:14:48 +00:00
tests nova: configure file injection by the means of config drive 2016-05-30 16:10:58 +00:00
utils Update cinder-vmware conf for cinder multi backend 2016-04-29 09:56:36 +00:00
.gitignore Update README and .gitignore 2016-02-18 15:26:49 +01:00
.gitreview Update paths due to stackforge migration. 2015-10-18 00:07:01 +03:00
CHANGELOG Edit Changelog 2013-05-23 13:38:03 +03:00
Gemfile Update cinder-vmware conf for cinder multi backend 2016-04-29 09:56:36 +00:00
LICENSE LICENCE added 2014-06-05 20:00:54 +00:00
MAINTAINERS Add Michael Polenchuk to MAINTAINERS 2016-03-14 12:59:08 +03:00
README.md Fixed typo in README's 2016-03-21 10:49:32 -05:00
Rakefile Fix tests and scripts for multiple Puppetfiles 2016-03-25 10:01:54 -06:00

README.md

fuel-library


Table of Contents

  1. Overview - What is the fuel-library?
  2. Structure - What is in the fuel-library?
  3. Granular Deployment - What is the granular deployment for Fuel?
  4. Upstream Modules - How to work with librarian.
  5. Testing - How to run fuel-library tests.
  6. Building docs - How to build docs.
  7. Development
  8. Core Reviers
  9. Contributors

Overview


The fuel-library is collection of Puppet modules and related code used by Fuel to deploy OpenStack environments.

Structure


Basic Repository Layout

fuel-library
├── CHANGELOG
├── LICENSE
├── README.md
├── MAINTAINERS
├── debian
├── deployment
├── files
├── specs
├── tests
└── utils

root

The root level contains important repository documentation and license information.

MAINTAINERS

This is repository level MAINTAINERS file. One submitting a patch should contact the appropriate maintainer or invite her or him for the code review. Note, core reviewers are not the maintainers. Normally, cores do reviews after maintainers.

debian/

This folder contains the required information to create fuel-library debian packages.

deployment/

This folder contains the fuel-library Puppet code, the Puppetfile for upstream modules, and scripts to manage modules with librarian-puppet-simple.

files/

This folder contains scripts and configuration files that are used when creating the packages for fuel-library.

specs/

This folder contains our rpm spec file for fuel-library rpm packages.

tests/

This folder contains our testing scripts for the fuel-library.

utils/

This folder contains scripts that are useful when doing development on fuel-library

Granular Deployment


The top-scope puppet manifests (sometimes also referred as the composition layer) represent the known deploy paths (aka supported deployment scenarios) for the task-based deployment.

Upstream Modules


In order to be able to pull in upstream modules for use by the fuel-library, the deployment folder contains a Puppetfile for use with librarian-puppet-simple. Upstream modules should be used whenever possible. For additional details on the process for working with upstream modules, please read the Fuel library for Puppet manifests of the Fuel wiki.

Testing


Testing is important for the fuel-library to ensure changes do what they are supposed to do, regressions are not introduced and all code is of the highest quality. The fuel-library leverages existing Puppet module rspec tests, bats tests for bash scripts and noop tests for testing the module deployment tasks in fuel-library.

Module Unit Tests


The modules contained within fuel-library require that the module dependencies have been downloaded prior to running their spec tests. Their fixtures.yml have been updated to use relative links to the modules contained within the deployment/puppet/ folder. Because of this we have updated the rake tasks for the fuel-library root folder to include the ability to download the module dependencies as well as run all of the module unit tests with one command. You can run the following from the root of the fuel-library to run all module unit tests.

bundle install
bundle exec rake spec

By default, running this command will only test the modules modified in the previous commit. To test all modules, please run:

bundle install
bundle exec rake spec_all

If you only wish to download the module dependencies, you can run the following in the root of the fuel-library.

bundle install
bundle exec rake spec_prep

If you wish to clean up the dependencies, you can run the following in the root of the fuel-library.

bundle install
bundle exec rake spec_clean

Once you have downloaded the dependencies, you can also just work with a particular module using the usual 'rake spec' commands if you only want to run a single module's unit tests. The upstream modules defined in the fuel-library Puppetfile are automatically excluded from rspec unit tests. To prevent non- upstream modules that live in fuel-library from being included in unit tests, add the name of the module to the utils/jenkins/modules.disable_rspec file.

Module Syntax Tests


From within the fuel-library root, you can run the following to perform the syntax checks for the files within fuel-library.

bundle install
bundle exec rake syntax

This will run syntax checks against all puppet, python, shell and hiera files within fuel-library.

Module Lint Checks

By default, Lint Checks will only test the modules modified in the previous commit. From within the fuel-library root, you can run the following commands:

bundle install
bundle exec rake lint

To run lint on all of our puppet files you should use the following commands:

bundle install
bundle exec rake lint_all

This will run puppet-lint against all of the modules within fuel-library but will skip checking the upstream module dependencies. The upstream module dependencies are skipped by having their name in the deployment/Puppetfile file, but also, additional modules could be defined in the util/jenkins/modules.disable_rake-lint file.

Puppet module tests

Puppet rspec tests should be provided for every module's directory included. All of the discovered tests will be automatically executed by the rake spec command issued from the repository root path.

Bats: Bash Automated Testing System

Shell scripts residing in the ./files directories should be covered by the BATS test cases. These should be put under the ./tests/bats path as well. Here is an example bats tests written for the UMM feature. See also the bats how-to.

Fuel-library noop tests

A framework for integration testing of composition layers comprising the modular tasks. For details, see the framework's documentation.

Development


Core Reviewers


Contributors