我有以下 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将会是这样的模块。