Overview
Ironic is the OpenStack service which provides the capability to provision bare metal servers. The initial version of Ironic pxe_cisco driver adds support to manage power operations of Cisco UCS B/C series servers that are UCSM managed and provides vendor_passthru APIs.
User can control the power operations using pxe_cisco driver. This doesn’t require IPMI protocol to be enabled on the servers as the operations are controlled via Service Profiles.
The vendor_passthru APIs allows the user to enroll the nodes automatically to Ironic DB. Also provides APIs to get the Node specific information like, Inventory, Faults, Location, Firmware Version etc.
Get Code
Code is available in GitHub @ https://github.com/CiscoUcs/Ironic-UCS
Python SDK
Use python SDK release 0.8.1 available in https://github.com/CiscoUcs/UcsPythonSDK
Pre-requisites/Limitations
The following are the pre-requisites and/or limitations of this plugin.
- This plugin doesn’t configure any policies on UCSM. Like creating service-profile, associating with available server while provisioning bare-metal instance.
- It is expected that the Service Profile is created up front before enrolling the node in ironic.
- Service-profile and UCSM related information is captured in Ironic node’s driver_info.
Node enroll using pxe_cisco driver
Enroll node:
Host# ironic node-create -d pxe_cisco -i hostname=10.106.240.133 -i username=admin -i password=password -i service_profile="org-root/ls-blade-1" -p cpus=2 -p memory_mb=16384 -p local_gb=200 -p cpu_arch=x86_64
Create port:
Host# ironic port-create -n <node-uuid> -a <mac-address>
Set Power state:
Host# ironic node-set-power-state <node-uuid> on/off
Show Ironic node:
Host# ironic node-show <node-uuid>
Enroll Nodes using pxe_cisco driver vendor_passthru API:
Host# ironic driver-vendor-specific pxe_cisco enroll_nodes hostname=<ucsm-hostname> username=<username> password=<password>
This allows for automated node enrollment of all associated Service Profiles.
Executing node vendor_passthru APIs:
In addition, using the vendor pass through mechanisms, the following additional GET APIs are supported. Please note that these are not available on CLI shell currently. The Ironic conductor log will contain this information on execution of the API.
Host# ironic node-vendor-passthru <node-uuid> <get-vendor-api>
List of GET vendor APIs supported:
- get_firmware_version
- get_inventory
- get_faults
- get_location
- get_power_stats
- get_temperature_stats
OpenStack bring up on UCS
An OpenStack installation comes with its challenges – from OS installation to the right modules being loaded on the nodes. Tools from various vendors that help deliver a smooth setup process have addressed most of these challenges. This, of course, assumes that the bare metal is already setup and running outside the purview of OpenStack itself.
This document describes how to setup brand new Cisco UCS to use with OpenStack.
At higher level these tasks are divided as below.
- Install Cisco UCS Hardware.
- Configure the required policies listed below on centralized policy manager UCS Central /UCS Director.
- Service-profile templates
- Identity pools, IP, MAC pool, UUID, server pool.
- Auto-config policy
- Server-pool qualifier, server-pooling policy
- Vlans, Vnics, scrub policy
- Server-port, uplink port
- After resolving the policies, UCS Manager would discover the chassis and servers.
- Use PXE boot provider to boot the server with desired OS.
- Follow the similar steps to bring up other nodes in the setup.
Note: Setting up PXE boot provider is out of scope of this document.
For any queries/feedback on OpenStack on Cisco UCS, please add a discussion to the Cisco Developed Integrations sub-space on Cisco UCS Communities.