他のマニフェスト ファイルを実行する前に、メモリ、プロセッサ、ポート接続などのエージェントを検証する必要があります。そのため、次のようなマニフェストを作成し、ステートメントと実行リソースを使用してグローバルな事実を保持します。
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']
私のテーマは、この条件が成功した場合にのみパペットが実行されることです。exec コマンドが成功し、facter が true を返した場合、それのみが実行されますが、次のマニフェストは、その exec ステートメントが true かどうかをチェックせずに個別に実行されます。主な目的は、パペット マニフェストを実行する前にポートを検証する必要があることです。助けてください