Jump to: navigation, search

Difference between revisions of "Ironic"

(Using Disk Image Builder)
(refactor sub sections to other pages)
Line 1: Line 1:
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
 
|  [https://github.com/openstack/ironic Source code]   
 
|  [https://github.com/openstack/ironic Source code]   
Line 16: Line 15:
 
__TOC__
 
__TOC__
  
= Ironic: Bare Metal provisioning for OpenStack =
+
= Ironic =
 
 
'''Ironic is under rapid initial development, forked from [[Baremetal|Nova's Baremetal driver.]]''' If you're looking for something that works today, go there :)
 
 
 
If you'd like to join the development, start by [http://docs.openstack.org/developer/ironic/ reading the developer docs here], and then join us in the  <code>#openstack-ironic</code> on [http://irc.freenode.net irc.freenode.net]!
 
 
 
=== Building Documentation Locally ===
 
 
 
If you want to build the ironic docs for yourself locally, follow these steps:
 
 
 
create a vm
 
  #using vagrant 1.2.2 with a virtualbox backend
 
  vagrant init precise32
 
  #enable networking with the host
 
    vi Vagrantfile
 
    add
 
      config.vm.network :forwarded_port, guest: 80, host: 4567
 
  vagrant up
 
 
shell into the vm
 
  vagrant ssh
 
 
install dependencies
 
  sudo apt-get update
 
  sudo apt-get install -y git apache2 python-dev swig libssl-dev python-pip libmysqlclient-dev libxml2-dev libxslt-dev libxslt1-dev python-mysqldb libpq-dev
 
  sudo pip install virtualenv setuptools-git flake8 tox
 
  sudo easy_install nose
 
 
get the ironic repo
 
  cd ~
 
  git clone git://github.com/openstack/ironic.git
 
 
create a file enabling ironic.localhost in apache
 
  sudo vi /etc/apache2/sites-enabled/100-ironic
 
  # contents
 
  <VirtualHost *:80>
 
      ServerName ironic.localhost
 
      DocumentRoot /opt/source/ironic/doc/build/html
 
   
 
          <Directory /opt/source/ironic/doc/build/html>
 
                  Options Indexes FollowSymLinks MultiViews
 
                  AllowOverride None
 
                  Order allow,deny
 
                  allow from all
 
          </Directory>
 
  </VirtualHost>
 
  # change the DocumentRoot and the Directory to point the the ironic repo, if you are using
 
  # vagrant and the ironic repo is the the vagrant user's home directory the code is fine
 
 
create a venv inside the ironic repo
 
  cd ironic
 
  tox -evenv -- echo 'done'
 
 
activate the newly created venv
 
  source .tox/venv/bin/activate
 
 
from inside the venv
 
  python setup.py build_sphinx
 
  # as I run this I get 20 warnings, ignore the warnings
 
exit the venv
 
  deactivate
 
 
restart apache
 
  sudo service apache2 restart
 
 
on your host:
 
  add ironic.localhost to /etc/hosts with:
 
  sudo sed -i 's/\(127.0.0.1\s*localhost\)/\1 ironic.localhost/' /etc/hosts
 
 
point your browser to http://ironic.localhost:4567
 
 
You should be reading your newly built documentation.
 
 
 
=== Try it on Devstack ===
 
 
 
To install Ironic using Devstack follow the following steps:
 
 
 
1. Obtain the latest copy of Devstack:
 
  git clone git://github.com/openstack-dev/devstack.git
 
 
 
2. Go to the Devstack source tree and create a localrc file with at least the following options:
 
  # Enable Ironic API and Ironic Conductor
 
  enable_service ir-api
 
  enable_service ir-cond
 
 
 
  # Enable Neutron which is required by Ironic and disable nova-network.
 
  disable_service n-net
 
  enable_service q-svc
 
  enable_service q-agt
 
  enable_service q-dhcp
 
  enable_service q-l3
 
  enable_service q-meta
 
  enable_service neutron
 
  enable_service q-lbaas
 
 
 
  # You can replace "password" with your own one.
 
  ADMIN_PASSWORD=password
 
  MYSQL_PASSWORD=password
 
  RABBIT_PASSWORD=password
 
  SERVICE_PASSWORD=password
 
 
 
3. Run installation of Devstack:
 
  ./stack.sh
 
 
 
4. Wait until everything gets installed.
 
 
 
5. Ironic API service is listening on http://YOUR_IP:6385
 
 
 
=== Using Disk Image Builder ===
 
In this section, we will go over how to set up Ironic within the TripleO enviroment.
 
 
 
: '''Note''': TripleO is under rapid development and may invalidate this walk thru.
 
<br />
 
If not familiar with TripleO and / or have not used the DiskImage-Builder (DIB) tool before, please read and familiarize yourself with the TripleO story. Here are some good starting points:
 
:* [https://github.com/openstack/tripleo-incubator/blob/master/README.md TripleO-ReadMe]
 
:* [http://docs.openstack.org/developer/tripleo-incubator/deploying.html Deploying-Doc]
 
:* [http://docs.openstack.org/developer/tripleo-incubator/devtest.html Devtest-Doc]
 
 
 
Please follow TripleO's [http://docs.openstack.org/developer/tripleo-incubator/devtest.html Devtest-Doc] up to the [http://docs.openstack.org/developer/tripleo-incubator/devtest_undercloud.html devtest_undercloud] section.
 
<br />
 
 
 
==== Build undercloud containing Ironic ====
 
We need to modify step #1 of [http://docs.openstack.org/developer/tripleo-incubator/devtest_undercloud.html devtest_undercloud-walkthru] to include the Ironic services, and to switch Nova from using the nova.virt.baremetal driver to instead use the nova.virt.ironic driver.
 
 
 
# Note that rev 21 was current at the time of this writing. You may need to update this revision number
 
NOVA_PATCH_REV=21
 
cd $TRIPLEO_ROOT
 
export UNDERCLOUD_DIB_EXTRA_ARGS="nova-ironic"
 
export DIB_REPOLOCATION_nova=https://review.openstack.org/openstack/nova
 
export DIB_REPOREF_nova=refs/changes/28/51328/$NOVA_PATCH_REV
 
 
 
Proceed until step #3 of [http://docs.openstack.org/developer/tripleo-incubator/devtest_undercloud.html devtest_undercloud-walkthru].
 
 
 
==== Heat template ====
 
Instead of building the undercloud-vm.yaml file, we want to build the undercloud-vm-ironic.yaml file:
 
 
 
make -C $TRIPLEO_ROOT/tripleo-heat-templates undercloud-vm-ironic.yaml
 
 
 
This template requires slightly different parameters, so use this command to deploy your undercloud:
 
 
 
heat stack-create '''-f $TRIPLEO_ROOT/tripleo-heat-templates/undercloud-vm-ironic.yaml''' \
 
-P "AdminToken=${UNDERCLOUD_ADMIN_TOKEN};\
 
AdminPassword=${UNDERCLOUD_ADMIN_PASSWORD};\
 
GlancePassword=${UNDERCLOUD_GLANCE_PASSWORD};\
 
HeatPassword=${UNDERCLOUD_HEAT_PASSWORD};\
 
NeutronPassword=${UNDERCLOUD_NEUTRON_PASSWORD};\
 
NovaPassword=${UNDERCLOUD_NOVA_PASSWORD};\
 
BaremetalArch=${NODE_ARCH};\
 
IronicPassword=${UNDERCLOUD_IRONIC_PASSWORD}" \
 
undercloud
 
 
 
==== Continue  [http://docs.openstack.org/developer/tripleo-incubator/devtest_undercloud.html devtest_undercloud-walkthru] ====
 
Continue to follow the [http://docs.openstack.org/developer/tripleo-incubator/devtest_undercloud.html devtest_undercloud-walkthru] up through step #9.
 
 
 
==== Register the Ironic service ====
 
After step #9, register the Ironic service with keystone.
 
PASSWORD=$UNDERCLOUD_IRONIC_PASSWORD register-endpoint -r "regionOne" -d "Ironic Service" ironic baremetal http://$UNDERCLOUD_IP:6385
 
 
 
In [http://docs.openstack.org/developer/tripleo-incubator/devtest_undercloud.html devtest_undercloud-walkthru's] step #10, nodes are registered to the undercloud's nova-baremetal and not Ironic. Instead of that, we'll create a 'baremetal' node and register it with ironic, via the undercloud.
 
 
 
Allow Ironic's SSH driver to connect to your local machine:
 
ssh heat-admin@$UNDERCLOUD_IP "cat /opt/stack/boot-stack/ironic-ssh-power-key.pub" >> ~/.ssh/authorized_keys
 
 
 
Copy the Ironic API credentials to your local machine:
 
ssh heat-admin@$UNDERCLOUD_IP -- 'sudo cat /root/stackrc' > $TRIPLEO_ROOT/tripleo-incubator/ironicrc
 
sed -i "s/localhost/$UNDERCLOUD_IP/" $TRIPLEO_ROOT/tripleo-incubator/ironicrc
 
source $TRIPLEO_ROOT/tripleo-incubator/ironicrc
 
 
 
==== Create an emulated baremetal node ====
 
  
This will create a 'baremetal' node:
+
Ironic is an incubated OpenStack project which provides an API for management and provisioning of physical machines. It replaces the Nova "baremetal" driver, which was present in Grizzly and Havana releases, with a new [https://review.openstack.org/#/c/51328/ "ironic" driver] (still under development).
export UNDERCLOUD_MAC=$(create-nodes $NODE_CPU $NODE_MEM $NODE_DISK $NODE_ARCH 1)
 
  
Use the ''ironic'' client to enroll the baremetal node:
+
If you'd like to contribute to the project, please join us in the <code>#openstack-ironic</code> channel on [http://irc.freenode.net irc.freenode.net], and look at the links at the top of the page for resources to get you started.
HOST_IP=$(ip addr show virbr0 | grep inet | awk '{print $2}' | sed 's/\/[0-9]*//')
 
CHASSIS=$(ironic chassis-create -d TestChassis | grep uuid | awk '{print $4}')
 
NODE=$(ironic node-create -c $CHASSIS -d pxe_ssh | grep ' uuid ' | awk '{print $4}')
 
  ironic port-create -n $NODE -a $UNDERCLOUD_MAC
 
ironic node-update $NODE add \
 
  driver_info/ssh_virt_type=virsh \
 
  driver_info/ssh_address=$HOST_IP \
 
  driver_info/ssh_key_filename=/opt/stack/boot-stack/ironic-ssh-power-key \
 
  driver_info/ssh_username=$(whoami)
 
  
Confirm everything is enrolled and correct:
+
Looking for a quick-start guide to start using Ironic? Try it out [[Ironic/Devstack|with devstack]], or [[Ironic/TripleO|with tripleo]].
ironic node-show $NODE
 
  
You can now control the power state of this node with this command:
+
Looking for an operations manual or deployment guides? So are we -- we'd love it if you contribute them!
ironic node-set-power-state $NODE [on|off|reboot]
 

Revision as of 18:30, 14 February 2014

Source code
Code review board
Bug tracker
Blueprints
Developer docs
Weekly meetings

Contents

Ironic

Ironic is an incubated OpenStack project which provides an API for management and provisioning of physical machines. It replaces the Nova "baremetal" driver, which was present in Grizzly and Havana releases, with a new "ironic" driver (still under development).

If you'd like to contribute to the project, please join us in the #openstack-ironic channel on irc.freenode.net, and look at the links at the top of the page for resources to get you started.

Looking for a quick-start guide to start using Ironic? Try it out with devstack, or with tripleo.

Looking for an operations manual or deployment guides? So are we -- we'd love it if you contribute them!