如何在 Puppet 中检查物理磁盘

如何在 Puppet 中检查物理磁盘

我有以下 Linux 脚本

cre_disk=$(ls /dev/sd[b-z])
for disk in $cre_isk
do 
pvcreate $i
done

我从上面的代码理解是,它正在检查 sdb、sdc..sdz 磁盘文件。如果存在,则创建物理卷。

我的需求是,需要将上面的 linux 转换为 puppet(lvm 创建)。我知道创建物理卷的命令

physical volume{'/dev/sdb':
ensure => 'present'
}

我不确定如何检查物理磁盘(cre_disk=$(ls /dev/sd[bz]))。是否有可用资源,或者 puppet 会在没有任何资源的情况下进行处理。

注意:我在之前的问题帖中以不同的格式发布了同样的问题。请忽略主题,主题名称是“检查物理磁盘目录”

答案1

因素变量分区

[vagrant@localhost ~]$ facter partitions
{"sda1"=>{"uuid"=>"X", "size"=>"1024000", "mount"=>"/boot"}, "sda2"=>{"size"=>"Y"}}

可以在if 语句如下:

if $partitions !~ /sd[b-z]1/ {
  notify{"partition does not exist":}
}

结果

[vagrant@localhost ~]$ sudo puppet agent -t
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for localhost.local
Info: Applying configuration version 'X'
Notice: drive does not exist
Notice: /Stage[main]/Main/Node[default]/Notify[partition does not exist]/message: defined 'message' as 'drive does not exist'
Notice: Finished catalog run in 0.07 seconds

答案2

您有多种选择。

  • 让 puppet 在目标机器上运行脚本是完全可能的。不过,根据脚本的功能,您可能希望阻止它运行多次。这就是这种情况。

  • 您可以在目标机器上添加事实模块,将有关块设备的信息导出为事实。https://github.com/CygnusNetworks/cygnus-puppet-disk-facter将会是这样的模块。

相关内容