|
|
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]
| |
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).
Looking for an operations manual or deployment guides? So are we -- we'd love it if you contribute them!