Add support for deploying Openstack Baremetal service (Ironic)

Registered by Pavlo Shchelokovskyy

As a user of Fuel, I would like to be able to use baremetal compute hosts to deploy a critical workload inside the OpenStack environment created by Fuel.

OpenStack Baremetal service allows deploying workload on baremetal nodes, leveraging their better performance. We should support deploying this service with Fuel.

When appropriate Ironic packages are built and available, approximate list of steps to add such support:

- add general option to Fuel / Fuel UI to deploy OpeStack Baremetal service
  - should be available only when Neutron is installed
- add two new roles to Fuel / Fuel UI
  - "ironic" - assigned to separate nodes where Ironic Conductor and nova-compute with baremetal driver are deployed
  - "baremetal" - (for now empty) role assigned to separate nodes that can be used as barematal compute hosts
  - when deploying Ironic the user must assign these roles to at least one separate node each
- add/extend Puppet manifests for deployment and/or configuration of:
  - Ironic API on controllers
  - Ironic Conductor on "ironic" nodes
    - tftp server on these nodes as well
  - nova-compute with baremetal driver on "ironic" nodes
  - OpenStack Baremetal service to Keystone

These tasks can be tracked as separate blueprints if needed.

There are already upstream puppet manifests for Ironic deployment we could check out
https://github.com/stackforge/puppet-ironic

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Pavlo Shchelokovskyy
Direction:
Approved
Assignee:
Andrey Shestakov
Definition:
Approved
Series goal:
Accepted for 8.0.x
Implementation:
Implemented
Milestone target:
milestone icon 8.0
Started by
Pavlo Shchelokovskyy
Completed by
Serge Kovaleff

Related branches

Sprints

Whiteboard

Gerrit topic: https://review.openstack.org/#q,topic:bp/fuel-integrate-ironic,n,z

Addressed by: https://review.openstack.org/185512
    Blueprint: fuel-integrate-ironic

Addressed by: https://review.openstack.org/194184
    add ironic module

Addressed by: https://review.openstack.org/202458
    Add ability to override compute_driver

Addressed by: https://review.openstack.org/202512
    Add haproxy services for Ironic

Addressed by: https://review.openstack.org/202521
    Add ability to set compute_driver for nova compute

Addressed by: https://review.openstack.org/202420
    Add ability to set reserved_host_memory

Gerrit topic: https://review.openstack.org/#q,topic:bp/fuel-puppet-librarian,n,z

Addressed by: https://review.openstack.org/202767
    Add ironic module

Addressed by: https://review.openstack.org/202775
    Add baremetal network for Ironic

Addressed by: https://review.openstack.org/202894
    Add tftp module tag 0.2.3

Addressed by: https://review.openstack.org/202092
    Enable ironic in MOS

Addressed by: https://review.openstack.org/202453
    Enable Ironic in MOS

Addressed by: https://review.openstack.org/203492
    Add tftp module

Addressed by: https://review.openstack.org/203512
    Add haproxy services for Ironic

Addressed by: https://review.openstack.org/203568
    Set openstack-contoller parameters for ironic

Addressed by: https://review.openstack.org/221006
    Add ironic module

Addressed by: https://review.openstack.org/221291
    [Ironic] Add ironic conductor and compute

Addressed by: https://review.openstack.org/223626
    [Ironic] Add baremetal network for ironic

Addressed by: https://review.openstack.org/228782
    Add ironic_base test case

Addressed by: https://review.openstack.org/228856
    Add ironic_base test case

Addressed by: https://review.openstack.org/228898
    [Ironic] Add firewall rules for baremetal network

Addressed by: https://review.openstack.org/228982
    [Ironic] Add ironic logs collector

Addressed by: https://review.openstack.org/229879
    [Ironic] Add baremetal network for ironic

Addressed by: https://review.openstack.org/231444
    [Ironic] enable fuel_ssh fuel_ipmitool drivers

Addressed by: https://review.openstack.org/232161
    [Ironic] build bootstrap

Addressed by: https://review.openstack.org/232373
    [Ironic] generate bootstrap

Gerrit topic: https://review.openstack.org/#q,topic:perms,n,z

Addressed by: https://review.openstack.org/233031
    Change bootstrap file permissions

Addressed by: https://review.openstack.org/235151
    [Ironic] add configs for noop tests

Gerrit topic: https://review.openstack.org/#q,topic:ironic_conductor,n,z

Addressed by: https://review.openstack.org/232567
    Add restrictions for network groups

Addressed by: https://review.openstack.org/239459
    DNM serialize net roles depends on deployment tasks

Addressed by: https://review.openstack.org/240898
    [Ironic] Add network roles for ironic

Addressed by: https://review.openstack.org/240904
    [Ironic] Add transformations for Ironic

Addressed by: https://review.openstack.org/241305
    Add network_roles attribute to deployment tasks

Addressed by: https://review.openstack.org/241585
    DNM move change_cluster_ssl_config out of create_cluster()

Addressed by: https://review.openstack.org/242119
    Add checks for network roles default mapping

Addressed by: https://review.openstack.org/243045
    Add vendor_specific parameter to VIPs meta

Addressed by: https://review.openstack.org/243162
    [Ironic] Enable RadosGW support for Ironic

Addressed by: https://review.openstack.org/243542
    [Ironic] Add haproxy service for RadosGW on baremetal network

Addressed by: https://review.openstack.org/246808
    [Ironic] Fix RadosGW haproxy service configuration

Addressed by: https://review.openstack.org/246819
    [Ironic] Configure Swift as Glance backend when Ironic enabled

Addressed by: https://review.openstack.org/248092
    [Ironic] Configure neutron-server only on controllers

Addressed by: https://review.openstack.org/248706
    [Ironic] Add enable_rados to requirments for irnic_post_swift_key

Addressed by: https://review.openstack.org/249095
    [Ironic] Fix volumes metadata for ironic role

Addressed by: https://review.openstack.org/250524
    Revert "[Ironic] Configure neutron-server only on controllers"

Addressed by: https://review.openstack.org/250688
    [Ironic] Configure neutron-server only on controllers

Addressed by: https://review.openstack.org/250743
    Add possibility to use data from different fixtures

Addressed by: https://review.openstack.org/250850
    Fix baremetal allocation pools

Gerrit topic: https://review.openstack.org/#q,topic:bp/implement-support-for-murano-service-broker,n,z

(?)

Work Items

Work items:
Add general switch to deploy Ironic (Fuel): TODO
Add general switch to deploy Ironic (FuelUI): TODO
Add and configure new roles: TODO
Deploy and configure Ironic API: TODO
Deploy and configure Ironic Conductor: TODO
Deploy and configure dedicated baremetal nova-compute: TODO
Add Baremetal service to Keystone: TODO

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.