在运行其他清单文件之前,我需要验证内存、处理器和端口连接等代理。因此,我通过将全局事实与语句和执行资源保持一致,创建了如下清单。
class vc {
#Validateing Infra Before applying chnages
if $::facts['memorysize'] >= '4.00 GiB'and $::facts['processorcount'] >= 2 and Exec['port_connectivity'] {
notify { "Infra validated" : }
include vc::configs
}
else {
notify { "Infra not meeting requirements" : }
}
# Checking port connecitivity to puppet master
exec { 'port_connectivity':
command => 'New-Item c:\debug.txt -type file -Force',
unless => 'if((New-Object System.Net.Sockets.TcpClient ("linux-NAS-storage.com",6163)).connected -eq $true) { exit 1 }',
provider => powershell,
}
}
if $::facts['memorysize'] >= '4.00 GiB'and $::facts['processorcount'] >= 2 and Exec['port_connectivity']
我的主题是 puppet 只有在此条件成功时才应执行。如果 exec 命令成功并且facter返回true,那么只有它应该执行,但是在清单之后单独执行而不检查该exec语句是否为true。我的主要目的是在运行 puppet manifest 之前验证端口。任何人都可以帮忙吗