RETIRED, Fuel is the control plane for installing and managing OpenStack. It is capable of doing bare metal provisioning of physical nodes, installing OpenStack on them, and much more.
Go to file
2012-06-29 18:38:16 +04:00
bin Added url param for create_release script 2012-06-19 13:50:13 +04:00
binaries@c03891be48 added centos binaries 2012-06-28 16:41:42 +04:00
bootstrap building bootstrap images via make calling bootstrapbuild.sh script 2012-06-22 21:01:17 +04:00
cookbooks removed aptrepo cookbook (replaced with repo) 2012-06-26 18:10:57 +04:00
cooks@a002571d9a Added cooks submodule. Repo is intendent to handle cookbooks for OpenStack. 2012-06-29 15:59:50 +04:00
devops Refactored integration tests, integrated them with Make 2012-06-20 19:53:30 +04:00
gnupg Added Make rule to build Nailgun installation iso 2012-06-13 11:44:40 +04:00
iso Added new cookbooks&releases folders to admin ISO 2012-06-29 18:38:16 +04:00
nailgun Button to discard cluster changes 2012-06-29 16:48:54 +04:00
scripts networks basic testing 2012-06-29 14:07:47 +04:00
test renamed make target clean-integration-test-cache-file to $/clean-integration-test-cache-file 2012-06-26 17:17:37 +04:00
vagrant/cookbooks Added redis-server to deps 2012-06-28 18:17:05 +04:00
.gitignore Added build directory to .gitignore 2012-06-15 22:00:03 +04:00
.gitmodules Added cooks submodule. Repo is intendent to handle cookbooks for OpenStack. 2012-06-29 15:59:50 +04:00
config.mk building bootstrap images via make calling bootstrapbuild.sh script 2012-06-22 21:01:17 +04:00
Makefile moved iso2 to iso 2012-06-26 17:55:00 +04:00
README.md moved iso2 to iso 2012-06-26 17:55:00 +04:00
requirements-deb.txt added some packages in requirement-debs.txt 2012-06-26 17:15:11 +04:00
requirements.txt Created recipe to install reqs for CI 2012-05-15 16:55:53 +04:00
rules.mk Fixed rule for .dir files 2012-06-20 19:03:39 +04:00
Vagrantfile [vagrant] Converted Vagrantfile to multi-VM 2012-06-13 15:06:27 +04:00

NAILGUN

How to run Nailgun app from fixtures

Remove old DB:

cd nailgun rm -f nailgun.sqlite

Sync DB:

./manage.py syncdb --noinput

Load data from fixtures:

./manage.py loaddata sample_environment

Run application:

./manage.py runserver

Access Web UI at http://localhost:8000/

Deploying virtual environment

Using vagrant:

Note: uncomment config.vm.forward_port 8000, 8000 in Vagrantfile for working with django webui.

For VM deployment run: vagrant up

The working directory is /vagrant.

W/O vagrant:

Installing chef (source):

~$ echo "deb http://apt.opscode.com/ `lsb_release -cs`-0.10 main" | sudo tee /etc/apt/sources.list.d/opscode.list

~$ sudo mkdir -p /etc/apt/trusted.gpg.d

~$ gpg --keyserver keys.gnupg.net --recv-keys 83EF826A

~$ gpg --export packages@opscode.com | sudo tee /etc/apt/trusted.gpg.d/opscode-keyring.gpg > /dev/null

~$ sudo apt-get update && sudo apt-get install opscode-keyring

~$ sudo apt-get install chef

Installing dependencies

~$ cd scripts/ci && chef-solo -l debug -c solo.rb -j solo.json

Testing

Nailgun:

Testing script is nailgun/run_tests.sh Test cases:

  • nailgun/nailgun/tests/test_handlers.py
  • nailgun/nailgun/tests/test_models.py

Layout

Makefile - the global product makefile
Vagrantfile - for the vagrant dev vm
bin/
    create_release - upload a release json file to nailgun (see e.g. scripts/ci/sample-release.json)
    deploy - invoked on a node to deploy; downloads and executes recipes
    install_cookbook - uploads cookbooks to nailgun admin API
bootstrap/ - creating a bootstrap image (aka crowbar sledgehammer) for nodes (initrd, configuration files, packages etc) It needed to be refactored to use clear make without calling additional shell scripts.
cookbooks/ - chef cookbooks to be used by nodes.
    agent/ - node agent. Sends ohai data to admin node.
    nailgun/ - nailgun server (not slave node!)
    others obvious
devops/ - Mirantis CI framework, used by integration tests (./test/integration/). Installed on the master, not slave.
gnupg/
iso/ - creating a main iso to install admin node (isobuild.sh is obsolete, but it is still convenient to use it from time to time to look how some things work), bootstrap images is included into main iso [TODO How does it differ from bootstrap/ and bootstrap2/ ?]
nailgun/ - server
    manage.py, run_tests.sh - django standard
    monitor.py - restart server when django conf files change
    nailgun/ - django app 
        apps: nailgun.api at api/, nailgun.webui (fully static) at /
        models: recipe, role, release, node, cluster
        tasks.py - django-celery tasks submitted from api/handlers.py: deploy cluster [sub: deploy node]
            MOST IMPORTANT TASK: deploy_cluster
                Create databags for nodes
                Provision node with Cobbler - currently does nothing (?)
                ssh node and call /opt/nailgun/bin/deploy
        api/ - nailgun.api django app; JSON API
            main entities in REST API: task, recipe/release/role, node, cluster
            
scripts/
    agent/ - unfinished?
    ci/ - scripts for CI [run on Jenkins? Unfinished?]; looks like scripts check that we can control which cookbooks are installed on nodes.
test/ - integration tests [TODO figure out more]
vagrant/ - cookbooks for use by the vagrant vm
requirements-deb.txt - debian packages needed on nailgun server
requirements.txt - here was the list of python eggs installed via pip, it was moved into cookbooks/nailgun/recipes/deps.rb, but we are not absolutely sure that this file will not be needed in the future
rules.mk - it is just some make macroses