有没有办法在 Puppet 清单中定义硬链接?
似乎文件类型只能定义符号链接,但我需要它是硬链接,以便使我的一些 chrooted 应用程序正常工作。例如,我需要硬链接
/etc/hosts -> $chroot/etc/hosts
/etc/resolvf.com -> $chroot/etc/resolv.conf
等等。
归档该内容的最简单方法是什么?
更新:谢谢,我得到了以下定义:
define hardlinkdir(source=$name, target) {
exec {
"hardlinkdir-$name":
command => "cp -r --link $target $source",
path => "/usr/bin:/bin",
creates => $source;
}
}
define hardlink(source=$name, target) {
exec {
"hardlink-$name":
command => "ln --force $target $source",
path => "/usr/bin:/bin",
unless => "test $source -ef $target";
}
}
当然,它们并不完美,但它们能完成工作,而且满足我的一切需求。
感谢您的帮助!
答案1
如果找不到其他方法,您也可以使用语句“exec”。
exec { "hardlink1":
command => "ln target source",
path => "/usr/local/bin:/bin",
creates => "yourhardlink"
}
答案2
对我来说非常完美。
define hardlink($source=$name, $target) {
exec {
"hardlink-$name":
command => "ln -P --force $source $target",
path => "/usr/bin:/bin",
unless => "test $source -ef $target";
}
}
答案3
使用 Puppet 将同一个文件通过管道传输到多个位置也相当简单,例如:
文件 { [ “/etc/named.conf”, “/var/named/chroot/etc/named.conf” ]: 模式 => 640, 所有者 => 根, 组 => 命名, 确保 => 存在, 需要 => [ 包['bind'], 包['bind-chroot'], ], 源 => “puppet:///modules/named/named.conf”, }