Deploy a specific node with custom configuration

Registered by Jehoszafat Zimnowoda

Currently there are many different ways to apply custom configuration parameters:

- custom hostnames by scheduler-hints
- static IP addresses by NodeIndex and list of IP addresses
- custom hieradata values by system-uuid

Applying a node specific configuration is a complex task:
- To deploy a specific node we need to apply scheduler hints and use baremetal flavor.
- IP addresses and hostname depends on NodeIndex and their reuse could be tricky (NodeIndex never decreases, even if we delete a node)
- system-uuid is accessible after introspection and then we can create an appropriate heat template with key-value pairs for hiera

There are two things that could be done to simplify configuration and usage:

1. Use availability_zone to spawn a given ironic node (no scheduler-hints or a specific flavors required), e.g.:

  Controller:
    type: OS::TripleO::ControllerServer
    properties:
     availability_zone:
        str_replace:
          template: nova::uuid
          params:
            uuid: {get_param: [NodeUUIDs, Controller, {get_param: NodeIndex}]}

NodeUUIDs comes from heat template, e.g.:

parameter_defaults:
  NodeUUIDs:
    Controller:
    - c433b9c7-7a57-4919-bdca-9abc41bc7ba3
    Compute:
    - 2a901b66-f757-46fc-9c59-529d47f31a55
    - 92ccf53d-e894-41e4-adab-ce67c6aaed30

Note: above lists are the only one items that depends on ResourceGroup index

2. Associate configuration with a given Ironic UUID, eg.:
---
parameter_defaults:
  NodeConfigs:
    c433b9c7-7a57-4919-bdca-9abc41bc7ba3:
      hostname: osc_022
      net_ip_map:
        ctlplane: 10.0.0.111
        external: 10.10.0.111
        internal_api: 10.11.0.111
        storage: 10.12.0.111
        storage_mgmt: 10.13.0.111
        tenant: 10.14.0.111
        management: 10.15.0.111

    2a901b66-f757-46fc-9c59-529d47f31a55:
      net_ip_map:
      hostname: nova_0222
        ctlplane: 10.0.0.112
        internal_api: 10.11.0.112
        storage: 10.12.0.112
        tenant: 10.14.0.112
        management: 10.15.0.112

    92ccf53d-e894-41e4-adab-ce67c6aaed30:
      hostname: osc_0222
      net_ip_map:
        ctlplane: 10.0.0.113
        internal_api: 10.11.0.113
        storage: 10.12.0.113
        tenant: 10.14.0.113
        management: 10.15.0.113

NodeConfigs could be also expanded by:
- custom network configuration template
- hiera key-value pairs

Backward compatibility and constrains:
- IP addresses could be added via a given port resource: Port::properties::FixedIP
- Hostname needs a new resource where appropriate method (default, scheduler-hints, new_approach) can be chosen in order to assign a name
- this feature assumes that each node has an ironic UUID: a deployed_server could be added with ironic 'fake' driver

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Jehoszafat Zimnowoda
Direction:
Needs approval
Assignee:
Jehoszafat Zimnowoda
Definition:
Obsolete
Series goal:
Accepted for future
Implementation:
Unknown
Milestone target:
None
Completed by
Juan Antonio Osorio Robles

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.