From: Luis Chamberlain <mcgrof@kernel.org>
To: Chuck Lever <cel@kernel.org>, Daniel Gomez <da.gomez@kruces.com>,
kdevops@lists.linux.dev
Cc: Luis Chamberlain <mcgrof@kernel.org>
Subject: [PATCH 0/5] rust + rcloud support
Date: Fri, 17 Oct 2025 19:32:12 -0700 [thread overview]
Message-ID: <20251018023218.2240269-1-mcgrof@kernel.org> (raw)
This adds first rust dependencies support as a simple common module,
and then leverages it for both bootlinux (without actually building
anything, just pulling in the deps), and then adds our first kdevops
rust project: rcloud. The rcloud effort is our version of a cloud
provider built for bare metal, to simplify bringups and enhance CI
experience.
There will always be a need for needing to do custom qemu stuff,
we're hackers after all. But for many use cases, typically CI stuff,
we want to leverage just basic guestfs images on default qemu guests
with sensible defaults.
Future rcloud support can grow to support a network of bare metal hosts
in a datacenter, but its not clear if we really need that. Having to
set up rcloud per a large server might suffice for most of our developer
needs and to help enhance CI.
The rcloud support strategy is an alternative to dealing with the
complexities with each user on a large system having to set up a guestfs
and a kdevops environemnt. Essentially with this one user just need to
set up rcloud once.
This work is experimental but passes basic bringup. It should be ready
to mege unless a regression is found during CI testing. Would love
architectural feedback. Is this a sensible alternative to the idea of
having say rpm or debian packages for kdevops?
Luis Chamberlain (5):
install-rust-deps: Add generic Rust toolchain role
CLAUDE.md: Add Rust code quality requirements
bootlinux: Integrate Rust toolchain dependencies
install-go-deps: Add generic Go toolchain role
rcloud: Add experimental private cloud infrastructure for bare metal
.rustfmt.toml | 12 +
CLAUDE.md | 22 +
Makefile | 5 +
README.md | 1 +
defconfigs/rcloud | 53 +
defconfigs/rcloud-guest-test | 58 +
kconfigs/workflows/Kconfig | 2 +
playbooks/install-rcloud-deps.yml | 5 +
playbooks/rcloud.yml | 107 +
.../base_image/templates/virt-builder.j2 | 8 +-
playbooks/roles/bootlinux/tasks/main.yml | 7 +
.../templates/rcloud/terraform.tfvars.j2 | 16 +
.../tasks/install-deps/debian/main.yml | 10 +
.../tasks/install-deps/fedora/main.yml | 9 +
.../tasks/install-deps/main.yml | 21 +
.../tasks/install-deps/redhat/main.yml | 9 +
.../tasks/install-deps/suse/main.yml | 9 +
.../roles/install-go-deps/tasks/main.yml | 15 +
.../tasks/install-deps/debian/main.yml | 10 +
.../tasks/install-deps/fedora/main.yml | 9 +
.../tasks/install-deps/main.yml | 21 +
.../tasks/install-deps/redhat/main.yml | 9 +
.../tasks/install-deps/suse/main.yml | 9 +
.../roles/install-rcloud-deps/tasks/main.yml | 25 +
playbooks/roles/install-rust-deps/README.md | 90 +
.../tasks/install-deps/debian/main.yml | 12 +
.../tasks/install-deps/fedora/main.yml | 11 +
.../tasks/install-deps/main.yml | 21 +
.../tasks/install-deps/redhat/main.yml | 11 +
.../tasks/install-deps/suse/main.yml | 11 +
.../roles/install-rust-deps/tasks/main.yml | 15 +
scripts/generate_cloud_configs.py | 2 +-
scripts/install-rcloud-deps.Makefile | 13 +
scripts/terraform.Makefile | 8 +
terraform-provider-rcloud/.gitignore | 20 +
terraform-provider-rcloud/README.md | 101 +
terraform-provider-rcloud/examples/main.tf | 28 +
terraform-provider-rcloud/go.mod | 32 +
terraform-provider-rcloud/go.sum | 75 +
.../internal/provider/client.go | 207 +
.../internal/provider/provider.go | 129 +
.../internal/provider/resource_vm.go | 344 ++
terraform-provider-rcloud/main.go | 47 +
terraform/Kconfig.providers | 12 +
terraform/rcloud/Kconfig | 25 +
terraform/rcloud/main.tf | 8 +
terraform/rcloud/output.tf | 10 +
terraform/rcloud/provider.tf | 14 +
terraform/rcloud/shared.tf | 60 +
terraform/rcloud/vars.tf | 9 +
workflows/rcloud/.gitignore | 1 +
workflows/rcloud/Cargo.lock | 3550 +++++++++++++++++
workflows/rcloud/Cargo.toml | 69 +
workflows/rcloud/DESIGN.md | 444 +++
workflows/rcloud/Kconfig | 53 +
workflows/rcloud/Makefile | 149 +
workflows/rcloud/docs/AUTHENTICATION.md | 166 +
workflows/rcloud/docs/TESTING.md | 429 ++
workflows/rcloud/scripts/check-health.py | 158 +
workflows/rcloud/src/api/handlers/health.rs | 51 +
workflows/rcloud/src/api/handlers/images.rs | 31 +
workflows/rcloud/src/api/handlers/metrics.rs | 15 +
workflows/rcloud/src/api/handlers/mod.rs | 4 +
workflows/rcloud/src/api/handlers/vms.rs | 172 +
workflows/rcloud/src/api/mod.rs | 3 +
workflows/rcloud/src/api/models.rs | 55 +
workflows/rcloud/src/api/routes.rs | 24 +
workflows/rcloud/src/config/kdevops.rs | 121 +
workflows/rcloud/src/config/mod.rs | 117 +
workflows/rcloud/src/lib.rs | 4 +
workflows/rcloud/src/main.rs | 64 +
workflows/rcloud/src/metrics.rs | 100 +
workflows/rcloud/src/vm/disk.rs | 66 +
workflows/rcloud/src/vm/manager.rs | 520 +++
workflows/rcloud/src/vm/mod.rs | 5 +
workflows/rcloud/src/vm/xml.rs | 169 +
workflows/rcloud/tests/api_tests.rs | 18 +
77 files changed, 8322 insertions(+), 3 deletions(-)
create mode 100644 .rustfmt.toml
create mode 100644 defconfigs/rcloud
create mode 100644 defconfigs/rcloud-guest-test
create mode 100644 playbooks/install-rcloud-deps.yml
create mode 100644 playbooks/rcloud.yml
create mode 100644 playbooks/roles/gen_tfvars/templates/rcloud/terraform.tfvars.j2
create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/debian/main.yml
create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/fedora/main.yml
create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/main.yml
create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/redhat/main.yml
create mode 100644 playbooks/roles/install-go-deps/tasks/install-deps/suse/main.yml
create mode 100644 playbooks/roles/install-go-deps/tasks/main.yml
create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/debian/main.yml
create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/fedora/main.yml
create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/main.yml
create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/redhat/main.yml
create mode 100644 playbooks/roles/install-rcloud-deps/tasks/install-deps/suse/main.yml
create mode 100644 playbooks/roles/install-rcloud-deps/tasks/main.yml
create mode 100644 playbooks/roles/install-rust-deps/README.md
create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/debian/main.yml
create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/fedora/main.yml
create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/main.yml
create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/redhat/main.yml
create mode 100644 playbooks/roles/install-rust-deps/tasks/install-deps/suse/main.yml
create mode 100644 playbooks/roles/install-rust-deps/tasks/main.yml
create mode 100644 scripts/install-rcloud-deps.Makefile
create mode 100644 terraform-provider-rcloud/.gitignore
create mode 100644 terraform-provider-rcloud/README.md
create mode 100644 terraform-provider-rcloud/examples/main.tf
create mode 100644 terraform-provider-rcloud/go.mod
create mode 100644 terraform-provider-rcloud/go.sum
create mode 100644 terraform-provider-rcloud/internal/provider/client.go
create mode 100644 terraform-provider-rcloud/internal/provider/provider.go
create mode 100644 terraform-provider-rcloud/internal/provider/resource_vm.go
create mode 100644 terraform-provider-rcloud/main.go
create mode 100644 terraform/rcloud/Kconfig
create mode 100644 terraform/rcloud/main.tf
create mode 100644 terraform/rcloud/output.tf
create mode 100644 terraform/rcloud/provider.tf
create mode 100644 terraform/rcloud/shared.tf
create mode 100644 terraform/rcloud/vars.tf
create mode 100644 workflows/rcloud/.gitignore
create mode 100644 workflows/rcloud/Cargo.lock
create mode 100644 workflows/rcloud/Cargo.toml
create mode 100644 workflows/rcloud/DESIGN.md
create mode 100644 workflows/rcloud/Kconfig
create mode 100644 workflows/rcloud/Makefile
create mode 100644 workflows/rcloud/docs/AUTHENTICATION.md
create mode 100644 workflows/rcloud/docs/TESTING.md
create mode 100644 workflows/rcloud/scripts/check-health.py
create mode 100644 workflows/rcloud/src/api/handlers/health.rs
create mode 100644 workflows/rcloud/src/api/handlers/images.rs
create mode 100644 workflows/rcloud/src/api/handlers/metrics.rs
create mode 100644 workflows/rcloud/src/api/handlers/mod.rs
create mode 100644 workflows/rcloud/src/api/handlers/vms.rs
create mode 100644 workflows/rcloud/src/api/mod.rs
create mode 100644 workflows/rcloud/src/api/models.rs
create mode 100644 workflows/rcloud/src/api/routes.rs
create mode 100644 workflows/rcloud/src/config/kdevops.rs
create mode 100644 workflows/rcloud/src/config/mod.rs
create mode 100644 workflows/rcloud/src/lib.rs
create mode 100644 workflows/rcloud/src/main.rs
create mode 100644 workflows/rcloud/src/metrics.rs
create mode 100644 workflows/rcloud/src/vm/disk.rs
create mode 100644 workflows/rcloud/src/vm/manager.rs
create mode 100644 workflows/rcloud/src/vm/mod.rs
create mode 100644 workflows/rcloud/src/vm/xml.rs
create mode 100644 workflows/rcloud/tests/api_tests.rs
--
2.51.0
next reply other threads:[~2025-10-18 2:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-18 2:32 Luis Chamberlain [this message]
2025-10-18 2:32 ` [PATCH 1/5] install-rust-deps: Add generic Rust toolchain role Luis Chamberlain
2025-10-18 2:32 ` [PATCH 2/5] CLAUDE.md: Add Rust code quality requirements Luis Chamberlain
2025-10-18 2:32 ` [PATCH 3/5] bootlinux: Integrate Rust toolchain dependencies Luis Chamberlain
2025-10-18 2:32 ` [PATCH 4/5] install-go-deps: Add generic Go toolchain role Luis Chamberlain
2025-10-18 2:32 ` [PATCH 5/5] rcloud: Add experimental private cloud infrastructure for bare metal Luis Chamberlain
2025-10-18 18:22 ` [PATCH 0/5] rust + rcloud support Chuck Lever
2025-10-21 16:58 ` Luis Chamberlain
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251018023218.2240269-1-mcgrof@kernel.org \
--to=mcgrof@kernel.org \
--cc=cel@kernel.org \
--cc=da.gomez@kruces.com \
--cc=kdevops@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox