From: Luis Chamberlain <mcgrof@kernel.org>
To: Chuck Lever <cel@kernel.org>, Daniel Gomez <da.gomez@kruces.com>,
kdevops@lists.linux.dev
Cc: Chuck Lever <chuck.lever@oracle.com>,
Luis Chamberlain <mcgrof@kernel.org>
Subject: [PATCH v2 19/33] bootlinux: Move 9p build tasks to a subrole
Date: Sun, 27 Jul 2025 18:14:19 -0700 [thread overview]
Message-ID: <20250728011434.3197091-20-mcgrof@kernel.org> (raw)
In-Reply-To: <20250728011434.3197091-1-mcgrof@kernel.org>
From: Chuck Lever <chuck.lever@oracle.com>
Most everything that is marked with "when: bootlinux_9p|bool" is
moved to a separate .yml file and then dynamically included when
bootlinux_9p is true. This makes it easy to identify 9p-specific
tasks and ensures they are completely disabled and skipped when
other build modes are in use.
Ensure we also have the make command installed and since we're
going to defer git clone even if 9p is enabled until later ensure
the linux directory exists before bringup.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org>
---
playbooks/roles/bootlinux/defaults/main.yml | 6 -
playbooks/roles/bootlinux/tasks/build/9p.yml | 205 ++++++++++++++++
.../install-minimal-deps/debian/main.yml | 19 ++
.../tasks/install-minimal-deps/main.yml | 15 ++
.../install-minimal-deps/redhat/main.yml | 27 +++
.../tasks/install-minimal-deps/suse/main.yml | 13 +
playbooks/roles/bootlinux/tasks/main.yml | 228 +-----------------
.../roles/guestfs/tasks/bringup/main.yml | 10 +
8 files changed, 297 insertions(+), 226 deletions(-)
create mode 100644 playbooks/roles/bootlinux/tasks/build/9p.yml
create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
create mode 100644 playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
diff --git a/playbooks/roles/bootlinux/defaults/main.yml b/playbooks/roles/bootlinux/defaults/main.yml
index 614f7cd8..4a1ad72e 100644
--- a/playbooks/roles/bootlinux/defaults/main.yml
+++ b/playbooks/roles/bootlinux/defaults/main.yml
@@ -41,12 +41,6 @@ uninstall_kernel_enable: False
bootlinux_b4_am_this_host: False
bootlinux_9p: False
-bootlinux_9p_host_path: "/dev/null"
-bootlinux_9p_msize: 0
-bootlinux_9p_fsdev: "ignore"
-bootlinux_9p_mount_tag: "ignore"
-bootlinux_9p_security_model: "none"
-bootlinux_9p_driver: "virtio-9p-pci"
kdevops_workflow_enable_cxl: False
diff --git a/playbooks/roles/bootlinux/tasks/build/9p.yml b/playbooks/roles/bootlinux/tasks/build/9p.yml
new file mode 100644
index 00000000..bc2a66b6
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/build/9p.yml
@@ -0,0 +1,205 @@
+---
+- name: Install dependencies to build the Linux kernel
+ delegate_to: localhost
+ run_once: true
+ ansible.builtin.import_tasks:
+ file: install-deps/main.yml
+
+- name: Install b4 on host
+ become: yes
+ become_method: sudo
+ pip:
+ name:
+ - b4
+ when:
+ - target_linux_install_b4 is defined
+ - target_linux_install_b4
+ - ansible_facts['os_family']|lower != 'debian'
+ run_once: true
+ delegate_to: localhost
+
+- name: Add safe exception for a clone
+ command: "git config --global --add safe.directory {{ target_linux_git }}"
+ tags: [ 'clone']
+ when:
+ - target_linux_git is string and target_linux_git.startswith('/')
+ run_once: true
+ delegate_to: localhost
+
+- name: Check if target directory exists when using 9p and Linux CLI was set
+ stat:
+ path: "{{ bootlinux_9p_host_path }}"
+ register: target_directory_stat
+ run_once: true
+ delegate_to: localhost
+ when:
+ - bootlinux_tree_set_by_cli|bool
+
+- name: Fail if target directory does not exist when using 9p and Linux CLI was set
+ fail:
+ msg: "The target directory {{ bootlinux_9p_host_path }} does not exist."
+ run_once: true
+ delegate_to: localhost
+ when:
+ - bootlinux_tree_set_by_cli|bool
+ - not target_directory_stat.stat.exists
+
+- name: git clone {{ target_linux_tree }} on the control node
+ git:
+ repo: "{{ target_linux_git }}"
+ dest: "{{ bootlinux_9p_host_path }}"
+ update: yes
+ depth: "{{ target_linux_shallow_depth }}"
+ version: "{{ target_linux_ref }}"
+ retries: 3
+ delay: 5
+ register: result
+ until: not result.failed
+ tags: [ 'clone']
+ when:
+ - not bootlinux_tree_set_by_cli|bool
+ run_once: true
+ delegate_to: localhost
+
+- name: Copy kernel delta if requested on the control node
+ template:
+ src: "{{ target_linux_extra_patch }}"
+ dest: "{{ bootlinux_9p_host_path }}/{{ target_linux_extra_patch }}"
+ mode: 0644
+ when:
+ - target_linux_extra_patch is defined
+ run_once: true
+ delegate_to: localhost
+
+- name: Apply kernel delta if requested on the control node
+ command: "git am {{ target_linux_extra_patch }}"
+ args:
+ chdir: "{{ bootlinux_9p_host_path }}"
+ when:
+ - target_linux_extra_patch is defined
+ run_once: true
+ delegate_to: localhost
+
+- name: Variable values
+ debug:
+ msg: "{{ target_linux_apply_patch_message_id }}"
+ when:
+ - target_linux_apply_patch_message_id is defined
+
+- name: Apply message patch set if requested on the control node
+ shell: b4 am -o - {{target_linux_apply_patch_message_id}} | git am
+ args:
+ chdir: "{{ bootlinux_9p_host_path }}"
+ when:
+ - target_linux_apply_patch_message_id is defined
+ - target_linux_apply_patch_message_id | length > 0
+ - bootlinux_b4_am_this_host|bool
+ run_once: true
+ delegate_to: localhost
+
+- name: Copy configuration for Linux {{ target_linux_tree }} on the control node
+ template:
+ src: "{{ linux_config }}"
+ dest: "{{ bootlinux_9p_host_path }}/.config"
+ mode: 0644
+ run_once: true
+ delegate_to: localhost
+
+- name: Set kernel localversion if requested on the control node
+ shell: "echo {{ target_linux_localversion }} > {{ bootlinux_9p_host_path }}/localversion"
+ when:
+ - target_linux_localversion is defined and target_linux_localversion != ""
+ run_once: true
+ delegate_to: localhost
+
+- name: Configure Linux {{ target_linux_tree }} on the control node
+ shell: |
+ set -o pipefail
+ yes "" | make oldconfig
+ register: configure_done
+ changed_when: configure_done.rc == 0 or configure_done.rc == 141
+ failed_when: configure_done.rc != 0 and configure_done.rc != 141
+ args:
+ chdir: "{{ bootlinux_9p_host_path }}"
+ executable: /bin/bash
+ run_once: true
+ delegate_to: localhost
+
+- name: Get nproc on the control node
+ command: "{{ num_jobs }}"
+ tags: [ 'build-linux', 'cxl-build' ]
+ register: nproc_9p
+ run_once: true
+ delegate_to: localhost
+
+- name: Get kernelversion
+ make:
+ chdir: "{{ bootlinux_9p_host_path }}"
+ target: kernelversion
+ register: target_linux_kernelversion
+ tags: [ 'build-linux' ]
+ when:
+ - target_linux_kernelrelease | length > 0
+ run_once: true
+ delegate_to: localhost
+
+- name: Generate user kernelrelease {{ target_linux_kernelversion.stdout }}-{{ target_linux_kernelrelease }}
+ set_fact:
+ target_user_kernelrelease: "{{ target_linux_kernelversion.stdout }}-{{ target_linux_kernelrelease }}"
+ tags: [ 'build-linux' ]
+ when:
+ - target_linux_kernelrelease | length > 0
+ run_once: true
+ delegate_to: localhost
+
+- name: Build {{ target_linux_tree }} {{ target_user_kernelrelease }} on the control node using {{ nproc_9p.stdout }} threads
+ make:
+ jobs: "{{ nproc_9p.stdout }}"
+ chdir: "{{ bootlinux_9p_host_path }}"
+ params:
+ KERNELRELEASE={{ target_user_kernelrelease }}
+ tags: [ 'build-linux' ]
+ when:
+ - target_linux_kernelrelease | length > 0
+ run_once: true
+ delegate_to: localhost
+
+- name: Build {{ target_linux_tree }} {{ target_user_kernelrelease }} on the control node using {{ nproc_9p.stdout }} threads
+ make:
+ jobs: "{{ nproc_9p.stdout }}"
+ chdir: "{{ bootlinux_9p_host_path }}"
+ tags: [ 'build-linux' ]
+ when:
+ - target_linux_kernelrelease | length == 0
+ run_once: true
+ delegate_to: localhost
+
+- name: Build {{ target_linux_tree }} cxl_test on the control node using {{ nproc_9p.stdout }} threads
+ make:
+ jobs: "{{ nproc_9p.stdout }}"
+ chdir: "{{ bootlinux_9p_host_path }}"
+ params:
+ M: "tools/testing/cxl"
+ tags: [ 'build-linux', 'cxl-build' ]
+ when:
+ - bootlinux_cxl_test|bool
+ run_once: true
+ delegate_to: localhost
+
+- name: See if snake-oil cert file is present on host
+ stat:
+ path: "{{ bootlinux_9p_host_path }}/certs/signing_key.pem"
+ register: snaik_oil_file_9p
+ tags: [ 'build-linux' ]
+ run_once: true
+ delegate_to: localhost
+
+- name: Ensure we allow world to read the snake oil in case of NFS or 9p read only usage
+ file:
+ path: "{{ bootlinux_9p_host_path }}/certs/signing_key.pem"
+ mode: "0755"
+ tags: [ 'build-linux' ]
+ when:
+ - snaik_oil_file_9p.stat.exists
+ run_once: true
+ delegate_to: localhost
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
new file mode 100644
index 00000000..9fd6834f
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/debian/main.yml
@@ -0,0 +1,19 @@
+---
+# Install minimal dependencies needed for kernel installation on Debian
+# This is used when bootlinux_9p is enabled and the build happens on the host
+
+- name: Update apt cache
+ become: yes
+ become_method: sudo
+ apt:
+ update_cache: yes
+
+- name: Install minimal build tools for kernel installation
+ become: yes
+ become_method: sudo
+ apt:
+ name:
+ - make
+ - gcc
+ - kmod
+ state: present
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
new file mode 100644
index 00000000..d1e9f675
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/main.yml
@@ -0,0 +1,15 @@
+---
+- name: Debian-specific minimal setup
+ ansible.builtin.import_tasks: debian/main.yml
+ when:
+ - ansible_os_family == "Debian"
+
+- name: SuSE-specific minimal setup
+ ansible.builtin.import_tasks: suse/main.yml
+ when:
+ - ansible_os_family == "Suse"
+
+- name: Red Hat-specific minimal setup
+ ansible.builtin.import_tasks: redhat/main.yml
+ when:
+ - ansible_os_family == "RedHat"
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
new file mode 100644
index 00000000..c5cd6fbf
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/redhat/main.yml
@@ -0,0 +1,27 @@
+---
+# Install minimal dependencies needed for kernel installation on Red Hat
+# This is used when bootlinux_9p is enabled and the build happens on the host
+
+- name: Install minimal build tools for kernel installation
+ become: yes
+ become_method: sudo
+ yum:
+ name:
+ - make
+ - gcc
+ - kmod
+ state: present
+ when:
+ - ansible_facts['distribution_major_version']|int < 8
+
+- name: Install minimal build tools for kernel installation (dnf)
+ become: yes
+ become_method: sudo
+ dnf:
+ name:
+ - make
+ - gcc
+ - kmod
+ state: present
+ when:
+ - ansible_facts['distribution_major_version']|int >= 8
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml b/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
new file mode 100644
index 00000000..a17768f9
--- /dev/null
+++ b/playbooks/roles/bootlinux/tasks/install-minimal-deps/suse/main.yml
@@ -0,0 +1,13 @@
+---
+# Install minimal dependencies needed for kernel installation on SUSE
+# This is used when bootlinux_9p is enabled and the build happens on the host
+
+- name: Install minimal build tools for kernel installation
+ become: yes
+ become_method: sudo
+ zypper:
+ name:
+ - make
+ - gcc
+ - kmod-compat
+ state: present
\ No newline at end of file
diff --git a/playbooks/roles/bootlinux/tasks/main.yml b/playbooks/roles/bootlinux/tasks/main.yml
index 6a0563b1..e908f313 100644
--- a/playbooks/roles/bootlinux/tasks/main.yml
+++ b/playbooks/roles/bootlinux/tasks/main.yml
@@ -19,13 +19,13 @@
ansible.builtin.import_tasks:
file: install-deps/main.yml
-- name: Install dependencies to build the Linux kernel
- delegate_to: localhost
- run_once: true
+# When using 9P builds, we still need make on the guest for modules_install
+- name: Install essential build tools for 9P builds
ansible.builtin.import_tasks:
- file: install-deps/main.yml
+ file: install-minimal-deps/main.yml
when:
- bootlinux_9p|bool
+ - not workflow_linux_packaged|bool
# We do this regardless of what distro you use
- name: Install b4
@@ -39,20 +39,6 @@
- target_linux_install_b4
- ansible_facts['os_family']|lower != 'debian'
-- name: Install b4 on host
- become: yes
- become_method: sudo
- pip:
- name:
- - b4
- when:
- - target_linux_install_b4 is defined
- - target_linux_install_b4
- - bootlinux_9p|bool
- - ansible_facts['os_family']|lower != 'debian'
- run_once: true
- delegate_to: localhost
-
- name: Set bootlinux_b4_am_this_host as a fact for dev hosts only
set_fact:
bootlinux_b4_am_this_host: "{{ ansible_hostname | regex_search('^.*-dev$') is not none }}"
@@ -68,9 +54,7 @@
- include_role:
name: create_data_partition
-# Distro agnostic stuff to build and boot Linux goes below
-
-- name: Mount bootlinux 9p and add to fstab if it does not exist
+- name: Mount bootlinux 9p on each target node
become: yes
become_flags: 'su - -c'
become_method: sudo
@@ -84,34 +68,11 @@
when:
- bootlinux_9p|bool
-- name: Add safe exception for a clone
- command: "git config --global --add safe.directory {{ target_linux_git }}"
- tags: [ 'clone']
- when:
- - bootlinux_9p|bool
- - target_linux_git is string and target_linux_git.startswith('/')
- run_once: true
- delegate_to: localhost
-
-- name: Check if target directory exists when using 9p and Linux CLI was set
- stat:
- path: "{{ bootlinux_9p_host_path }}"
- register: target_directory_stat
- run_once: true
- delegate_to: localhost
- when:
- - bootlinux_9p|bool
- - bootlinux_tree_set_by_cli|bool
-
-- name: Fail if target directory does not exist when using 9p and Linux CLI was set
- fail:
- msg: "The target directory {{ bootlinux_9p_host_path }} does not exist."
- run_once: true
- delegate_to: localhost
+- name: Build the Linux kernel on the controller host
+ ansible.builtin.include_tasks:
+ file: "{{ role_path }}/tasks/build/9p.yml"
when:
- bootlinux_9p|bool
- - bootlinux_tree_set_by_cli|bool
- - not target_directory_stat.stat.exists
- name: git clone {{ target_linux_tree }} on the target nodes
git:
@@ -128,24 +89,6 @@
when:
- not bootlinux_9p|bool
-- name: git clone {{ target_linux_tree }} on the control node
- git:
- repo: "{{ target_linux_git }}"
- dest: "{{ bootlinux_9p_host_path }}"
- update: yes
- depth: "{{ target_linux_shallow_depth }}"
- version: "{{ target_linux_ref }}"
- retries: 3
- delay: 5
- register: result
- until: not result.failed
- tags: [ 'clone']
- when:
- - bootlinux_9p|bool
- - not bootlinux_tree_set_by_cli|bool
- run_once: true
- delegate_to: localhost
-
- name: Copy kernel delta if requested on the target nodes
template:
src: "{{ target_linux_extra_patch }}"
@@ -157,17 +100,6 @@
- not bootlinux_9p|bool
- target_linux_extra_patch is defined
-- name: Copy kernel delta if requested on the control node
- template:
- src: "{{ target_linux_extra_patch }}"
- dest: "{{ bootlinux_9p_host_path }}/{{ target_linux_extra_patch }}"
- mode: 0644
- when:
- - bootlinux_9p|bool
- - target_linux_extra_patch is defined
- run_once: true
- delegate_to: localhost
-
- name: Apply kernel delta if requested on the target nodes
command: "git am {{ target_linux_extra_patch }}"
args:
@@ -176,16 +108,6 @@
- not bootlinux_9p|bool
- target_linux_extra_patch is defined
-- name: Apply kernel delta if requested on the control node
- command: "git am {{ target_linux_extra_patch }}"
- args:
- chdir: "{{ bootlinux_9p_host_path }}"
- when:
- - bootlinux_9p|bool
- - target_linux_extra_patch is defined
- run_once: true
- delegate_to: localhost
-
- name: Set git user name and email if needed
shell: |
if ! $(git config --get user.email) ; then
@@ -215,18 +137,6 @@
- target_linux_apply_patch_message_id | length > 0
- bootlinux_b4_am_this_host|bool
-- name: Apply message patch set if requested on the control node
- shell: b4 am -o - {{target_linux_apply_patch_message_id}} | git am
- args:
- chdir: "{{ bootlinux_9p_host_path }}"
- when:
- - bootlinux_9p|bool
- - target_linux_apply_patch_message_id is defined
- - target_linux_apply_patch_message_id | length > 0
- - bootlinux_b4_am_this_host|bool
- run_once: true
- delegate_to: localhost
-
- name: Copy configuration for Linux {{ target_linux_tree }} to the target nodes
template:
src: "{{ linux_config }}"
@@ -237,30 +147,12 @@
when:
- not bootlinux_9p|bool
-- name: Copy configuration for Linux {{ target_linux_tree }} on the control node
- template:
- src: "{{ linux_config }}"
- dest: "{{ bootlinux_9p_host_path }}/.config"
- mode: 0644
- when:
- - bootlinux_9p|bool
- run_once: true
- delegate_to: localhost
-
- name: Set kernel localversion if requested on the target nodes
shell: "echo {{ target_linux_localversion }} > {{ target_linux_dir_path }}/localversion"
when:
- not bootlinux_9p|bool
- target_linux_localversion is defined and target_linux_localversion != ""
-- name: Set kernel localversion if requested on the control node
- shell: "echo {{ target_linux_localversion }} > {{ bootlinux_9p_host_path }}/localversion"
- when:
- - bootlinux_9p|bool
- - target_linux_localversion is defined and target_linux_localversion != ""
- run_once: true
- delegate_to: localhost
-
- name: Configure Linux {{ target_linux_tree }} on the target nodes
shell: |
set -o pipefail
@@ -274,21 +166,6 @@
when:
- not bootlinux_9p|bool
-- name: Configure Linux {{ target_linux_tree }} on the control node
- shell: |
- set -o pipefail
- yes "" | make oldconfig
- register: configure_done
- changed_when: configure_done.rc == 0 or configure_done.rc == 141
- failed_when: configure_done.rc != 0 and configure_done.rc != 141
- args:
- chdir: "{{ bootlinux_9p_host_path }}"
- executable: /bin/bash
- when:
- - bootlinux_9p|bool
- run_once: true
- delegate_to: localhost
-
- name: Build {{ target_linux_tree }} on the target nodes
command: "{{ target_linux_make_cmd }}"
register: build
@@ -327,95 +204,6 @@
- not bootlinux_9p|bool
- snaik_oil_file.stat.exists
-- name: Get nproc on the control node
- command: "{{ num_jobs }}"
- tags: [ 'build-linux', 'cxl-build' ]
- register: nproc_9p
- when:
- - bootlinux_9p|bool
- run_once: true
- delegate_to: localhost
-
-- name: Get kernelversion
- make:
- chdir: "{{ bootlinux_9p_host_path }}"
- target: kernelversion
- register: target_linux_kernelversion
- tags: [ 'build-linux' ]
- when:
- - bootlinux_9p|bool
- - target_linux_kernelrelease | length > 0
- run_once: true
- delegate_to: localhost
-
-- name: Generate user kernelrelease {{ target_linux_kernelversion.stdout }}-{{ target_linux_kernelrelease }}
- set_fact:
- target_user_kernelrelease: "{{ target_linux_kernelversion.stdout }}-{{ target_linux_kernelrelease }}"
- tags: [ 'build-linux' ]
- when:
- - bootlinux_9p|bool
- - target_linux_kernelrelease | length > 0
- run_once: true
- delegate_to: localhost
-
-- name: Build {{ target_linux_tree }} {{ target_user_kernelrelease }} on the control node using {{ nproc_9p.stdout }} threads
- make:
- jobs: "{{ nproc_9p.stdout }}"
- chdir: "{{ bootlinux_9p_host_path }}"
- params:
- KERNELRELEASE={{ target_user_kernelrelease }}
- tags: [ 'build-linux' ]
- when:
- - bootlinux_9p|bool
- - target_linux_kernelrelease | length > 0
- run_once: true
- delegate_to: localhost
-
-- name: Build {{ target_linux_tree }} {{ target_user_kernelrelease }} on the control node using {{ nproc_9p.stdout }} threads
- make:
- jobs: "{{ nproc_9p.stdout }}"
- chdir: "{{ bootlinux_9p_host_path }}"
- tags: [ 'build-linux' ]
- when:
- - bootlinux_9p|bool
- - target_linux_kernelrelease | length == 0
- run_once: true
- delegate_to: localhost
-
-- name: Build {{ target_linux_tree }} cxl_test on the control node using {{ nproc_9p.stdout }} threads
- make:
- jobs: "{{ nproc_9p.stdout }}"
- chdir: "{{ bootlinux_9p_host_path }}"
- params:
- M: "tools/testing/cxl"
- tags: [ 'build-linux', 'cxl-build' ]
- when:
- - bootlinux_9p|bool
- - bootlinux_cxl_test|bool
- run_once: true
- delegate_to: localhost
-
-- name: See if snake-oil cert file is present on host
- stat:
- path: "{{ bootlinux_9p_host_path }}/certs/signing_key.pem"
- register: snaik_oil_file_9p
- tags: [ 'build-linux' ]
- when:
- - bootlinux_9p|bool
- run_once: true
- delegate_to: localhost
-
-- name: Ensure we allow world to read the snake oil in case of NFS or 9p read only usage
- file:
- path: "{{ bootlinux_9p_host_path }}/certs/signing_key.pem"
- mode: "0755"
- tags: [ 'build-linux' ]
- when:
- - bootlinux_9p|bool
- - snaik_oil_file_9p.stat.exists
- run_once: true
- delegate_to: localhost
-
- name: Run uname before
command: "uname -r"
register: uname_cmd_before
diff --git a/playbooks/roles/guestfs/tasks/bringup/main.yml b/playbooks/roles/guestfs/tasks/bringup/main.yml
index 6d819006..af95c5db 100644
--- a/playbooks/roles/guestfs/tasks/bringup/main.yml
+++ b/playbooks/roles/guestfs/tasks/bringup/main.yml
@@ -127,6 +127,16 @@
when:
- passthrough_devices.matched > 0
+- name: Ensure 9P host directory exists before bringing nodes on libvirt
+ file:
+ path: "{{ bootlinux_9p_host_path }}"
+ state: directory
+ mode: '0755'
+ run_once: true
+ delegate_to: localhost
+ when:
+ - bootlinux_9p|bool
+
- name: Boot each target node
community.libvirt.virt:
name: "{{ inventory_hostname }}"
--
2.47.2
next prev parent reply other threads:[~2025-07-28 1:14 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-28 1:14 [PATCH v2 00/33] remove vagrant and bootlinux shape up Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 01/33] vagrant: remove entire vagrant configuration directory Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 02/33] kconfigs: fix Kconfig references after vagrant removal Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 03/33] scripts: remove Vagrant-specific scripts and Makefiles Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 04/33] playbooks: remove Vagrant-specific playbooks and roles Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 05/33] gitignore: remove Vagrant-specific ignore patterns Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 06/33] docs: remove Vagrant-specific documentation files Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 07/33] Remove all remaining Vagrant references from codebase Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 08/33] terraform: Clean up the destroy tasks Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 09/33] Switch to the cloud.terraform.terraform module Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 10/33] terraform: Make use of the new "terraform_output" module Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 11/33] terraform: Move "wait_for_connection" out of the terraform playbook Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 12/33] terraform: Remove "delegate_to: localhost" Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 13/33] terraform: Replace scripts/status_terraform.sh Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 14/33] Kconfig: Convert the 9p option to a choice menu Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 15/33] bootlinux: fix making 9p default if using libvirt Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 16/33] bootlinux: Relocate tasks that select a kernel .config Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 17/33] bootlinux: Simplify tasks that select the kernel .config to build Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 18/33] bootlinux: Select the kernel .config earlier Luis Chamberlain
2025-07-28 1:14 ` Luis Chamberlain [this message]
2025-07-28 1:14 ` [PATCH v2 20/33] bootlinux: Move tasks for building on target nodes to a subrole Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 21/33] bootlinux: Clean up a grub set-up task Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 22/33] bootlinux: Harden update-grub/install.yml Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 23/33] Add a guest/instance for building the test kernel Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 24/33] bootlinux: Add a new builder choice Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 25/33] workflows: Add a kconfig setting for installing kernels via package Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 26/33] bootlinux: Enclose tasks to find kernel release name in a block: Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 27/33] bootlinux: Pick up kernel release info for pre-built packages Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 28/33] bootlinux: Install pre-built kernels from packages Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 29/33] bootlinux: Add an option to build with clang instead of gcc Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 30/33] Makefile: add make style for style checking Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 31/33] CLAUDE.md: new workflow guide for hosts and nodes Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 32/33] CLAUDE.md: add don't BS rules Luis Chamberlain
2025-07-28 1:14 ` [PATCH v2 33/33] gen_nodes/gen_hosts: avoid usage of fs_config_path on task names Luis Chamberlain
2025-07-29 20:07 ` [PATCH v2 00/33] remove vagrant and bootlinux shape up 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=20250728011434.3197091-20-mcgrof@kernel.org \
--to=mcgrof@kernel.org \
--cc=cel@kernel.org \
--cc=chuck.lever@oracle.com \
--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