Есть ли способ определить жесткие ссылки в манифесте марионетки?
Кажется, что тип файла может определять только символические ссылки, но мне нужно, чтобы это были жесткие ссылки, чтобы заставить работать некоторые из моих 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";
}
}
Конечно, они не идеальны, но они делают свою работу, и это все, что мне нужно.
Спасибо за помощь!
Вы также можете использовать оператор exec, если не можете найти другого способа.
exec { "hardlink1":
command => "ln target source",
path => "/usr/local/bin:/bin",
creates => "yourhardlink"
}
Также довольно тривиально просто передать один и тот же файл в несколько мест с помощью Puppet, например:
file { [ "/etc/named.conf", "/var/named/chroot/etc/named.conf" ]: mode => 640, owner => root, group => named, ensure => present, require => [ Package['bind'], Package['bind-chroot'], ], source => "puppet:///modules/named/named.conf", }
работает для меня идеально это ..
define hardlink($source=$name, $target) {
exec {
"hardlink-$name":
command => "ln -P --force $source $target",
path => "/usr/bin:/bin",
unless => "test $source -ef $target";
}
}