Я использую Ubuntu 10.04 и использую марионетку, чтобы изменить часовой пояс с UTC на PST при запуске сервера. Рецепт часового пояса Puppet, который я использую, следующий: Рецепт кукольного времени
С Ubuntu 10.04 все работало нормально, теперь мы переходим на Ubuntu 12.04, и этот рецепт Puppet не работает. Причина, по которой я понял, находится в 10.04 / etc / localtime - это файл с содержимым PST8PDT, тогда как в 12.04 это символическая ссылка (из-за рецепта марионетки), и она связана с SystemV /, но путь к каталогу SystemV неверен. Когда я делаю ls -l в / etc
lrwxrwxrwx 1 root root 18 Oct 18 18:38 localtime -> ../SystemV/PST8PDT
Но нет папки SystemV на один уровень выше / etc. Я изменил рецепт марионетки на это:
class timezone::pacific inherits timezone {
file { "/etc/localtime":
require => Package["tzdata"],
# source => "file:///usr/share/zoneinfo/US/Pacific",
source => "file:///usr/share/zoneinfo/SystemV/PST8PDT",
и это сработало, и местное время больше не было ссылкой. Может ли кто-нибудь помочь мне понять, почему рецепт марионетки, который я унаследовал и работал нормально 10.04, не работал 12.04 и почему изменение рецепта на новое место назначения SystemV исправило его.
Это немного странно. На моей виртуальной машине 12.04 оба /usr/share/zoneinfo/SystemV/PST8PDT
и /usr/share/zoneinfo/US/Pacific
являются символической ссылкой на /usr/share/zoneinfo/America/Los_Angeles
. Любой из использованных вами путей должен был привести к /etc/localtime
который был ссылкой на ../America/Los_Angeles
.
Вы думали о том, чтобы links => follow
? Таким образом марионетка разрешит символическую ссылку и скопирует содержимое вместо копирования символической ссылки.