在puppet中我试图在Windows机器上安装一个包。该包可以使用INSTALLDIR
参数,该参数确定它的安装位置。我想确保包安装的目录存在。但是,除非我弄错了,木偶并不是管理整个目录树的最佳选择。在线建议的方法似乎是分别管理树中的每个文件夹,如下所示:
file{
['parent','parent/firstchild', 'parent/firstchild/lastchild]:
ensure => directory,
}
或者目录结构已经存在于modules文件夹中,或者运行一个创建目录树的exec(我想避免它,因为它不能确保一个状态,这是puppet的目标)。 / p>
我如何检查某个目录是否存在,如果没有在 变量的中创建它?
相关代码:
$installDir = "C:/folder1/folder2/folder3"
package{ "MagicalPackage":
ensure => $installValue,
source => 'magic.msi',
install_options => ["INSTALLDIR=${installDir}"],
}
答案 0 :(得分:1)
你走在正确的道路上。我认为这应该有用。
# Create install directory
file{ ["C:\folder1\", "C:\folder1\folder2", "C:\folder1\folder2\folder3" ]:
ensure => "directory",
}
# Set install directory
$installDir = "C:\folder1\folder2\folder3"
# Software
package { "MagicalPackage":
ensure => "installed",
source => 'magic.msi',
require => $installDir,
install_options => [ "INSTALLDIR = ${installDir}" ],
}
# Config file
file { "MagicalConfig":
path => "C:\Config\Path",
ensure => "file",
require => Package[ 'MagicalPackage' ],
}
# Service is on
service {
enabled => true,
}
答案 1 :(得分:0)
这是一个长期被要求的feature,但无法找到令人满意的设计。
如果您不希望明确管理路径上的每个目录,那么我可以在这里看到两个选项:
INSTALLDIR
并注意package
资源INSTALLDIR
添加custom facts - 然后您可以从清单中查询状态