Merge "Update the Ironic documentation"

This commit is contained in:
Zuul 2018-04-20 00:33:02 +00:00 committed by Gerrit Code Review
commit 0948614c67

@ -6,26 +6,12 @@ Ironic in Kolla
Overview
~~~~~~~~
Currently Kolla can deploy the Ironic services:
- ironic-api
- ironic-conductor
- ironic-dnsmasq
- ironic-inspector
As well as a required PXE service, deployed as ironic-pxe.
Current status
~~~~~~~~~~~~~~
The Ironic implementation is "tech preview", so currently instances can only be
deployed on baremetal. Further work will be done to allow scheduling for both
virtualized and baremetal deployments.
Ironic works well in Kolla, though it is not currently tested as part of Kolla
CI, so may be subject to instability.
Pre-deployment Configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Enable Ironic role in ``/etc/kolla/globals.yml``:
Enable Ironic in ``/etc/kolla/globals.yml``:
.. code-block:: yaml
@ -33,18 +19,124 @@ Enable Ironic role in ``/etc/kolla/globals.yml``:
.. end
Beside that an additional network type ``vlan,flat`` has to be added to a list of
tenant network types:
In the same file, define a range of IP addresses that will be available for use
by Ironic inspector, as well as a network to be used for the Ironic cleaning
network:
.. code-block:: yaml
neutron_tenant_network_types: "vxlan,vlan,flat"
ironic_dnsmasq_dhcp_range: "192.168.5.100,192.168.5.110"
ironic_cleaning_network: "public1"
.. end
Configuring Web Console
~~~~~~~~~~~~~~~~~~~~~~~
Ironic inspector also requires a deploy kernel and ramdisk to be placed in
``/etc/kolla/config/ironic/``. The following example uses coreos which is
commonly used in Ironic deployments, though any compatible kernel/ramdisk may
be used:
.. code-block:: console
$ curl https://tarballs.openstack.org/ironic-python-agent/coreos/files/coreos_production_pxe.vmlinuz \
-o /etc/kolla/config/ironic/ironic-agent.kernel
$ curl https://tarballs.openstack.org/ironic-python-agent/coreos/files/coreos_production_pxe_image-oem.cpio.gz \
-o /etc/kolla/config/ironic/ironic-agent.initramfs
.. end
Deployment
~~~~~~~~~~
Run the deploy as usual:
.. code-block:: console
$ kolla-ansible deploy
.. end
Post-deployment configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
A script named `init-runonce` is supplied as part of kolla-ansible to
initialise the cloud with some defaults (only to be used for demo purposes):
.. code-block:: console
tools/init-runonce
.. end
Add the deploy kernel and ramdisk to Glance. Here we're reusing the same images
that were fetched for the Inspector:
.. code-block:: console
openstack image create --disk-format aki --container-format aki --public \
--file /etc/kolla/config/ironic/ironic-agent.kernel deploy-vmlinuz
openstack image create --disk-format ari --container-format ari --public \
--file /etc/kolla/config/ironic/ironic-agent.initramfs deploy-initrd
.. end
Create a baremetal flavor:
.. code-block:: console
openstack flavor create --ram 512 --disk 1 --vcpus 1 my-baremetal-flavor
openstack flavor set my-baremetal-flavor --property \
resources:CUSTOM_BAREMETAL_RESOURCE_CLASS=1
.. end
Create the baremetal node and associate a port. (Ensure to substitute correct
values for the kernel, ramdisk, and MAC address for your baremetal node)
.. code-block:: console
openstack baremetal node create --driver ipmi --name baremetal-node \
--driver-info ipmi_port=6230 --driver-info ipmi_username=admin \
--driver-info ipmi_password=password \
--driver-info ipmi_address=192.168.5.1 \
--resource-class baremetal-resource-class --property cpus=1 \
--property memory_mb=512 --property local_gb=1 \
--property cpu_arch=x86_64 \
--driver-info deploy_kernel=15f3c95f-d778-43ad-8e3e-9357be09ca3d \
--driver-info deploy_ramdisk=9b1e1ced-d84d-440a-b681-39c216f24121
openstack baremetal port create 52:54:00:ff:15:55 --node 57aa574a-5fea-4468-afcf-e2551d464412
.. end
Booting the baremetal
~~~~~~~~~~~~~~~~~~~~~
You can now use the following sample command to boot the baremetal instance:
.. code-block:: console
openstack server create --image cirros --flavor my-baremetal-flavor \
--key-name mykey --network public1 demo1
.. end
Notes
~~~~~
Debugging DHCP
--------------
The following `tcpdump` command can be useful when debugging why dhcp
requests may not be hitting various pieces of the process:
.. code-block:: console
tcpdump -i <interface> port 67 or port 68 or port 69 -e -n
.. end
Configuring the Web Console
---------------------------
Configuration based off upstream `Node web console
<https://docs.openstack.org/ironic/latest/admin/console.html#node-web-console>`__.
@ -59,29 +151,6 @@ Set ironic_console_serial_speed in ``/etc/kolla/globals.yml``:
.. end
Post-deployment configuration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Configuration based off upstream `Ironic installation Documentation
<https://docs.openstack.org/ironic/latest/install/index.html>`__.
Again, remember that enabling Ironic reconfigures nova compute (driver and
scheduler) as well as changes neutron network settings. Further neutron setup
is required as outlined below.
Create the flat network to launch the instances:
.. code-block:: console
neutron net-create --tenant-id $TENANT_ID sharednet1 --shared \
--provider:network_type flat --provider:physical_network physnet1
neutron subnet-create sharednet1 $NETWORK_CIDR --name $SUBNET_NAME \
--ip-version=4 --gateway=$GATEWAY_IP --allocation-pool \
start=$START_IP,end=$END_IP --enable-dhcp
.. end
And then the above ID is used to set ``cleaning_network`` in the neutron
section of ``ironic.conf``.
Deploying using virtual baremetal (vbmc + libvirt)
--------------------------------------------------
See https://brk3.github.io/post/kolla-ironic-libvirt/