Ironic ====== Ironic is an Incubated OpenStack project which aims to provision bare metal machines instead of virtual machines, forked from the Nova Baremetal driver. ----------------- Project Resources ----------------- Project status, bugs, and blueprints are tracked on Launchpad: http://launchpad.net/ironic Additional resources are linked from the project wiki page: https://wiki.openstack.org/wiki/Ironic Developers wishing to contribute to an OpenStack project should find plenty of helpful resources here: https://wiki.openstack.org/wiki/Getting_Started All OpenStack projects use Gerrit for code reviews. A good reference for that is here: https://wiki.openstack.org/wiki/GerritWorkflow -------------------- Project Architecture -------------------- An Ironic deployment will be composed of the following components: - A **RESTful API** service, by which operators and other services may interact with the managed bare metal servers. - A **Manager** service, which does the bulk of the work. Functionality is exposed via the API service. The Manager and API services communicate via RPC. - An internal **driver API** for different Manager functions. There are currently two driver types: BMCDriver and DeploymentDriver. - Internal drivers for each function are dynamically loaded, according to the specific hardware being managed, such that heterogeneous hardware deployments can be managed by a single Manager service. - One or more **Deployment Agents**, which provide local control over the hardware which is not available remotely to the Manager. A ramdisk should be built which contains one of these agents, eg. with https://github.com/stackforge/diskimage-builder, and this ramdisk can be booted on-demand. The agent is never run inside a tenant instance. - A **Database** and a DB API for storing persistent state of the Manager and Drivers. ----------- Development ----------- Ironic source code should be pulled directly from git:: git clone https://github.com/openstack/ironic Setting up a local environment for development can be done with tox:: cd /ironic # install prerequisites * Ubuntu/Debian: sudo apt-get install python-dev swig libssl-dev python-pip libmysqlclient-dev libxml2-dev libxslt-dev * Fedora/RHEL: sudo yum install python-devel swig openssl-devel python-pip mysql-libs libxml2-devel libxslt-devel sudo easy_install nose sudo pip install virtualenv setuptools-git flake8 # create virtualenv tox -evenv -- echo 'done' # activate the virtualenv source .tox/venv/bin/activate # run pep8/flake8 checks flake8 # run unit tests testr run # deactivate the virtualenv deactivate