Deploy a specific node with custom configuration
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:
properties:
availabili
template: nova::uuid
params:
uuid: {get_param: [NodeUUIDs, Controller, {get_param: NodeIndex}]}
NodeUUIDs comes from heat template, e.g.:
parameter_defaults:
NodeUUIDs:
Controller:
- c433b9c7-
Compute:
- 2a901b66-
- 92ccf53d-
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-
hostname: osc_022
net_ip_map:
ctlplane: 10.0.0.111
external: 10.10.0.111
storage: 10.12.0.111
tenant: 10.14.0.111
management: 10.15.0.111
2a901b66-
net_ip_map:
hostname: nova_0222
ctlplane: 10.0.0.112
storage: 10.12.0.112
tenant: 10.14.0.112
management: 10.15.0.112
92ccf53d-
hostname: osc_0222
net_ip_map:
ctlplane: 10.0.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::propertie
- 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
- Started by
- Completed by
- Juan Antonio Osorio Robles