Skip to content

Add ironic configuration to baremetal environment#1729

Open
jackhodgkiss wants to merge 3 commits intostackhpc/2025.1from
ironic-mixins
Open

Add ironic configuration to baremetal environment#1729
jackhodgkiss wants to merge 3 commits intostackhpc/2025.1from
ironic-mixins

Conversation

@jackhodgkiss
Copy link
Copy Markdown
Contributor

@jackhodgkiss jackhodgkiss commented Jun 23, 2025

Add support for environment mixins that capture the configuration behind ironic for both redfish, idrac and ipmi. It is expected the users environments will depend on baremetal and will simply add the nodes to the relevant groups.

@Alex-Welsh
Copy link
Copy Markdown
Member

I'm a big fan of this approach. What do you need to get this out of draft?

@jackhodgkiss
Copy link
Copy Markdown
Contributor Author

I'm a big fan of this approach. What do you need to get this out of draft?

I think there a some further additions that could be included here.

Horizon fixes (scopes and configuration drive default)

Some documentation. I think something for the SKC docs but also something in environment such as small README.md to summerise what the stack does/doesn't do and what you need to do if include it.

@jackhodgkiss jackhodgkiss changed the base branch from stackhpc/2024.1 to stackhpc/2025.1 August 15, 2025 11:42
Introduce the `stack-ironic` environment mixin. This environment is
intended to be used as an environment mixin that other environments
depend upon. It implements configuration for the `Ironic` service such
that hardware support for `idrac`, `ipmi` and `redfish`.

- Drop in support for ironic configuration
- Apply sensible tweaks to `ironic` services
- Add playbook for adding port groups

Signed-off-by: Jack Hodgkiss <jack@stackhpc.com>
Copy link
Copy Markdown
Member

@oneswig oneswig left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jackhodgkiss following a discussion on Friday - if we can rename the environment to be just baremetal, I will merge this and we will build the remaining PRs on top of it.

@jackhodgkiss jackhodgkiss changed the title feat: add ironic environment mixins Add ironic configuration to baremetal environment Apr 28, 2026
@jackhodgkiss jackhodgkiss requested a review from jovial April 28, 2026 12:58
Copy link
Copy Markdown
Contributor

@jovial jovial left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All looks like great stuff to add. It would be nice to document:

  • How to add the nodes into the baremetal- inventory groups. An example should be enough.
  • How to configure the portgroups. The variables to need to be set and the inventory group that the hosts must be added to.

Comment thread etc/kayobe/environments/baremetal/ironic.yml Outdated
Comment thread etc/kayobe/environments/baremetal/ironic.yml Outdated
Comment thread etc/kayobe/environments/baremetal/ironic.yml Outdated
# - Deletion of ports.
rpc_response_timeout = 360
{% endif %}
force_config_drive = True
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could add this only to config/nova/nova-compute-ironic.conf, but part of me likes consistency between baremetal and virtual machines

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Happy with either approach. But will leave as is for now.

extra_args: "{% if pip_upper_constraints_file %}-c {{ pip_upper_constraints_file }}{% endif %}"

- name: Ensure Ironic port groups exist
hosts: baremetal-compute-is-bonded
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Potentially add baremetal-compute-is-bonded declaration to inventory for ease of discovery.

Comment thread etc/kayobe/environments/baremetal/ansible/add-port-groups.yml
@@ -0,0 +1,8 @@
[baremetal-idrac]
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Doc with an example of adding a host into these groups would be great. Maybe focus on redfish?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea but this might be something we need to document as part of the hardware onboarding workflow, and we could defer it until we have other components that build on this work.

- from {{ internal_net_name | net_cidr }} table 1

# IP routes for the admin-api routing table.
internal_routes:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wonder if we could include:

  • cidr: "{{ provision_wl_net_name | net_cidr }}"
    gateway: "{{ internal_net_provision_wl_gateway }}"
    table: admin-api
  • cidr: "{{ cleaning_net_name | net_cidr }}"
    gateway: "{{ internal_net_cleaning_gateway }}"
    table: admin-api

conditionally depending on whether internal_net_provision_wl_gateway and internal_net_cleaning_gateway is defined

Signed-off-by: Jack Hodgkiss <jack@stackhpc.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants