diff options
-rw-r--r-- | TODO | 2 | ||||
-rw-r--r-- | po/POTFILES-ml | 1 | ||||
-rw-r--r-- | sysprep/Makefile.am | 4 | ||||
-rw-r--r-- | sysprep/sysprep_operation_lvm_uuids.ml | 53 |
4 files changed, 56 insertions, 4 deletions
@@ -400,8 +400,6 @@ virt-sysprep ideas Kazuo Moriwaka adds: - "yum clean all" (or the equivalent) to remove yum caches - - lvm PV and VG have its UUID. 'pvchange -u' and 'vgchange -u' generate - new UUID (causes trouble with clustered LVM). - swap devices (both of block device and file) should be wiped. This may good for security purpose, and size. I found virt-sparsify can clear swap partition. diff --git a/po/POTFILES-ml b/po/POTFILES-ml index b2c15a10..11aab055 100644 --- a/po/POTFILES-ml +++ b/po/POTFILES-ml @@ -22,6 +22,7 @@ sysprep/sysprep_operation_flag_reconfiguration.ml sysprep/sysprep_operation_hostname.ml sysprep/sysprep_operation_kerberos_data.ml sysprep/sysprep_operation_logfiles.ml +sysprep/sysprep_operation_lvm_uuids.ml sysprep/sysprep_operation_machine_id.ml sysprep/sysprep_operation_mail_spool.ml sysprep/sysprep_operation_net_hwaddr.ml diff --git a/sysprep/Makefile.am b/sysprep/Makefile.am index 5f5e11e5..e56a9718 100644 --- a/sysprep/Makefile.am +++ b/sysprep/Makefile.am @@ -41,8 +41,8 @@ CLEANFILES = \ operations = \ abrt_data bash_history blkid_tab ca_certificates cron_spool \ dhcp_client_state dhcp_server_state dovecot_data flag_reconfiguration \ - hostname kerberos_data logfiles machine_id mail_spool net_hwaddr \ - package_manager_cache pam_data puppet_data_log random_seed \ + hostname kerberos_data lvm_uuids logfiles machine_id mail_spool \ + net_hwaddr package_manager_cache pam_data puppet_data_log random_seed \ rhn_systemid samba_db_log script smolt_uuid ssh_hostkeys \ ssh_userdir sssd_db_log udev_persistent_net user_account \ utmp yum_uuid diff --git a/sysprep/sysprep_operation_lvm_uuids.ml b/sysprep/sysprep_operation_lvm_uuids.ml new file mode 100644 index 00000000..f23f5128 --- /dev/null +++ b/sysprep/sysprep_operation_lvm_uuids.ml @@ -0,0 +1,53 @@ +(* virt-sysprep + * Copyright (C) 2012 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + *) + +open Printf + +open Sysprep_operation +open Sysprep_gettext.Gettext + +module G = Guestfs + +let rec lvm_uuids_perform g root = + let typ = g#inspect_get_type root in + if typ = "linux" then ( + let has_lvm2_feature = + try g#available [|"lvm2"|]; true with G.Error _ -> false in + if has_lvm2_feature then ( + let has_pvs, has_vgs = g#pvs () <> [||], g#vgs () <> [||] in + if has_pvs || has_vgs then g#vg_activate_all false; + if has_pvs then g#pvchange_uuid_all (); + if has_vgs then g#vgchange_uuid_all (); + if has_pvs || has_vgs then g#vg_activate_all true + ) + ); + [] + +let lvm_uuids_op = { + name = "lvm-uuids"; + enabled_by_default = true; + heading = s_"Change LVM2 PV and VG UUIDs"; + pod_description = Some (s_"\ +On Linux guests that have LVM2 physical volumes (PVs) or volume groups (VGs), +new random UUIDs are generated and assigned to those PVs and VGs."); + extra_args = []; + perform_on_filesystems = None; + perform_on_devices = Some lvm_uuids_perform; +} + +let () = register_operation lvm_uuids_op |