mirror of
https://github.com/openshift/openshift-docs.git
synced 2026-02-05 12:46:18 +01:00
103 lines
3.3 KiB
Plaintext
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.
|