我正在使用 Ubuntu 10.04,并在服务器启动时使用 puppet 将时区从 UTC 更改为 PST。我正在使用的 Puppet 时区配方如下: 木偶时间食谱
在 Ubuntu 10.04 上一切正常,现在我们转向 Ubuntu 12.04,这个 Puppet 配方不起作用。我发现的原因是,在 10.04 中 /etc/localtime 是一个内容为 PST8PDT 的文件,而在 12.04 中它是一个符号链接(因为 puppet 配方),它链接到 SystemV/,但 SystemV 目录的路径不正确。当我在 /etc 中执行 ls -l 时
lrwxrwxrwx 1 root root 18 Oct 18 18:38 localtime -> ../SystemV/PST8PDT
但是 /etc 上没有 SystemV 文件夹。我将 puppet 配方改为:
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",
并且它工作正常,本地时间不再是链接。有人能帮我理解为什么我继承的 puppet 配方在 10.04 上运行良好,但在 12.04 上却无法运行,以及为什么将配方更改为新的 SystemV 目标可以修复此问题。
答案1
这有点奇怪。在我的 12.04 VM 上,和都是/usr/share/zoneinfo/SystemV/PST8PDT
的/usr/share/zoneinfo/US/Pacific
符号链接/usr/share/zoneinfo/America/Los_Angeles
。无论你使用哪种路径,都应该得到 ,/etc/localtime
它是 的链接../America/Los_Angeles
。
你考虑过做一个吗links => follow
?这样,puppet 就会解析符号链接并复制内容,而不是复制符号链接。