feat: add ZFS facts to prevent zpool disk changes (#410)
- add zfs_zpools and zfs_datasets facts to detect existing ZFS resources - skip zpool creation when pools already exist Reviewed-on: #410
This commit is contained in:
parent
766233c3e5
commit
5ba483c68a
19
modules/zfs/lib/facter/zfs_datasets.rb
Normal file
19
modules/zfs/lib/facter/zfs_datasets.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
Facter.add(:zfs_datasets) do
|
||||||
|
confine kernel: 'Linux'
|
||||||
|
setcode do
|
||||||
|
datasets = []
|
||||||
|
|
||||||
|
if Facter::Core::Execution.which('zfs')
|
||||||
|
begin
|
||||||
|
output = Facter::Core::Execution.execute('zfs list -H -o name 2>/dev/null', on_fail: nil)
|
||||||
|
datasets = output.strip.split("\n") if output && !output.empty?
|
||||||
|
rescue StandardError => e
|
||||||
|
Facter.debug("Error getting zfs dataset information: #{e.message}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
datasets.empty? ? nil : datasets
|
||||||
|
end
|
||||||
|
end
|
||||||
19
modules/zfs/lib/facter/zfs_zpools.rb
Normal file
19
modules/zfs/lib/facter/zfs_zpools.rb
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
Facter.add(:zfs_zpools) do
|
||||||
|
confine kernel: 'Linux'
|
||||||
|
setcode do
|
||||||
|
zpools = []
|
||||||
|
|
||||||
|
if Facter::Core::Execution.which('zpool')
|
||||||
|
begin
|
||||||
|
output = Facter::Core::Execution.execute('zpool list -H -o name 2>/dev/null', on_fail: nil)
|
||||||
|
zpools = output.strip.split("\n") if output && !output.empty?
|
||||||
|
rescue StandardError => e
|
||||||
|
Facter.debug("Error getting zpool information: #{e.message}")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
zpools.empty? ? nil : zpools
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -38,8 +38,11 @@ class zfs (
|
|||||||
|
|
||||||
# create zpools
|
# create zpools
|
||||||
$zpools.each | $zpool, $data | {
|
$zpools.each | $zpool, $data | {
|
||||||
zpool { $zpool:
|
# Only create zpool if it doesn't already exist
|
||||||
* => $data
|
if $facts['zfs_zpools'] == undef or !($zpool in $facts['zfs_zpools']) {
|
||||||
|
zpool { $zpool:
|
||||||
|
* => $data
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user