1
0
mirror of https://github.com/openshift/openshift-docs.git synced 2026-02-05 12:46:18 +01:00
Files
openshift-docs/modules/virt-generalizing-linux-vm-image.adoc
2025-10-21 20:13:45 +00:00

103 lines
3.3 KiB
Plaintext

// Module included in the following assemblies:
//
// * virt/virtual_machines/creating_vms_custom/virt-creating-vms-uploading-images.adoc
:_mod-docs-content-type: PROCEDURE
[id="virt-generalizing-linux-vm-image_{context}"]
= Generalizing a VM image
You can generalize a {op-system-base-full} image to remove all system-specific configuration data before you use the image to create a golden image, a preconfigured snapshot of a virtual machine (VM). You can use a golden image to deploy new VMs.
You can generalize a {op-system-base} VM by using the `virtctl`, `guestfs`, and `virt-sysprep` tools.
.Prerequisites
* You have a {op-system-base} virtual machine (VM) to use as a base VM.
* You have installed the OpenShift CLI (`oc`).
* You have installed the `virtctl` tool.
.Procedure
. Stop the {op-system-base} VM if it is running, by entering the following command:
+
[source,terminal]
----
$ virtctl stop <my_vm_name>
----
. Optional: Clone the virtual machine to avoid losing the data from your original VM. You can then generalize the cloned VM.
. Retrieve the `dataVolume` that stores the root filesystem for the VM by running the following command:
+
[source,terminal]
----
$ oc get vm <my_vm_name> -o jsonpath="{.spec.template.spec.volumes}{'\n'}"
----
+
.Example output
[source,terminal]
----
[{"dataVolume":{"name":"<my_vm_volume>"},"name":"rootdisk"},{"cloudInitNoCloud":{...}]
----
. Retrieve the persistent volume claim (PVC) that matches the listed `dataVolume` by running the followimg command:
+
[source,terminal]
----
$ oc get pvc
----
+
.Example output
[source,terminal]
----
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
<my_vm_volume> Bound …
----
+
[NOTE]
====
If your cluster configuration does not enable you to clone a VM, to avoid losing the data from your original VM, you can clone the VM PVC to a data volume instead. You can then use the cloned PVC to create a golden image.
If you are creating a golden image by cloning a PVC, continue with the next steps, using the cloned PVC.
====
. Deploy a new interactive container with `libguestfs-tools` and attach the PVC to it by running the following command:
+
[source,terminal]
----
$ virtctl guestfs <my-vm-volume> --uid 107
----
+
This command opens a shell for you to run the next command.
. Remove all configurations specific to your system by running the following command:
+
[source,terminal]
----
$ virt-sysprep -a disk.img
----
. In the {product-title} console, click *Virtualization* -> *Catalog*.
. Click *Add volume*.
. In the *Add volume* window:
.. From the *Source type* list, select *Use existing Volume*.
.. From the *Volume project* list, select your project.
.. From the *Volume name* list, select the correct PVC.
.. In the *Volume name* field, enter a name for the new golden image.
.. From the *Preference* list, select the {op-system-base} version you are using.
.. From the *Default Instance Type* list, select the instance type with the correct CPU and memory requirements for the version of {op-system-base} you selected previously.
.. Heterogeneous clusters only: From the *Architecture* list, select the architecture that corresponds with the selected volume.
.. Click *Save*.
The new volume appears in the *Select volume to boot from* list. This is your new golden image. You can use this volume to create new VMs.