Skip to content

docs/install: add xCAT (stateless) provisioner with rocky10/almalinux… - #2654

Open
viniciusferrao wants to merge 4 commits into
openhpc:4.xfrom
VersatusHPC:xCAT-stateless-el10-recipe
Open

docs/install: add xCAT (stateless) provisioner with rocky10/almalinux…#2654
viniciusferrao wants to merge 4 commits into
openhpc:4.xfrom
VersatusHPC:xCAT-stateless-el10-recipe

Conversation

@viniciusferrao

@viniciusferrao viniciusferrao commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

'An corp' xCAT stateless guides for OpenHPC 4.x with EL10 systems.

Sponsored-by: VersatusHPC

…10 recipes

Add xCAT as a provisioner in the markdown documentation system, following
the confluent/openchami integration pattern: provisioner config, chapter
and deploy templates, is_xcat macro branches, two recipes
(rocky10-x86_64-xcat-slurm, almalinux10-x86_64-xcat-slurm) and the
matching docs.spec entries. Content is ported from the retired LaTeX xCAT
(stateless) recipes and updated for EL10 and current xCAT:

- repo definitions are written locally against the xcat.org latest tree
  (the published .repo files point at a retired devel tree)
- makedns runs before makedhcp (required by xCAT 2.18's Kea DHCP-DDNS)
- site master/nameservers pinned to the provisioning interface address
- netboot image is rebuilt with the kernel installed in the image, not
  the head node kernel
- rsetboot/rpower are gated on has_ipmi with the ohpc_reset fallback
- osimage names carry the distro minor version as created by copycds

Validated end to end on VMs (AlmaLinux 10.1): head node install from the
generated recipe script, two stateless computes PXE-booted through Kea
DHCP/DNS/xnba, Slurm registration, and an 8-rank MPI hello world across
both nodes.

Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown

📊 Build Order Analysis Results

Environment: AlmaLinux 10 Container
Total Spec Files Analyzed: 89
Status:Build order analysis completed successfully

📋 Build Order Output

📦 Build Order (84 packages)

➕ Show remaining 69 packages

Analysis performed by OpenHPC Build Order CI
Commit: d1d89c61
Workflow: 29783912678

@github-actions

github-actions Bot commented Jul 11, 2026

Copy link
Copy Markdown

📦 Package Count Analysis Results

Environment: UBI 10 Container
Target Branch: 4.x
Version: OpenHPC 4.x
Overall Status:Analysis completed successfully

🏭 Factory Repositories

Status:Factory repositories analysis completed successfully

Release Base OS aarch64 x86_64 noarch Total
4.2 EL_10 54 95 12 161
4.2 openEuler_24.03 48 55 12 115
Total All 102 150 24 276

Analysis performed by OpenHPC Package Count CI
Commit: d1d89c61
Workflow: 29783912690

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown

🚀 CCache Statistics

Configuration 🐧 RHEL 🦊 openEuler
🖥️ x86_64 / gnu15 🟡 26.64% 🟡 25.05%
🖥️ x86_64 / intel 🟡 27.83% -
💪 aarch64 / gnu15 🔴 18.10% 🔴 16.84%
📊 Detailed Statistics

openEuler (aarch64)

Cacheable calls:    5428 / 9884 (54.92%)
  Hits:              914 / 5428 (16.84%)
    Direct:          495 /  914 (54.16%)
    Preprocessed:    419 /  914 (45.84%)
  Misses:           4514 / 5428 (83.16%)
Uncacheable calls:  4456 / 9884 (45.08%)
Local storage:
  Cache size (GiB):  0.4 /  5.0 ( 7.58%)
  Hits:              914 / 5428 (16.84%)
  Misses:           4514 / 5428 (83.16%)

openEuler (x86_64)

Cacheable calls:    6528 / 12091 (53.99%)
  Hits:             1635 /  6528 (25.05%)
    Direct:          799 /  1635 (48.87%)
    Preprocessed:    836 /  1635 (51.13%)
  Misses:           4893 /  6528 (74.95%)
Uncacheable calls:  5563 / 12091 (46.01%)
Local storage:
  Cache size (GiB):  0.4 /   5.0 ( 8.24%)
  Hits:             1635 /  6528 (25.05%)
  Misses:           4893 /  6528 (74.95%)

RHEL (aarch64/gnu15)

Cacheable calls:    5243 / 9520 (55.07%)
  Hits:              949 / 5243 (18.10%)
    Direct:          529 /  949 (55.74%)
    Preprocessed:    420 /  949 (44.26%)
  Misses:           4294 / 5243 (81.90%)
Uncacheable calls:  4277 / 9520 (44.93%)
Local storage:
  Cache size (GiB):  0.4 /  5.0 ( 7.54%)
  Hits:              949 / 5243 (18.10%)
  Misses:           4294 / 5243 (81.90%)

RHEL (x86_64/gnu15)

Cacheable calls:    6360 / 11752 (54.12%)
  Hits:             1694 /  6360 (26.64%)
    Direct:          857 /  1694 (50.59%)
    Preprocessed:    837 /  1694 (49.41%)
  Misses:           4666 /  6360 (73.36%)
Uncacheable calls:  5392 / 11752 (45.88%)
Local storage:
  Cache size (GiB):  0.4 /   5.0 ( 8.20%)
  Hits:             1694 /  6360 (26.64%)
  Misses:           4666 /  6360 (73.36%)

RHEL (x86_64/intel)

Cacheable calls:     6530 / 17460 (37.40%)
  Hits:              1817 /  6530 (27.83%)
    Direct:           867 /  1817 (47.72%)
    Preprocessed:     950 /  1817 (52.28%)
  Misses:            4713 /  6530 (72.17%)
Uncacheable calls:  10930 / 17460 (62.60%)
Local storage:
  Cache size (GiB):   0.4 /   5.0 ( 7.02%)
  Hits:              1817 /  6530 (27.83%)
  Misses:            4713 /  6530 (72.17%)

🤖 Generated from workflow run 29783912643

@github-actions

github-actions Bot commented Jul 12, 2026

Copy link
Copy Markdown

Test Results

 29 files  ±0  29 suites  ±0   55s ⏱️ +3s
 59 tests ±0  53 ✅ ±0  6 💤 ±0  0 ❌ ±0 
105 runs  ±0  97 ✅ ±0  8 💤 ±0  0 ❌ ±0 

Results for commit 1155a79. ± Comparison against base commit 30a27e1.

♻️ This comment has been updated with latest results.

@adrianreber
adrianreber requested a review from middelkoopt July 12, 2026 08:56
Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
…stateless)

Rename the provisioner token, config yaml, templates directory, chapter
aggregators, recipe files, and docs.spec entries so the stateless
edition is named explicitly rather than implied. The 2.x guides used a
bare xcat directory for the stateless lineage next to an explicit
xcat_stateful one; dropping that asymmetry now, while the recipes are
still unreleased, keeps both planned xCAT editions symmetric
(xcat_stateless / xcat_stateful).

Shared intro prose that leaked the provisioner token into sentences now
renders the human-readable provisioner name instead. Generated recipe
scripts are unchanged apart from section-marker path strings; recipes
for the other provisioners are byte-identical except the two prose
lines now using the display name.

Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
@middelkoopt

Copy link
Copy Markdown
Contributor

I most likely will not be able to review to this until after PEARC and PTO (Mid Aug), but will try. Thoughts on integrating stateless and stateful into one doc? We do something similar in Warewulf for provision-to-disk.

@viniciusferrao

viniciusferrao commented Jul 20, 2026

Copy link
Copy Markdown
Contributor Author

I most likely will not be able to review to this until after PEARC and PTO (Mid Aug), but will try. Thoughts on integrating stateless and stateful into one doc? We do something similar in Warewulf for provision-to-disk.

Stateful is not ready yet. I wanted to finish that for the next TSC meeting be not sure yet. Still testing the steps.

But the idea was to file another PR. If we will merge in a single one, I would need to redo it.

If that's the approach let me know that I will start the rework instead of finishing the stateful part.

@middelkoopt

Copy link
Copy Markdown
Contributor

The general idea is to merge the two recipes, not have two separate ones - and that would be best as a single PR. I don't quite understand why there would be two. If they really need to be two recipes (very different workflow) then that's fine - it just seems odd (I've not looked at the previous xcat or used xcat in the past). Also note that there will be considerable testing to get it to actually get it working on our testing environment so doing both at once would be good.

Use the same dynamic include idiom as the provisioner chapters so new schedulers (e.g. OpenPBS) only need config + templates. Rendered content unchanged.

Signed-off-by: Vinícius Ferrão <ferrao@versatushpc.com.br>
Sponsored-by: VersatusHPC
@github-actions

Copy link
Copy Markdown

A friendly reminder that this PR had no activity for 30 days.

@viniciusferrao

Copy link
Copy Markdown
Contributor Author

I need to get the stateful back on track. I procrastinated due to the cancellation of next meetings.

@github-actions github-actions Bot removed the stale-pr label Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants