我申請一個本地清單來測試exec
和file
資源:木偶文件資源運行,除非
class test_file {
exec { "touch /tmp/testfile":
path => ["/bin", "/usr/bin", "/sbin", "/usr/sbin"],
unless => "test -d /tmp 2>/dev/null",
}
file { "/tmp/success":
mode => "0777",
owner => "root",
group => "staff",
source => "file:///Users/Shared/success",
require => Exec["touch /tmp/testfile"],
}
}
我期待發生的事情: 的exec
運行和退出,因爲unless
聲明返回0,所以文件資源從不運行,並且/tmp
中都沒有創建文件。
到底發生了什麼: 的file
資源始終運行,並複製「成功」文件/tmp
我在MacOS 10.11和10.12既木偶劑4.10和5.3.2運行此。 ..與結果相同。我只是試圖運行一個條件,說不要複製文件,如果某些命令退出成功。任何見解或方向將不勝感激。
雖然他只是爲了訓練而這樣做,所以我不知道他是否真的想在真實的環境中做這種設計的場景。在那種情況下,他可能會有一個'file'做第一個動作,一個'exec'做第二個動作。 –
這不太對。對'Exec'具有'require'需求的'File'不僅建立了應用程序的順序,而且如果試圖應用'Exec'被創建並失敗,它也阻止了'File'的應用。但是,'Exec'失敗當然不同於它沒有被同步化(在這種情況下,通過它的'unless'命令確定)。 –
我加了一個關於這個的腳註。 –