public inbox for kdevops@lists.linux.dev
 help / color / mirror / Atom feed
From: cel@kernel.org
To: Luis Chamberlain <mcgrof@kernel.org>,
	Chandan Babu R <chandanbabu@kernel.org>,
	Jeff Layton <jlayton@kernel.org>
Cc: <kdevops@lists.linux.dev>, Chuck Lever <chuck.lever@oracle.com>
Subject: [PATCH v1 12/13] volume_group: Create a volume group on OCI nodes
Date: Mon, 10 Mar 2025 10:18:12 -0400	[thread overview]
Message-ID: <20250310141813.969325-13-cel@kernel.org> (raw)
In-Reply-To: <20250310141813.969325-1-cel@kernel.org>

From: Chuck Lever <chuck.lever@oracle.com>

On storage nodes (eg., nfsd, iscsi, smbd), pick up the extra block
volumes, avoiding the root and data devices, and toss them into an
volume group to use for shared storage.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 .../volume_group/tasks/terraform/oci.yml      | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 playbooks/roles/volume_group/tasks/terraform/oci.yml

diff --git a/playbooks/roles/volume_group/tasks/terraform/oci.yml b/playbooks/roles/volume_group/tasks/terraform/oci.yml
new file mode 100644
index 000000000000..219e3d7edbfd
--- /dev/null
+++ b/playbooks/roles/volume_group/tasks/terraform/oci.yml
@@ -0,0 +1,38 @@
+---
+#
+# To guarantee idempotency, these steps have to generate the exact
+# same physical_volumes list every time they are run.
+#
+# Skip the block device on which the root filesystem resides, and
+# skip the device that is to be used for /data. These devices all
+# show up under /dev/oracleoci/ .
+#
+
+- name: Detect the root device
+  ansible.builtin.stat:
+    path: "/dev/oracleoci/oraclevda"
+  register: stat_output
+
+- name: Save the name of the root device
+  ansible.builtin.set_fact:
+    instance_root_device: "{{ stat_output.stat.lnk_source.split('/dev/').1 }}"
+
+- name: Detect the data device
+  ansible.builtin.stat:
+    path: "{{ data_device }}"
+  register: stat_output
+
+- name: Save the name of the data device
+  ansible.builtin.set_fact:
+    instance_data_device: "{{ stat_output.stat.lnk_source.split('/dev/').1 }}"
+
+- name: Add unused extra volumes to the volume list
+  ansible.builtin.set_fact:
+    physical_volumes: "{{ physical_volumes + ['/dev/' + item.key] }}"
+  when:
+    - item.value.model == "BlockVolume"
+    - item.key != instance_root_device
+    - item.key != instance_data_device
+  loop_control:
+    label: "Adding block device: /dev/{{ item.key }}"
+  with_dict: "{{ ansible_devices }}"
-- 
2.48.1


  parent reply	other threads:[~2025-03-10 14:18 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-10 14:18 [PATCH v1 00/13] Block device provisioning for storage nodes cel
2025-03-10 14:18 ` [PATCH v1 01/13] terraform/AWS: Upgrade the EBS volume type to "gp3" cel
2025-03-10 14:18 ` [PATCH v1 02/13] terraform/Azure: Remove managed_disk_type selection cel
2025-03-10 14:18 ` [PATCH v1 03/13] terraform/Azure: Create a set of multiple generic block devices cel
2025-03-10 14:18 ` [PATCH v1 04/13] terraform/OCI: " cel
2025-03-13  5:56   ` Chandan Babu R
2025-03-10 14:18 ` [PATCH v1 05/13] guestfs: Set storage options consistently cel
2025-03-10 14:18 ` [PATCH v1 06/13] playbooks: Add a role to create an LVM volume group cel
2025-03-10 14:18 ` [PATCH v1 07/13] volume_group: Detect the /data partition directly cel
2025-03-10 14:18 ` [PATCH v1 08/13] volume_group: Prepare to support cloud providers cel
2025-03-10 14:18 ` [PATCH v1 09/13] volume_group: Create volume group on terraform/AWS nodes cel
2025-03-10 14:18 ` [PATCH v1 10/13] volume_group: Create a volume group on Azure nodes cel
2025-03-10 14:18 ` [PATCH v1 11/13] volume_group: Create a volume group on GCE nodes cel
2025-03-10 14:18 ` cel [this message]
2025-03-13  6:29   ` [PATCH v1 12/13] volume_group: Create a volume group on OCI nodes Chandan Babu R
2025-03-10 14:18 ` [PATCH v1 13/13] volume_group: Create a volume group on OpenStack public clouds cel
2025-03-11  3:29 ` [PATCH v1 00/13] Block device provisioning for storage nodes 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=20250310141813.969325-13-cel@kernel.org \
    --to=cel@kernel.org \
    --cc=chandanbabu@kernel.org \
    --cc=chuck.lever@oracle.com \
    --cc=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