* [PATCH v2 0/4] Add uniquifier to storage pool path
@ 2025-04-14 17:05 cel
2025-04-14 17:05 ` [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir cel
` (4 more replies)
0 siblings, 5 replies; 12+ messages in thread
From: cel @ 2025-04-14 17:05 UTC (permalink / raw)
To: kdevops; +Cc: Chuck Lever
From: Chuck Lever <chuck.lever@oracle.com>
I'd like to be able to run more than one instance of kdevops per
physical host. Currently the kdevops guestfs set-up steers all
storage pool activity into ${STORAGE_POOL}/kdevops/guestfs, which
means there's a good change that two different logged-in users will
create virtual machines whose names, OS base images, and block
devices will interfere with each other.
So far I haven't been able to get the other storage pool-related
settings to add sufficient uniqueness to prevent this conflict.
v2 introduces some additional clean-ups, and attempts to address
review comments.
Chuck Lever (4):
guestfs: Fix definition of guestfs_storage_dir
install_vagrant: Remove this role
Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH
guestfs: Per-user storage pools
Makefile.kdevops | 6 -
docs/ansible-roles.md | 1 -
docs/kdevops-vagrant.md | 3 -
kconfigs/Kconfig.guestfs | 7 +-
kconfigs/Kconfig.libvirt | 2 +-
playbooks/install_vagrant.yml | 4 -
playbooks/roles/install_vagrant/README.md | 46 ------
playbooks/roles/install_vagrant/Vagrantfile | 3 -
.../roles/install_vagrant/defaults/main.yml | 38 -----
.../files/ruby_extensions_devel_key.pub | 20 ---
.../roles/install_vagrant/files/vagrant.pub | 21 ---
.../tasks/install-deps/debian/main.yml | 86 ----------
.../tasks/install-deps/fedora/main.yml | 14 --
.../tasks/install-deps/main.yml | 27 ----
.../tasks/install-deps/redhat/main.yml | 148 ------------------
.../tasks/install-deps/suse/add_obs_repo.yml | 137 ----------------
.../tasks/install-deps/suse/main.yml | 119 --------------
.../roles/install_vagrant/tasks/main.yml | 43 -----
.../tasks/enable-user/redhat/main.yml | 8 +-
scripts/bringup.Makefile | 1 -
scripts/bringup_guestfs.sh | 3 +-
scripts/destroy_guestfs.sh | 2 +-
scripts/guestfs.Makefile | 2 +-
23 files changed, 9 insertions(+), 732 deletions(-)
delete mode 100644 playbooks/install_vagrant.yml
delete mode 100644 playbooks/roles/install_vagrant/README.md
delete mode 100644 playbooks/roles/install_vagrant/Vagrantfile
delete mode 100644 playbooks/roles/install_vagrant/defaults/main.yml
delete mode 100644 playbooks/roles/install_vagrant/files/ruby_extensions_devel_key.pub
delete mode 100644 playbooks/roles/install_vagrant/files/vagrant.pub
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/debian/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/fedora/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/redhat/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/suse/add_obs_repo.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/suse/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/main.yml
--
2.49.0
^ permalink raw reply [flat|nested] 12+ messages in thread
* [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir
2025-04-14 17:05 [PATCH v2 0/4] Add uniquifier to storage pool path cel
@ 2025-04-14 17:05 ` cel
2025-04-23 6:36 ` Luis Chamberlain
2025-04-14 17:05 ` [PATCH v2 2/4] install_vagrant: Remove this role cel
` (3 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: cel @ 2025-04-14 17:05 UTC (permalink / raw)
To: kdevops; +Cc: Chuck Lever, Daniel Gomez
From: Chuck Lever <chuck.lever@oracle.com>
{{ kdevops_storage_pool_path }} already ends with "/kdevops", so
remove that string from the end of guestfs_storage_dir to ensure
the permissions check is examining the correct directory.
Reviewed-by: Daniel Gomez <da.gomez@samsung.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
kconfigs/Kconfig.guestfs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kconfigs/Kconfig.guestfs b/kconfigs/Kconfig.guestfs
index d309436fa7c9..460ee703fd68 100644
--- a/kconfigs/Kconfig.guestfs
+++ b/kconfigs/Kconfig.guestfs
@@ -8,7 +8,7 @@ config STORAGE_POOL_PATH
config GUESTFS_STORAGE_DIR
string
output yaml
- default "{{ kdevops_storage_pool_path }}/kdevops/guestfs"
+ default "{{ kdevops_storage_pool_path }}/guestfs"
config GUESTFS_BASE_IMAGE_DIR
string
--
2.49.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 2/4] install_vagrant: Remove this role
2025-04-14 17:05 [PATCH v2 0/4] Add uniquifier to storage pool path cel
2025-04-14 17:05 ` [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir cel
@ 2025-04-14 17:05 ` cel
2025-04-23 6:23 ` Luis Chamberlain
2025-04-14 17:05 ` [PATCH v2 3/4] Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH cel
` (2 subsequent siblings)
4 siblings, 1 reply; 12+ messages in thread
From: cel @ 2025-04-14 17:05 UTC (permalink / raw)
To: kdevops; +Cc: Chuck Lever
From: Chuck Lever <chuck.lever@oracle.com>
Now that vagrant can no longer be used, this role is never invoked
and cannot be tested. Remove it so that it does not become a source
of technical debt.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
Makefile.kdevops | 6 -
docs/ansible-roles.md | 1 -
docs/kdevops-vagrant.md | 3 -
playbooks/install_vagrant.yml | 4 -
playbooks/roles/install_vagrant/README.md | 46 ------
playbooks/roles/install_vagrant/Vagrantfile | 3 -
.../roles/install_vagrant/defaults/main.yml | 38 -----
.../files/ruby_extensions_devel_key.pub | 20 ---
.../roles/install_vagrant/files/vagrant.pub | 21 ---
.../tasks/install-deps/debian/main.yml | 86 ----------
.../tasks/install-deps/fedora/main.yml | 14 --
.../tasks/install-deps/main.yml | 27 ----
.../tasks/install-deps/redhat/main.yml | 148 ------------------
.../tasks/install-deps/suse/add_obs_repo.yml | 137 ----------------
.../tasks/install-deps/suse/main.yml | 119 --------------
.../roles/install_vagrant/tasks/main.yml | 43 -----
scripts/bringup.Makefile | 1 -
17 files changed, 717 deletions(-)
delete mode 100644 playbooks/install_vagrant.yml
delete mode 100644 playbooks/roles/install_vagrant/README.md
delete mode 100644 playbooks/roles/install_vagrant/Vagrantfile
delete mode 100644 playbooks/roles/install_vagrant/defaults/main.yml
delete mode 100644 playbooks/roles/install_vagrant/files/ruby_extensions_devel_key.pub
delete mode 100644 playbooks/roles/install_vagrant/files/vagrant.pub
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/debian/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/fedora/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/redhat/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/suse/add_obs_repo.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/install-deps/suse/main.yml
delete mode 100644 playbooks/roles/install_vagrant/tasks/main.yml
diff --git a/Makefile.kdevops b/Makefile.kdevops
index 2c36dce47eb1..60d79a5a3e48 100644
--- a/Makefile.kdevops
+++ b/Makefile.kdevops
@@ -14,11 +14,6 @@ kdevops_terraform_deps:
$(KDEVOPS_PLAYBOOKS_DIR)/install_terraform.yml
PHONY += kdevops_terraform_deps
-kdevops_vagrant_install_vagrant:
- $(Q)ansible-playbook $(ANSIBLE_VERBOSE) --connection=local \
- --inventory localhost, \
- $(KDEVOPS_PLAYBOOKS_DIR)/install_vagrant.yml
-
kdevops_install_libvirt:
$(Q)ansible-playbook $(ANSIBLE_VERBOSE) --connection=local \
--inventory localhost, \
@@ -31,7 +26,6 @@ kdevops_configure_libvirt:
-e 'running_user=$(USER)'
kdevops_vagrant_deps: \
- kdevops_vagrant_install_vagrant \
kdevops_install_libvirt \
kdevops_configure_libvirt
diff --git a/docs/ansible-roles.md b/docs/ansible-roles.md
index d900fa458bfd..dfb05b9fd798 100644
--- a/docs/ansible-roles.md
+++ b/docs/ansible-roles.md
@@ -7,7 +7,6 @@ The following local ansible roles are used:
* [create_partition](./playbooks/roles/create_partition/README.md)
* create_data_partition: creates the data partition, uses the `create_partition` role
* [install_terraform/](./playbooks/roles/install_terraform/README.md)
- * [install_vagrant/](./playbooks/roles/install_vagrant/README.md)
* [install_vagrant_boxes](./playbooks/roles/install_vagrant_boxes/README.md)
* [libvirt_user](./playbooks/roles/libvirt_user/README.md)
* [update_ssh_config_vagrant](./playbooks/roles/update_ssh_config_vagrant/README.md)
diff --git a/docs/kdevops-vagrant.md b/docs/kdevops-vagrant.md
index ae2ad831d21a..1e214d096d86 100644
--- a/docs/kdevops-vagrant.md
+++ b/docs/kdevops-vagrant.md
@@ -1,8 +1,5 @@
# Vagrant support - localized VMs
-Read the [kdevops_vagrant](playbooks/roles/install_vagrant/README.md)
-documentation, then come here and read this.
-
Vagrant is used to easily deploy non-cloud virtual machines. Below are
the list of providers supported:
diff --git a/playbooks/install_vagrant.yml b/playbooks/install_vagrant.yml
deleted file mode 100644
index af6bb5e1c406..000000000000
--- a/playbooks/install_vagrant.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-- hosts: localhost
- roles:
- - role: install_vagrant
diff --git a/playbooks/roles/install_vagrant/README.md b/playbooks/roles/install_vagrant/README.md
deleted file mode 100644
index 198c25515576..000000000000
--- a/playbooks/roles/install_vagrant/README.md
+++ /dev/null
@@ -1,46 +0,0 @@
-install-vagrant
-===============
-
-The Ansible install-vagrant role lets you get install Vagrant, and on Linux
-also installs the vagrant-libvirt plugin.
-
-Requirements
-------------
-
-Run a supported OS/distribution:
-
- * SUSE SLE / OpenSUSE
- * Red Hat / Fedora
- * Debian / Ubuntu
-
-Role Variables
---------------
-
- * vagrant_version: the Vagrant version to install. This is only used if
- downloading and installing the zip file.
- * force_install_zip: if your distro supports a package ignore it, and instead
- installt he package from the zip file directly from HashiCorp
- * force_install_if_present: set to False by default, set this to True to
- force download Vagrant even if you already have it present.
-
-Dependencies
-------------
-
-None.
-
-Example Playbook
-----------------
-
-Below is an example playbook, say a bootlinux.yml file:
-
-```
----
-- hosts: localhost
- roles:
- - role: mcgrof.install-vagrant
-```
-
-License
--------
-
-copyleft-next-0.3.1
diff --git a/playbooks/roles/install_vagrant/Vagrantfile b/playbooks/roles/install_vagrant/Vagrantfile
deleted file mode 100644
index ef6b17fc13b1..000000000000
--- a/playbooks/roles/install_vagrant/Vagrantfile
+++ /dev/null
@@ -1,3 +0,0 @@
-unless Vagrant.has_plugin?("vagrant-libvirt")
- raise 'vagrant-libvirt is not installed!'
-end
diff --git a/playbooks/roles/install_vagrant/defaults/main.yml b/playbooks/roles/install_vagrant/defaults/main.yml
deleted file mode 100644
index 0941b97d0ca1..000000000000
--- a/playbooks/roles/install_vagrant/defaults/main.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-# SPDX-License-Identifier copyleft-next-0.3.1
----
-
-storage_pool_user: "root"
-storage_pool_group: "root"
-
-# kdevops *owns* this so we expect to set this to something
-# sensible with kconfig.
-kdevops_storage_pool_user: "root"
-kdevops_storage_pool_group: "root"
-
-libvirt_provider: False
-virtualbox_provider: False
-libvirt_storage_pool_create: False
-
-storage_pool_path: "/dev/null"
-kdevops_storage_pool_path: "/dev/null"
-
-# You can override these
-vagrant_version: "2.2.19"
-
-# Ignores using distro packages and installs from zip file instead
-force_install_zip: False
-
-# Forces to install even if it is already present
-force_install_if_present: False
-
-# Set this to True and create a map with the sle_distro_end_map variable
-# if you are working with unreleased distros, which have no public OBS URLs yet.
-sle_custom_repo_distro_end: False
-
-# Example boxes with URLs. You would override this.
-#
-# For instance, for SLE 15.2 we'd want to use:
-# https://download.opensuse.org/repositories/Virtualization:/vagrant/SLE_15-SP1/
-# for now, as we have no public release on obs for 15.2 yet.
-sle_distro_end_map:
- - { obs_project_name: 'Virtualization:vagrant', ansible_distribution_version: '15.2', repo_distro_end: '15-SP1' }
diff --git a/playbooks/roles/install_vagrant/files/ruby_extensions_devel_key.pub b/playbooks/roles/install_vagrant/files/ruby_extensions_devel_key.pub
deleted file mode 100644
index e34b0c1fe170..000000000000
--- a/playbooks/roles/install_vagrant/files/ruby_extensions_devel_key.pub
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.5 (GNU/Linux)
-
-mQGiBEh7UZcRBACLvGPkYIZVbMpfDmIwQ+Dv1mGuMZ2nRnWZSMfled6W+njVjCXV
-ogw1dOeR4guVADsTkkOXPGy9ehfBB0hLxQVVRIuZtsGY+SsqG8QhStmYkbm8hF8w
-V0OpVNYSHkkeCRkXba8xNQFtxP+7qqLcCIvsH5kkw5xtS9AgtKVUKARh+wCg90PK
-lVsDq3xlQy5Sxm7y1oVTY0UEAIK0Zkh0nVf5oaGeQ5ADXLxqGZHwzrUsX6otKl2M
-fAPHLF2d+W2IFCQg3vxok2ON1y0iaaT/lJTx345Eo0PTY7iUJz+lK4u3wvgHk/jN
-ZiMzZlRfZ5JKGph2kTw3rgXPc727a2tlGCaR56BtxMhGFs9pQzZt8w5vFVpJ456u
-pKNYA/9wyRFS/3gGzMfndM/qst8gJ8pLAa8omAyu4PXyZKcvNmq+YV6t/WXrt/wF
-mvEZwZzbPp5dwER6JKLW33N433a/h3ABT2nW1vapa4c78KfOyk3C+eY5mrH9UmhK
-nfRAacH6XOnLoDSRjfY2hbHZmeRGvaz237QkXk6ojGZ7x3chGLRKZGV2ZWw6bGFu
-Z3VhZ2VzOnJ1YnkgT0JTIFByb2plY3QgPGRldmVsOmxhbmd1YWdlczpydWJ5QGJ1
-aWxkLm9wZW5zdXNlLm9yZz6IZgQTEQIAJgUCW8Q6+AIbAwUJF2eZYQYLCQgHAwIE
-FQIIAwQWAgMBAh4BAheAAAoJEJrwyaIOmvEj75AAmwYlB0mYqsYycWJ77bl+oeiL
-sHjgAJ43giIbI7qOcxuTE+JmKeg8kfIyx4hGBBMRAgAGBQJIe1GXAAoJEDswEbdr
-nWUj2GkAn3w67FAdfBcX8/ax3PkgPeiLucqmAJ4m2LnytD9F1/oeRmOrBS8hgmIp
-5w==
-=fmVv
------END PGP PUBLIC KEY BLOCK-----
diff --git a/playbooks/roles/install_vagrant/files/vagrant.pub b/playbooks/roles/install_vagrant/files/vagrant.pub
deleted file mode 100644
index 13d9f438e9aa..000000000000
--- a/playbooks/roles/install_vagrant/files/vagrant.pub
+++ /dev/null
@@ -1,21 +0,0 @@
------BEGIN PGP PUBLIC KEY BLOCK-----
-Version: GnuPG v1.4.5 (GNU/Linux)
-
-mQENBFImAl0BCACkjaXGvVLHBGTVXVP0khtpUVHqFvCRtaIIMHaX/5oTr3nyehDQ
-Ex9VLsSRcNa0QxtnCHFRQzjWWqe+i6pBginnSjucgmjnIKyJsF4l6R+rwAiinHQX
-C4s6Lqg/wH9xDPRBrMYFqlc/7MVf0Glhk1+lAxgQjolMt+5AbbrWlBbwc/i+++zl
-ES3MaeH8aiwup/ogjhmk0SbCQQ/ib21p3XWBwx2oz/KM6Voq9tKDvMczjzNRY3ZT
-6Di3FsUSKI7kgljiNiuN+675YwqEqxWEJgdE5a7Zb67giH1Ik08b5wQiF5jSAICD
-DxW7/ibWBvZJnqhqQT2xJpLC5VaJqwkN8o83ABEBAAG0PlZpcnR1YWxpemF0aW9u
-IE9CUyBQcm9qZWN0IDxWaXJ0dWFsaXphdGlvbkBidWlsZC5vcGVuc3VzZS5vcmc+
-iQE8BBMBAgAmBQJaPd9XAhsDBQkMNoz6BgsJCAcDAgQVAggDBBYCAwECHgECF4AA
-CgkQoZP7tXIXT8JL9AgAmSAr5NOzSZ6HE6P8aEMMdH5gK3PWfBhIVUvnAql4/90Y
-0AnUXAFgwf4WS8qqd4s/yCoXKmQ/trEJINVIOcISYRmuZxZnO65AgYSUqcKa7M0X
-YJYCaEexML/AUqNjPPd7aoISxgxHPYF5rvKKq29Q5ORas5mDQGUWCcSo+Nx6twh1
-t+HJyhAK+CFRFDns57jXHf7QDlKGM0+9wfgwi7E61+bEbSIISEco/lyH1u1epqvN
-1SDXzauGZRi7nu39+DN8CJpw1l40GafB6KGkKQ0wQ1ORZP21LnQ2YCvniIeiZwEu
-5eVxIpoKOmIIzAk1DWLfelaFhM2bwpjRKScNbFikZohGBBMRAgAGBQJSJgJdAAoJ
-EDswEbdrnWUjucgAoK+hIu0GfjwJoODK+XW/uDN2nqQBAJ4lN90WkygQhpMEIupB
-6+FWiCNvxA==
-=yQVo
------END PGP PUBLIC KEY BLOCK-----
diff --git a/playbooks/roles/install_vagrant/tasks/install-deps/debian/main.yml b/playbooks/roles/install_vagrant/tasks/install-deps/debian/main.yml
deleted file mode 100644
index 0638dae6183f..000000000000
--- a/playbooks/roles/install_vagrant/tasks/install-deps/debian/main.yml
+++ /dev/null
@@ -1,86 +0,0 @@
----
-- name: Verify Vagrant installation
- command: "which vagrant"
- register: vagrant_present
- changed_when: vagrant_present.rc == 1
- failed_when: vagrant_present.rc != 0 and vagrant_present.rc != 1
- tags: [ 'vagrant', 'verify' ]
-
-- name: Update apt cache
- become: yes
- become_method: sudo
- apt:
- update_cache: yes
- when:
- - not force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
- tags: install
-
-- name: Install Vagrant and vagrant-libvirt
- become: yes
- become_method: sudo
- apt:
- name:
- - vagrant
- - vagrant-libvirt
- state: present
- when:
- - not force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
- tags: install
-
-- name: Download Vagrant from the latest release and install locally
- become: yes
- become_method: sudo
- unarchive:
- src: https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_linux_amd64.zip
- dest: /usr/local/bin
- remote_src: yes
- when:
- - force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
-
-# This is a major heck, alas, Vagrant plugin subset commands do not have any
-# easy way to confirm if a plugin is installed in a straight forward way.
-# Otherwise, we'd install vagrant-libvirt without checking, and even if
-# that is installed the latest version, this takes *forever*.
-- name: Check if the Vagrant plugin vagrant-libvirt is installed
- shell: |
- set -o pipefail
- vagrant status
- args:
- executable: /bin/bash
- chdir: "{{ role_path }}"
- register: plugin_check
- changed_when: plugin_check.rc == 0
- failed_when: plugin_check.rc != 0 and plugin_check.rc != 1
- run_once: true
- when:
- - force_install_zip|bool
-
-- name: Install vagrant-libvirt build dependencies
- become: yes
- become_method: sudo
- apt:
- name:
- - vagrant
- - ruby-libvirt
- state: build-dep
- when:
- - force_install_zip|bool and plugin_check.rc != 0
-
-- name: Installs the libvirt Vagrant plugin
- command: "vagrant plugin install vagrant-libvirt"
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
- when:
- - force_install_zip|bool
- - plugin_check.rc != 0
-
-- name: Install the timezone Vagrant plugin
- command: "vagrant plugin install vagrant-timezone"
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
- when:
- - force_install_zip|bool
- - plugin_check.rc != 0
diff --git a/playbooks/roles/install_vagrant/tasks/install-deps/fedora/main.yml b/playbooks/roles/install_vagrant/tasks/install-deps/fedora/main.yml
deleted file mode 100644
index 45cce5f7d8d2..000000000000
--- a/playbooks/roles/install_vagrant/tasks/install-deps/fedora/main.yml
+++ /dev/null
@@ -1,14 +0,0 @@
----
-- name: Install vagrant and vagrant-plugin-libvirt
- become: yes
- become_method: sudo
- dnf:
- name:
- - vagrant
- - vagrant-libvirt
- state: present
-
-- name: Install the timezone vagrant plugin
- command: "vagrant plugin install vagrant-timezone"
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
diff --git a/playbooks/roles/install_vagrant/tasks/install-deps/main.yml b/playbooks/roles/install_vagrant/tasks/install-deps/main.yml
deleted file mode 100644
index 87b87f3b4ba2..000000000000
--- a/playbooks/roles/install_vagrant/tasks/install-deps/main.yml
+++ /dev/null
@@ -1,27 +0,0 @@
----
-- name: Import optional distribution specific variables
- include_vars: "{{ item }}"
- ignore_errors: yes
- with_first_found:
- - files:
- - "{{ ansible_facts['os_family']|lower }}.yml"
- skip: true
- tags: vars
-
-- name: Debian-specific setup
- include_tasks: debian/main.yml
- when: ansible_facts['os_family']|lower == 'debian'
-
-- name: SuSE-specific setup
- include_tasks: suse/main.yml
- when: ansible_facts['os_family']|lower == 'suse'
-
-- name: Red Hat Enterprise-specific setup
- include_tasks: redhat/main.yml
- when:
- - ansible_facts['os_family']|lower == 'redhat'
- - ansible_facts['distribution']|lower != "fedora"
-
-- name: Fedora-specific setup
- include_tasks: fedora/main.yml
- when: ansible_facts['distribution']|lower == "fedora"
diff --git a/playbooks/roles/install_vagrant/tasks/install-deps/redhat/main.yml b/playbooks/roles/install_vagrant/tasks/install-deps/redhat/main.yml
deleted file mode 100644
index 1424dc13020f..000000000000
--- a/playbooks/roles/install_vagrant/tasks/install-deps/redhat/main.yml
+++ /dev/null
@@ -1,148 +0,0 @@
----
-# RH doesn't have any up to date reasonable package for
-# vagrant or vagrant-libvirt
-- name: Set generic redhat/fedora specific distro facts
- set_fact:
- force_install_zip: true
-
-- name: Nuke vagrant binary manually
- become: yes
- become_method: sudo
- file:
- path: "/usr/local/bin/vagrant"
- state: absent
- when:
- - force_install_zip|bool
-
-- name: Install requiredments to run our verifications or to download vagrant
- become: yes
- become_method: sudo
- yum:
- name:
- - fuse
- - unzip
- - bsdtar
- state: present
- tags: install
-
-- name: Verify vagrant installation
- command: "which vagrant"
- register: vagrant_present
- changed_when: vagrant_present.rc == 1
- failed_when: vagrant_present.rc != 0 and vagrant_present.rc != 1
- tags: [ 'vagrant', 'verify' ]
-
-- name: Install vagrant and vagrant-libvirt
- become: yes
- become_method: sudo
- yum:
- name:
- - vagrant
- - vagrant-libvirt
- state: present
- when:
- - not force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
- tags: install
-
-- name: Download Vagrant from the latest release and install locally
- become: yes
- become_method: sudo
- unarchive:
- src: https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_linux_amd64.zip
- dest: /usr/local/bin
- remote_src: yes
- when:
- - force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
-
-# This is a major heck, alas, vagrant plugin subset commands do not have any
-# easy way to confirm if a plugin is installed in a straight forward way.
-# Otherwise, we'd install vagrant-libvirt without checking, and even if
-# that is installed the latest version, this takes *forever*.
-- name: Check if the vagrant plugin vagrant-libvirt is installed
- shell: |
- set -o pipefail
- vagrant status
- args:
- executable: /bin/bash
- chdir: "{{ role_path }}"
- register: plugin_check
- changed_when: plugin_check.rc == 0
- failed_when: plugin_check.rc != 0 and plugin_check.rc != 1
- run_once: true
- when:
- - force_install_zip|bool
-
-# This is a major heck, alas, vagrant plugin subset commands do not have any
-# easy way to confirm if a plugin is installed in a straight forward way.
-# Otherwise, we'd install vagrant-libvirt without checking, and even if
-# that is installed the latest version, this takes *forever*.
-- name: Check if the vagrant plugin vagrant-libvirt is installed
- shell: |
- set -o pipefail
- vagrant status
- args:
- executable: /bin/bash
- chdir: "{{ role_path }}"
- register: plugin_check
- changed_when: plugin_check.rc == 0
- failed_when: plugin_check.rc != 0 and plugin_check.rc != 1
- run_once: true
-
-- name: Enable libvirtd
- become: yes
- become_method: sudo
- systemd:
- name: libvirtd
- enabled: yes
- masked: no
-
-- name: Start libvirtd
- become: yes
- become_method: sudo
- systemd:
- name: libvirtd
- state: restarted
-
-- name: Install vagrant-libvirt build dependencies
- become: yes
- become_method: sudo
- yum:
- name:
- - libvirt-devel
- - openssl-devel
- - ruby-devel
- - gcc
- - rubygem-ruby-libvirt
- - rubygem-rake
- - autoconf
- - automake
- - byacc
- - binutils
- - libguestfs-tools
- - wget
- - zlib-devel
- state: present
- when:
- - force_install_zip|bool and plugin_check.rc != 0
-
-- name: Installs the libvirt vagrant plugin
- command: "vagrant plugin install vagrant-libvirt"
- environment:
- CONFIGURE_ARGS: 'with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib64'
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
- when:
- - force_install_zip|bool
- - plugin_check.rc != 0
-
-- name: Install the timezone vagrant plugin
- command: "vagrant plugin install vagrant-timezone"
- environment:
- CONFIGURE_ARGS: 'with-libvirt-include=/usr/include/libvirt with-libvirt-lib=/usr/lib64'
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
- when:
- - force_install_zip|bool
- - plugin_check.rc != 0
diff --git a/playbooks/roles/install_vagrant/tasks/install-deps/suse/add_obs_repo.yml b/playbooks/roles/install_vagrant/tasks/install-deps/suse/add_obs_repo.yml
deleted file mode 100644
index ad82270b9967..000000000000
--- a/playbooks/roles/install_vagrant/tasks/install-deps/suse/add_obs_repo.yml
+++ /dev/null
@@ -1,137 +0,0 @@
----
-- name: Verify obs_project_name is defined
- fail:
- msg: Fail when the OBS project name is not set
- when: obs_project_name is not defined
-
-- name: Set SUSE repo specific distro facts
- set_fact:
- obs_url: "https://build.opensuse.org/"
- obs_project_no_collon: "{{ obs_project_name | lower | replace(':', '_') }}"
-
-- name: Set OBS pubkey file location
- set_fact:
- obs_project_signkey: "/usr/local/share/{{ obs_project_no_collon }}.pub"
-
-- name: Ensure that /usr/local/share/ is a directory
- file:
- path: /usr/local/share/
- state: directory
-
-- block:
- - name: Set pubkey URL
- set_fact:
- pubkey_url: "{{ obs_url }}projects/{{ obs_project_name }}/public_key"
-
- - name: Fetch the repository's public key
- become: yes
- become_method: sudo
- get_url:
- url: "{{ pubkey_url }}"
- validate_certs: yes
- dest: "{{ obs_project_signkey }}"
-
- when: obs_project_gpg_key is not defined
-
-- name: Copy the repository's public key to the remote machine
- become: yes
- become_method: sudo
- copy:
- src: "{{ obs_project_gpg_key }}"
- dest: "{{ obs_project_signkey }}"
- when: obs_project_gpg_key is defined
-
-- name: Import the signkey into the rpm key database
- become: yes
- become_method: sudo
- rpm_key:
- state: present
- key: "{{ obs_project_signkey }}"
-
-- block:
- - name: Set Leap repository names
- set_fact:
- repo_distro_end: "openSUSE_Leap_{{ ansible_distribution_version }}"
- when: 'is_leap | bool'
-
- - name: Set Tumbleweed repository names
- set_fact:
- repo_distro_end: "openSUSE_Tumbleweed"
- when: 'is_tumbleweed | bool'
-
- - name: Set SLE repository names
- set_fact:
- repo_distro_end: "SLE_{{ ansible_distribution_version | replace('.', '_SP') }}"
- when: 'is_sle | bool'
-
- when: obs_project_repository_name is not defined
-
-- name: Set obs project repo URL
- set_fact:
- obs_project_repo_base: "{{ obs_url | replace('build', 'download') }}repositories/{{ obs_project_name | replace(':', ':/') }}/"
-
-- name: Forced SLE custom distro end name to a temporary name from config file
- set_fact:
- repo_distro_end: "{{ repo.repo_distro_end }}"
- with_items:
- - "{{ sle_distro_end_map }}"
- loop_control:
- loop_var: repo
- when:
- - 'sle_custom_repo_distro_end | bool'
- - 'is_sle | bool'
- - ansible_distribution_version == repo.ansible_distribution_version
- - obs_project_name == repo.obs_project_name
-
-- name: Try to fetch the obs project .repo file
- become: yes
- become_method: sudo
- get_url:
- url: "{{ obs_project_repo_base }}/{{ repo_distro_end }}/{{ obs_project_name }}.repo"
- dest: /dev/null
- force: yes
- register: default_end_fetch
- ignore_errors: true
- changed_when: false
-
-- block:
- - name: Set distro end name for tumbleweed
- set_fact:
- repo_distro_end: openSUSE_Factory
- when: 'is_tumbleweed | bool'
-
- - name: Set distro end name for SLE
- set_fact:
- repo_distro_end: "SLE_{{ ansible_distribution_version | replace('.', '-SP') }}"
- when: 'is_sle | bool'
-
- - name: Try to fetch the project .repo file again
- become: yes
- become_method: sudo
- get_url:
- url: "{{ obs_project_repo_base }}/{{ repo_distro_end }}/{{ obs_project_name }}.repo"
- dest: /dev/null
- force: yes
- register: second_end_fetch
- changed_when: false
- ignore_errors: true
-
- - name: Set repo end name for SLE when second end fetch fails
- set_fact:
- repo_distro_end: "SLE-{{ ansible_distribution_version | replace('.', '-SP') }}"
- when: '(is_sle | bool) and (second_end_fetch.failed | bool)'
-
- when: 'default_end_fetch.failed | bool'
-
-- name: Set obs project repo URL
- set_fact:
- obs_project_repo_url: "{{ obs_project_repo_base }}/{{ repo_distro_end }}"
-
-- name: Add the repository
- become: yes
- become_method: sudo
- zypper_repository:
- repo: "{{ obs_project_repo_url }}"
- name: "{{ obs_project_no_collon }}"
- state: present
- runrefresh: yes
diff --git a/playbooks/roles/install_vagrant/tasks/install-deps/suse/main.yml b/playbooks/roles/install_vagrant/tasks/install-deps/suse/main.yml
deleted file mode 100644
index 87e228d485c3..000000000000
--- a/playbooks/roles/install_vagrant/tasks/install-deps/suse/main.yml
+++ /dev/null
@@ -1,119 +0,0 @@
----
-- name: Set generic SUSE specific distro facts
- set_fact:
- is_sle: '{{ (ansible_distribution == "SLES") or (ansible_distribution == "SLED") }}'
- is_leap: '{{ "Leap" in ansible_distribution }}'
- is_tumbleweed: '{{ "openSUSE Tumbleweed" == ansible_distribution }}'
-
-- name: Verify vagrant installation
- command: "which vagrant"
- register: vagrant_present
- changed_when: vagrant_present.rc == 1
- failed_when: vagrant_present.rc != 0 and vagrant_present.rc != 1
- tags: [ 'vagrant', 'verify' ]
-
-- name: "Add the following development opensuse projects"
- include_tasks: ./add_obs_repo.yml
- vars:
- obs_project_name: "{{ item.name }}"
- obs_project_gpg_key: "{{ item.key }}"
- loop:
- - name: "devel:languages:ruby:extensions"
- key: files/ruby_extensions_devel_key.pub
- - name: "Virtualization:vagrant"
- key: files/vagrant.pub
- when:
- - not force_install_if_present|bool
- - not force_install_zip|bool
- - vagrant_present.rc != 0
- - is_sle or is_leap
-
-- name: Install vagrant and vagrant-libvirt from opensuse repository
- become: yes
- become_method: sudo
- zypper:
- name:
- - vagrant
- - vagrant-libvirt
- extra_args: '--allow-vendor-change'
- state: latest
- disable_recommends: no
- when:
- - not force_install_zip|bool
- - not force_install_if_present|bool
- - vagrant_present.rc != 0
- - is_sle or is_leap
-
-- name: Install vagrant and vagrant-libvirt from your tumbleweed repository
- become: yes
- become_method: sudo
- zypper:
- name:
- - vagrant
- - vagrant-libvirt
- when:
- - not force_install_zip|bool
- - not force_install_if_present|bool
- - vagrant_present.rc != 0
- - is_tumbleweed
-
-- name: Download Vagrant from the latest release and install locally
- become: yes
- become_method: sudo
- unarchive:
- src: https://releases.hashicorp.com/vagrant/{{ vagrant_version }}/vagrant_{{ vagrant_version }}_linux_amd64.zip
- dest: /usr/local/bin
- remote_src: yes
- when:
- - force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
-
-# This is a major heck, alas, vagrant plugin subset commands do not have any
-# easy way to confirm if a plugin is installed in a straight forward way.
-# Otherwise, we'd install vagrant-libvirt without checking, and even if
-# that is installed the latest version, this takes *forever*.
-- name: Check if the vagrant plugin vagrant-libvirt is installed
- shell: |
- set -o pipefail
- vagrant status
- args:
- executable: /bin/bash
- chdir: "{{ role_path }}"
- register: plugin_check
- changed_when: plugin_check.rc == 0
- failed_when: plugin_check.rc != 0 and plugin_check.rc != 1
- run_once: true
- when:
- - force_install_zip|bool
-
-- name: Install vagrant-libvirt build dependencies
- become: yes
- become_method: sudo
- zypper:
- name:
- - qemu
- - libvirt
- - libvirt-devel
- - ruby-devel
- - gcc
- - qemu-kvm
- state: present
- when:
- - force_install_zip|bool
- - plugin_check.rc != 0
-
-- name: Installs the libvirt vagrant plugin
- command: "vagrant plugin install vagrant-libvirt"
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
- when:
- - force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
-
-- name: Install the timezone vagrant plugin
- command: "vagrant plugin install vagrant-timezone"
- register: cmd_done
- changed_when: "cmd_done.rc == 0"
- when:
- - force_install_zip|bool
- - force_install_if_present|bool or vagrant_present.rc != 0
diff --git a/playbooks/roles/install_vagrant/tasks/main.yml b/playbooks/roles/install_vagrant/tasks/main.yml
deleted file mode 100644
index 66aebc48cc50..000000000000
--- a/playbooks/roles/install_vagrant/tasks/main.yml
+++ /dev/null
@@ -1,43 +0,0 @@
----
-- name: Import optional extra_args file
- include_vars: "{{ item }}"
- ignore_errors: yes
- with_first_found:
- - files:
- - "../extra_vars.yml"
- - "../extra_vars.yaml"
- - "../extra_vars.json"
- skip: true
- tags: vars
-
-# Distro specific
-- name: Install Vagrant and other dependencies
- include_tasks: install-deps/main.yml
-
-- name: Create a base storage pool if it does not exist
- become: yes
- become_method: sudo
- file:
- path: "{{ storage_pool_path }}"
- state: directory
- mode: 'g+rw,o+rx'
- owner: "{{ storage_pool_user }}"
- group: "{{ storage_pool_group }}"
- delegate_to: localhost
- run_once: true
- when:
- - libvirt_storage_pool_create|bool
-
-- name: Create a kdevops specific storage pool for Vagrant if it does not exist
- become: yes
- become_method: sudo
- file:
- path: "{{ kdevops_storage_pool_path }}"
- state: directory
- mode: 'o+rwxs,g+rxws'
- owner: "{{ kdevops_storage_pool_user }}"
- group: "{{ kdevops_storage_pool_group }}"
- delegate_to: localhost
- run_once: true
- when:
- - libvirt_storage_pool_create|bool
diff --git a/scripts/bringup.Makefile b/scripts/bringup.Makefile
index ad8e8d0aa750..5a04448e6970 100644
--- a/scripts/bringup.Makefile
+++ b/scripts/bringup.Makefile
@@ -6,7 +6,6 @@ else
stage-2-$(CONFIG_TERRAFORM) += kdevops_terraform_deps
stage-2-$(CONFIG_LIBVIRT_INSTALL) += kdevops_install_libvirt
stage-2-$(CONFIG_LIBVIRT_CONFIGURE) += kdevops_configure_libvirt
-stage-2-$(CONFIG_VAGRANT) += kdevops_vagrant_install_vagrant
stage-2-$(CONFIG_VAGRANT_INSTALL_PRIVATE_BOXES) += kdevops_vagrant_boxes
stage-2-$(CONFIG_LIBVIRT_VERIFY) += kdevops_verify_libvirt_user
stage-2-$(CONFIG_LIBVIRT_STORAGE_POOL_CREATE) += kdevops_libvirt_storage_pool_create
--
2.49.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 3/4] Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH
2025-04-14 17:05 [PATCH v2 0/4] Add uniquifier to storage pool path cel
2025-04-14 17:05 ` [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir cel
2025-04-14 17:05 ` [PATCH v2 2/4] install_vagrant: Remove this role cel
@ 2025-04-14 17:05 ` cel
2025-04-23 6:37 ` Luis Chamberlain
2025-04-14 17:05 ` [PATCH v2 4/4] guestfs: Per-user storage pools cel
2025-04-23 6:22 ` [PATCH v2 0/4] Add uniquifier to storage pool path Luis Chamberlain
4 siblings, 1 reply; 12+ messages in thread
From: cel @ 2025-04-14 17:05 UTC (permalink / raw)
To: kdevops; +Cc: Chuck Lever
From: Chuck Lever <chuck.lever@oracle.com>
Clean up.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
kconfigs/Kconfig.guestfs | 5 -----
.../roles/libvirt_user/tasks/enable-user/redhat/main.yml | 8 ++++----
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/kconfigs/Kconfig.guestfs b/kconfigs/Kconfig.guestfs
index 460ee703fd68..a2fddd691be9 100644
--- a/kconfigs/Kconfig.guestfs
+++ b/kconfigs/Kconfig.guestfs
@@ -1,10 +1,5 @@
if GUESTFS
-config STORAGE_POOL_PATH
- string
- output yaml
- default LIBVIRT_STORAGE_POOL_PATH
-
config GUESTFS_STORAGE_DIR
string
output yaml
diff --git a/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml b/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
index 1a18c4b4f29f..717d8ef68569 100644
--- a/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
+++ b/playbooks/roles/libvirt_user/tasks/enable-user/redhat/main.yml
@@ -35,16 +35,16 @@
when:
- only_verify_user|bool
-- name: Test SELinux context of {{ storage_pool_path }}
- command: "/usr/bin/stat -c %C {{ storage_pool_path }}"
+- name: Test SELinux context of {{ libvirt_storage_pool_path }}
+ command: "/usr/bin/stat -c %C {{ libvirt_storage_pool_path }}"
register: storage_pool_path_ctx
when:
- only_verify_user|bool
-- name: Set SELinux context on {{ storage_pool_path }}
+- name: Set SELinux context on {{ libvirt_storage_pool_path }}
become: yes
community.general.sefcontext:
- target: "{{ storage_pool_path }}(/.*)?"
+ target: "{{ libvirt_storage_pool_path }}(/.*)?"
setype: svirt_home_t
state: present
when:
--
2.49.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* [PATCH v2 4/4] guestfs: Per-user storage pools
2025-04-14 17:05 [PATCH v2 0/4] Add uniquifier to storage pool path cel
` (2 preceding siblings ...)
2025-04-14 17:05 ` [PATCH v2 3/4] Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH cel
@ 2025-04-14 17:05 ` cel
2025-04-14 21:08 ` Chuck Lever
2025-04-23 6:22 ` [PATCH v2 0/4] Add uniquifier to storage pool path Luis Chamberlain
4 siblings, 1 reply; 12+ messages in thread
From: cel @ 2025-04-14 17:05 UTC (permalink / raw)
To: kdevops; +Cc: Chuck Lever
From: Chuck Lever <chuck.lever@oracle.com>
I'd like to be able to run more than one instance of kdevops per
physical host. Currently the kdevops guestfs set-up steers all
storage pool activity into ${STORAGE_POOL}/kdevops/guestfs, which
means there's a good change that two different logged-in users will
create virtual machines whose names (and block devices) conflict.
So far I haven't been able to get the other storage pool-related
settings to add sufficient uniqueness to prevent this conflict.
Instead, replace the "kdevops" string in the storage pool path with
the name of the user account running kdevops.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
kconfigs/Kconfig.libvirt | 2 +-
scripts/bringup_guestfs.sh | 3 +--
scripts/destroy_guestfs.sh | 2 +-
scripts/guestfs.Makefile | 2 +-
4 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/kconfigs/Kconfig.libvirt b/kconfigs/Kconfig.libvirt
index cba8abf1e24b..74a93f177732 100644
--- a/kconfigs/Kconfig.libvirt
+++ b/kconfigs/Kconfig.libvirt
@@ -167,7 +167,7 @@ config LIBVIRT_STORAGE_POOL_PATH
config KDEVOPS_STORAGE_POOL_PATH
string
output yaml
- default "{{ libvirt_storage_pool_path }}/kdevops"
+ default "{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}"
config QEMU_BIN_PATH
string
diff --git a/scripts/bringup_guestfs.sh b/scripts/bringup_guestfs.sh
index 94e0437192be..ea2ff5ee00a5 100755
--- a/scripts/bringup_guestfs.sh
+++ b/scripts/bringup_guestfs.sh
@@ -14,8 +14,7 @@ IMG_FMT="qcow2"
if [ "${CONFIG_LIBVIRT_EXTRA_DRIVE_FORMAT_RAW}" = "y" ]; then
IMG_FMT="raw"
fi
-STORAGETOPDIR="${CONFIG_LIBVIRT_STORAGE_POOL_PATH}"
-STORAGEDIR="${STORAGETOPDIR}/kdevops/guestfs"
+STORAGEDIR="${CONFIG_KDEVOPS_STORAGE_POOL_PATH}/guestfs"
QEMU_GROUP=$CONFIG_LIBVIRT_QEMU_GROUP
GUESTFSDIR="${TOPDIR}/guestfs"
OS_VERSION=${CONFIG_VIRT_BUILDER_OS_VERSION}
diff --git a/scripts/destroy_guestfs.sh b/scripts/destroy_guestfs.sh
index ee5dc2b57d6d..5e307429f20a 100755
--- a/scripts/destroy_guestfs.sh
+++ b/scripts/destroy_guestfs.sh
@@ -7,7 +7,7 @@ source ${TOPDIR}/scripts/lib.sh
export LIBVIRT_DEFAULT_URI=$CONFIG_LIBVIRT_URI
-STORAGEDIR="${CONFIG_LIBVIRT_STORAGE_POOL_PATH}/kdevops/guestfs"
+STORAGEDIR="${CONFIG_KDEVOPS_STORAGE_POOL_PATH}/guestfs"
GUESTFSDIR="${TOPDIR}/guestfs"
if [ -f "$GUESTFSDIR/kdevops_nodes.yaml" ]; then
diff --git a/scripts/guestfs.Makefile b/scripts/guestfs.Makefile
index 3dad6a14f0c5..3393fba3d520 100644
--- a/scripts/guestfs.Makefile
+++ b/scripts/guestfs.Makefile
@@ -100,4 +100,4 @@ destroy_guestfs:
PHONY += destroy_guestfs
cleancache:
- $(Q)rm -f $(subst ",,$(CONFIG_LIBVIRT_STORAGE_POOL_PATH))/kdevops/guestfs/base_images/*
+ $(Q)rm -f $(subst ",,$("${CONFIG_KDEVOPS_STORAGE_POOL_PATH}/guestfs"))/guestfs/base_images/*
--
2.49.0
^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [PATCH v2 4/4] guestfs: Per-user storage pools
2025-04-14 17:05 ` [PATCH v2 4/4] guestfs: Per-user storage pools cel
@ 2025-04-14 21:08 ` Chuck Lever
0 siblings, 0 replies; 12+ messages in thread
From: Chuck Lever @ 2025-04-14 21:08 UTC (permalink / raw)
To: kdevops
On 4/14/25 1:05 PM, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> I'd like to be able to run more than one instance of kdevops per
> physical host. Currently the kdevops guestfs set-up steers all
> storage pool activity into ${STORAGE_POOL}/kdevops/guestfs, which
> means there's a good change that two different logged-in users will
> create virtual machines whose names (and block devices) conflict.
>
> So far I haven't been able to get the other storage pool-related
> settings to add sufficient uniqueness to prevent this conflict.
>
> Instead, replace the "kdevops" string in the storage pool path with
> the name of the user account running kdevops.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> kconfigs/Kconfig.libvirt | 2 +-
> scripts/bringup_guestfs.sh | 3 +--
> scripts/destroy_guestfs.sh | 2 +-
> scripts/guestfs.Makefile | 2 +-
> 4 files changed, 4 insertions(+), 5 deletions(-)
>
> diff --git a/kconfigs/Kconfig.libvirt b/kconfigs/Kconfig.libvirt
> index cba8abf1e24b..74a93f177732 100644
> --- a/kconfigs/Kconfig.libvirt
> +++ b/kconfigs/Kconfig.libvirt
> @@ -167,7 +167,7 @@ config LIBVIRT_STORAGE_POOL_PATH
> config KDEVOPS_STORAGE_POOL_PATH
> string
> output yaml
> - default "{{ libvirt_storage_pool_path }}/kdevops"
> + default "{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}"
>
> config QEMU_BIN_PATH
> string
> diff --git a/scripts/bringup_guestfs.sh b/scripts/bringup_guestfs.sh
> index 94e0437192be..ea2ff5ee00a5 100755
> --- a/scripts/bringup_guestfs.sh
> +++ b/scripts/bringup_guestfs.sh
> @@ -14,8 +14,7 @@ IMG_FMT="qcow2"
> if [ "${CONFIG_LIBVIRT_EXTRA_DRIVE_FORMAT_RAW}" = "y" ]; then
> IMG_FMT="raw"
> fi
> -STORAGETOPDIR="${CONFIG_LIBVIRT_STORAGE_POOL_PATH}"
> -STORAGEDIR="${STORAGETOPDIR}/kdevops/guestfs"
> +STORAGEDIR="${CONFIG_KDEVOPS_STORAGE_POOL_PATH}/guestfs"
This by itself will not work. KDEVOPS_STORAGE_POOL_PATH contains a
template string:
{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}
not a file pathname.
> QEMU_GROUP=$CONFIG_LIBVIRT_QEMU_GROUP
> GUESTFSDIR="${TOPDIR}/guestfs"
> OS_VERSION=${CONFIG_VIRT_BUILDER_OS_VERSION}
> diff --git a/scripts/destroy_guestfs.sh b/scripts/destroy_guestfs.sh
> index ee5dc2b57d6d..5e307429f20a 100755
> --- a/scripts/destroy_guestfs.sh
> +++ b/scripts/destroy_guestfs.sh
> @@ -7,7 +7,7 @@ source ${TOPDIR}/scripts/lib.sh
>
> export LIBVIRT_DEFAULT_URI=$CONFIG_LIBVIRT_URI
>
> -STORAGEDIR="${CONFIG_LIBVIRT_STORAGE_POOL_PATH}/kdevops/guestfs"
> +STORAGEDIR="${CONFIG_KDEVOPS_STORAGE_POOL_PATH}/guestfs"
> GUESTFSDIR="${TOPDIR}/guestfs"
>
> if [ -f "$GUESTFSDIR/kdevops_nodes.yaml" ]; then
> diff --git a/scripts/guestfs.Makefile b/scripts/guestfs.Makefile
> index 3dad6a14f0c5..3393fba3d520 100644
> --- a/scripts/guestfs.Makefile
> +++ b/scripts/guestfs.Makefile
> @@ -100,4 +100,4 @@ destroy_guestfs:
> PHONY += destroy_guestfs
>
> cleancache:
> - $(Q)rm -f $(subst ",,$(CONFIG_LIBVIRT_STORAGE_POOL_PATH))/kdevops/guestfs/base_images/*
> + $(Q)rm -f $(subst ",,$("${CONFIG_KDEVOPS_STORAGE_POOL_PATH}/guestfs"))/guestfs/base_images/*
--
Chuck Lever
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/4] Add uniquifier to storage pool path
2025-04-14 17:05 [PATCH v2 0/4] Add uniquifier to storage pool path cel
` (3 preceding siblings ...)
2025-04-14 17:05 ` [PATCH v2 4/4] guestfs: Per-user storage pools cel
@ 2025-04-23 6:22 ` Luis Chamberlain
2025-04-23 6:42 ` Luis Chamberlain
2025-04-23 14:01 ` Chuck Lever
4 siblings, 2 replies; 12+ messages in thread
From: Luis Chamberlain @ 2025-04-23 6:22 UTC (permalink / raw)
To: cel; +Cc: kdevops, Chuck Lever
On Mon, Apr 14, 2025 at 01:05:42PM -0400, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> I'd like to be able to run more than one instance of kdevops per
> physical host. Currently the kdevops guestfs set-up steers all
> storage pool activity into ${STORAGE_POOL}/kdevops/guestfs, which
> means there's a good change that two different logged-in users will
> create virtual machines whose names, OS base images, and block
> devices will interfere with each other.
>
> So far I haven't been able to get the other storage pool-related
> settings to add sufficient uniqueness to prevent this conflict.
>
> v2 introduces some additional clean-ups, and attempts to address
> review comments.
I gave this a spin to see if exisitng deployments won't break but they
would right away:
Here is me running on a debian system where we had the old setup:
make defconfig-seltests-radix-tree KDEVOPS_HOSTS_PREFIX=x2
make -j128
make bringup
User mcgrof is part of the libvirt-qemu group.
.//scripts/bringup_guestfs.sh: line 276: [: too many arguments
cp: target '}}/guestfs/x2-maple/root.raw': No such file or directory
Extra parameter on the command line: ‘libvirt_storage_pool_path’.
Try ‘virt-sysprep --help’ or consult virt-sysprep(1) for more information.
Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra0.raw', fmt=raw size=107374182400
chmod: cannot access '{{': No such file or directory
chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
chmod: cannot access '}}/{{': No such file or directory
chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
chmod: cannot access '}}/guestfs/x2-maple/extra0.raw': No such file or directory
Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra1.raw', fmt=raw size=107374182400
chmod: cannot access '{{': No such file or directory
chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
chmod: cannot access '}}/{{': No such file or directory
chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
chmod: cannot access '}}/guestfs/x2-maple/extra1.raw': No such file or directory
Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra2.raw', fmt=raw size=107374182400
chmod: cannot access '{{': No such file or directory
chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
chmod: cannot access '}}/{{': No such file or directory
chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
chmod: cannot access '}}/guestfs/x2-maple/extra2.raw': No such file or directory
Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra3.raw', fmt=raw size=107374182400
chmod: cannot access '{{': No such file or directory
chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
chmod: cannot access '}}/{{': No such file or directory
chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
chmod: cannot access '}}/guestfs/x2-maple/extra3.raw': No such file or directory
Domain 'x2-maple' defined from .//guestfs/x2-maple/x2-maple.xml
error: Failed to start domain 'x2-maple'
error: Cannot access storage file '/xfs1/libvirt/mcgrof/guestfs/x2-maple/root.raw': No such file or directory
Failed to start x2-maple
make: *** [scripts/guestfs.Makefile:80: bringup_guestfs] Error 1
So, while I like the idea and approach, this would break tons of
deployments right now.
Luis
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 2/4] install_vagrant: Remove this role
2025-04-14 17:05 ` [PATCH v2 2/4] install_vagrant: Remove this role cel
@ 2025-04-23 6:23 ` Luis Chamberlain
0 siblings, 0 replies; 12+ messages in thread
From: Luis Chamberlain @ 2025-04-23 6:23 UTC (permalink / raw)
To: cel; +Cc: kdevops, Chuck Lever
On Mon, Apr 14, 2025 at 01:05:44PM -0400, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> Now that vagrant can no longer be used, this role is never invoked
> and cannot be tested. Remove it so that it does not become a source
> of technical debt.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
This should already go in!
Luis
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir
2025-04-14 17:05 ` [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir cel
@ 2025-04-23 6:36 ` Luis Chamberlain
0 siblings, 0 replies; 12+ messages in thread
From: Luis Chamberlain @ 2025-04-23 6:36 UTC (permalink / raw)
To: cel; +Cc: kdevops, Chuck Lever, Daniel Gomez
On Mon, Apr 14, 2025 at 01:05:43PM -0400, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> {{ kdevops_storage_pool_path }} already ends with "/kdevops", so
> remove that string from the end of guestfs_storage_dir to ensure
> the permissions check is examining the correct directory.
>
> Reviewed-by: Daniel Gomez <da.gomez@samsung.com>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Luis
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 3/4] Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH
2025-04-14 17:05 ` [PATCH v2 3/4] Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH cel
@ 2025-04-23 6:37 ` Luis Chamberlain
0 siblings, 0 replies; 12+ messages in thread
From: Luis Chamberlain @ 2025-04-23 6:37 UTC (permalink / raw)
To: cel; +Cc: kdevops, Chuck Lever
On Mon, Apr 14, 2025 at 01:05:45PM -0400, cel@kernel.org wrote:
> From: Chuck Lever <chuck.lever@oracle.com>
>
> Clean up.
>
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Luis Chamberlain <mcgrof@kernel.org>
Luis
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/4] Add uniquifier to storage pool path
2025-04-23 6:22 ` [PATCH v2 0/4] Add uniquifier to storage pool path Luis Chamberlain
@ 2025-04-23 6:42 ` Luis Chamberlain
2025-04-23 14:01 ` Chuck Lever
1 sibling, 0 replies; 12+ messages in thread
From: Luis Chamberlain @ 2025-04-23 6:42 UTC (permalink / raw)
To: cel; +Cc: kdevops, Chuck Lever
On Tue, Apr 22, 2025 at 11:22:15PM -0700, Luis Chamberlain wrote:
> So, while I like the idea and approach, this would break tons of
> deployments right now.
The first 3 patches work well though, so they should be just merged.
As for the last patch, it seems it would design a new world order,
and its perfeclty fine, its the right thing to do. I'm convinced the
debian system session crap as default is just crap and we need to phase
it out. But in the meantime we can't break existing deployments,
specially CIs. So what I can recommend is having a new kconfig symbol
for this new option. If user session based distros (Fedora, RH) can
take advantage of this patch without breaking exisiting systems then
this can just be the new default for them. Otherwise this new world
order will just be that, a new choice.
That is, with a new kconfig option to make this a new option
(could be a default for the distros where this does not break their
existing deployments) this seems sensible to merge. But for debian
based systems, this can't be a default.
Luis
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH v2 0/4] Add uniquifier to storage pool path
2025-04-23 6:22 ` [PATCH v2 0/4] Add uniquifier to storage pool path Luis Chamberlain
2025-04-23 6:42 ` Luis Chamberlain
@ 2025-04-23 14:01 ` Chuck Lever
1 sibling, 0 replies; 12+ messages in thread
From: Chuck Lever @ 2025-04-23 14:01 UTC (permalink / raw)
To: Luis Chamberlain; +Cc: kdevops, Chuck Lever
On 4/23/25 2:22 AM, Luis Chamberlain wrote:
> On Mon, Apr 14, 2025 at 01:05:42PM -0400, cel@kernel.org wrote:
>> From: Chuck Lever <chuck.lever@oracle.com>
>>
>> I'd like to be able to run more than one instance of kdevops per
>> physical host. Currently the kdevops guestfs set-up steers all
>> storage pool activity into ${STORAGE_POOL}/kdevops/guestfs, which
>> means there's a good change that two different logged-in users will
>> create virtual machines whose names, OS base images, and block
>> devices will interfere with each other.
>>
>> So far I haven't been able to get the other storage pool-related
>> settings to add sufficient uniqueness to prevent this conflict.
>>
>> v2 introduces some additional clean-ups, and attempts to address
>> review comments.
>
> I gave this a spin to see if exisitng deployments won't break but they
> would right away:
>
> Here is me running on a debian system where we had the old setup:
>
> make defconfig-seltests-radix-tree KDEVOPS_HOSTS_PREFIX=x2
> make -j128
> make bringup
>
> User mcgrof is part of the libvirt-qemu group.
> .//scripts/bringup_guestfs.sh: line 276: [: too many arguments
> cp: target '}}/guestfs/x2-maple/root.raw': No such file or directory
> Extra parameter on the command line: ‘libvirt_storage_pool_path’.
> Try ‘virt-sysprep --help’ or consult virt-sysprep(1) for more information.
> Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra0.raw', fmt=raw size=107374182400
> chmod: cannot access '{{': No such file or directory
> chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
> chmod: cannot access '}}/{{': No such file or directory
> chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
> chmod: cannot access '}}/guestfs/x2-maple/extra0.raw': No such file or directory
> Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra1.raw', fmt=raw size=107374182400
> chmod: cannot access '{{': No such file or directory
> chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
> chmod: cannot access '}}/{{': No such file or directory
> chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
> chmod: cannot access '}}/guestfs/x2-maple/extra1.raw': No such file or directory
> Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra2.raw', fmt=raw size=107374182400
> chmod: cannot access '{{': No such file or directory
> chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
> chmod: cannot access '}}/{{': No such file or directory
> chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
> chmod: cannot access '}}/guestfs/x2-maple/extra2.raw': No such file or directory
> Formatting '{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}/guestfs/x2-maple/extra3.raw', fmt=raw size=107374182400
> chmod: cannot access '{{': No such file or directory
> chmod: cannot access 'libvirt_storage_pool_path': No such file or directory
> chmod: cannot access '}}/{{': No such file or directory
> chmod: cannot access 'kdevops_storage_pool_user': No such file or directory
> chmod: cannot access '}}/guestfs/x2-maple/extra3.raw': No such file or directory
> Domain 'x2-maple' defined from .//guestfs/x2-maple/x2-maple.xml
>
> error: Failed to start domain 'x2-maple'
> error: Cannot access storage file '/xfs1/libvirt/mcgrof/guestfs/x2-maple/root.raw': No such file or directory
>
> Failed to start x2-maple
> make: *** [scripts/guestfs.Makefile:80: bringup_guestfs] Error 1
>
> So, while I like the idea and approach, this would break tons of
> deployments right now.
>
> Luis
As I mentioned here [1], because KDEVOPS_STORAGE_POOL_PATH contains a
template string:
{{ libvirt_storage_pool_path }}/{{ kdevops_storage_pool_user }}
not a file pathname, 4/4 won't work.
I've committed 1/4 through 3/4 to linux-kdevops, and can post an
updated version of 4/4 that might work better for you. But if it
doesn't, then I'm open to adding a Kconfig option as you suggested.
--
Chuck Lever
[1]
https://lore.kernel.org/kdevops/44e1183d-78a7-411c-bd1f-2e7d4e6fcb32@oracle.com/
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2025-04-23 14:01 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-14 17:05 [PATCH v2 0/4] Add uniquifier to storage pool path cel
2025-04-14 17:05 ` [PATCH v2 1/4] guestfs: Fix definition of guestfs_storage_dir cel
2025-04-23 6:36 ` Luis Chamberlain
2025-04-14 17:05 ` [PATCH v2 2/4] install_vagrant: Remove this role cel
2025-04-23 6:23 ` Luis Chamberlain
2025-04-14 17:05 ` [PATCH v2 3/4] Replace STORAGE_POOL_PATH with LIBVIRT_STORAGE_POOL_PATH cel
2025-04-23 6:37 ` Luis Chamberlain
2025-04-14 17:05 ` [PATCH v2 4/4] guestfs: Per-user storage pools cel
2025-04-14 21:08 ` Chuck Lever
2025-04-23 6:22 ` [PATCH v2 0/4] Add uniquifier to storage pool path Luis Chamberlain
2025-04-23 6:42 ` Luis Chamberlain
2025-04-23 14:01 ` Chuck Lever
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox