kdevops.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
From: Jeff Layton <jlayton@kernel.org>
To: Luis Chamberlain <mcgrof@kernel.org>
Cc: kdevops@lists.linux.dev, Jeff Layton <jlayton@kernel.org>
Subject: [PATCH kdevops v3 0/5] guestfs: replacement for vagrant in kdevops
Date: Mon, 11 Dec 2023 07:20:27 -0500	[thread overview]
Message-ID: <20231211-guestfs-v3-0-2811a6a0576d@kernel.org> (raw)

As we discussed recently at LPC, Vagrant is unmaintained and needs
replacement. This patchset implements a new "bringup" method alongside
Vagrant and Terraform, that uses libguestfs tools to create an image and
then has libvirt launch them directly:

    https://libguestfs.org/

The first 3 patches are cleanup patches that try to rework various
variable names to not have "VAGRANT" or "vagrant" embedded in them.
The last patch implements the new bringup method.

There may be some (hopefully minor) breakage to existing .config files
due to the first patch. I detailed the reasons why I think it's benign
in the changelog, but there is some risk there.

guestfs is not yet at feature parity yet with Vagrant:

- Fedora works for me, but the Debian image is _very_ minimal and seems
  to lack some things that kdevops expects. I haven't tested opensuse
  either.
- The XML template needs more work, particularly to handle more complex
  setups like PCI passthrough and CXL. Only the basic storage options
  currently work. Things like ZNS or large storage options haven't
  been implemented yet.
- I didn't try to convert the maze of menus for the distro selection. You
  have to set the os-version string for virt-builder in a single option.
  I tend to think of this as a feature, but I'm open to other opinions.
- It needs "firstrun" work to help the user ensure that the correct
  packages are installed for new bringup method.

Patches from others are welcome for all of the above.

Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
Changes in v3:
- cleaner separation between guestfs and vagrant
- should now work with custom QEMU
- more thorough Kconfig symbol renaming. This will break existing
  kconfigs so they will need to be regenerated
- guests now have no graphical console -- serial console only
- serial consoles are now logged (so we should be able to catch oopses)
- Link to v2: https://lore.kernel.org/r/20231208-guestfs-v2-0-082c11a3a0af@kernel.org

Changes in v2:
- give guestfs its own makefile instead of piggybacking on vagrant's
- do a more thorough conversion to remove VAGRANT from various variable
  names in kconfigs and makefiles

---
Jeff Layton (5):
      kconfig: move libvirt settings to a new file
      nfsd: key off of LIBVIRT instead of VAGRANT for storage config
      data_partition: make kconfig dependent on LIBVIRT instead of VAGRANT
      bringup: rename the RHEL registration settings
      guestfs: add a new local guest management variant

 Makefile                                           |    4 +
 Makefile.kdevops                                   |   14 +-
 defconfigs/cxl-switch                              |    2 +-
 kconfigs/Kconfig.bringup                           |   25 +
 kconfigs/Kconfig.libvirt                           | 1431 +++++++++++++++++++
 kconfigs/Kconfig.nfsd                              |   12 +-
 kconfigs/workflows/Kconfig.data_partition          |    8 +-
 playbooks/roles/devconfig/defaults/main.yml        |    4 +-
 .../devconfig/tasks/install-deps/redhat/main.yml   |    8 +-
 playbooks/roles/gen_nodes/defaults/main.yml        |    3 +-
 playbooks/roles/gen_nodes/tasks/main.yml           |   30 +
 playbooks/roles/gen_nodes/templates/Vagrantfile.j2 |   16 +-
 .../roles/gen_nodes/templates/guestfs_nodes.j2     |    3 +
 .../roles/gen_nodes/templates/guestfs_q35.j2.xml   |  223 +++
 .../roles/pynfs/tasks/install-deps/redhat/main.yml |    4 +-
 scripts/bringup.Makefile                           |    7 +-
 scripts/bringup_guestfs.sh                         |   91 ++
 scripts/bringup_vagrant.sh                         |    2 +-
 scripts/destroy_guestfs.sh                         |   29 +
 scripts/gen-nodes.Makefile                         |   16 +-
 scripts/guestfs.Makefile                           |   88 ++
 scripts/prune_stale_vagrant.sh                     |    2 +-
 scripts/update_ssh_config_guestfs.py               |   94 ++
 scripts/vagrant.Makefile                           |   22 +-
 vagrant/Kconfig                                    | 1455 +-------------------
 vagrant/Kconfig.fedora                             |   10 +-
 workflows/blktests/Kconfig                         |    2 +-
 workflows/fstests/Kconfig                          |    4 +-
 workflows/linux/Kconfig                            |    2 +-
 workflows/linux/Kconfig.kdevops                    |    2 +-
 workflows/linux/Kconfig.linus                      |    4 +-
 workflows/linux/Kconfig.mcgrof                     |    4 +-
 workflows/linux/Kconfig.next                       |    4 +-
 workflows/linux/Kconfig.stable                     |    4 +-
 34 files changed, 2100 insertions(+), 1529 deletions(-)
---
base-commit: b5ed5b095795155a3ff2e40958ca78b6f9a030c4
change-id: 20231206-guestfs-6b1c230f6b6f

Best regards,
-- 
Jeff Layton <jlayton@kernel.org>


             reply	other threads:[~2023-12-11 12:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-11 12:20 Jeff Layton [this message]
2023-12-11 12:20 ` [PATCH kdevops v3 1/5] kconfig: move libvirt settings to a new file Jeff Layton
2023-12-11 12:20 ` [PATCH kdevops v3 2/5] nfsd: key off of LIBVIRT instead of VAGRANT for storage config Jeff Layton
2023-12-11 12:20 ` [PATCH kdevops v3 3/5] data_partition: make kconfig dependent on LIBVIRT instead of VAGRANT Jeff Layton
2023-12-11 12:20 ` [PATCH kdevops v3 4/5] bringup: rename the RHEL registration settings Jeff Layton
2023-12-11 12:20 ` [PATCH kdevops v3 5/5] guestfs: add a new local guest management variant Jeff Layton
2023-12-11 14:12 ` [PATCH kdevops v3 0/5] guestfs: replacement for vagrant in kdevops Jeff Layton

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=20231211-guestfs-v3-0-2811a6a0576d@kernel.org \
    --to=jlayton@kernel.org \
    --cc=kdevops@lists.linux.dev \
    --cc=mcgrof@kernel.org \
    /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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).