Vagrant 流浪汉和厨师:如何设置Ubuntu环境变量?

Vagrant 流浪汉和厨师:如何设置Ubuntu环境变量?,vagrant,chef-infra,Vagrant,Chef Infra,使用Chef 11.4,我试图让vagrant设置一个环境变量。特别是设置VM时区的TZ env变量 手动运行很好,如果我使用ssh,然后键入export TZ=America/Los_Angeles,然后键入date,我看到的时间是西海岸时区,而不是ubuntu的默认UTC 但我不知道如何在vagrant文件中有效地运行export TZ=America/Los_Angeles,所以当我运行vagrant时它就会执行 我尝试了3种不同的方法,包括尝试将其写入.profile文件。它们都不起作用

使用Chef 11.4,我试图让vagrant设置一个环境变量。特别是设置VM时区的TZ env变量

手动运行很好,如果我使用ssh,然后键入export TZ=America/Los_Angeles,然后键入date,我看到的时间是西海岸时区,而不是ubuntu的默认UTC

但我不知道如何在vagrant文件中有效地运行export TZ=America/Los_Angeles,所以当我运行vagrant时它就会执行

我尝试了3种不同的方法,包括尝试将其写入.profile文件。它们都不起作用。配置文件不会被编辑,并且不会设置TZ变量

config.vm.provision :shell, inline: %q{export TZ=America/Los_Angeles}
config.vm.provision :shell, inline: %q{sudo bash -c "export TZ=America/Phoenix" >> ~/.profile}
config.vm.provision :shell, inline: %q{echo "export TZ=America/New_york" >> ~/.profile}
运行vagrant up后的输出为:


但是环境变量不能直接设置,也不能编辑.profile文件

答案是双重的。。。至少对于我正在使用的Linux,该文件应该在.bashrc文件中,而不是~必须使用完整路径,即/home/vagrant/.bashrc。

确定吗?Chef以root身份运行,因此您正在更改/root/.profile。还回答了一个类似的问题:请注意,这将仅为流浪用户而不是系统范围内的用户设置时区,任何其他守护进程/用户都将获得默认时区。如果你真的想在系统范围内设置它,你应该在ubuntu下修改/etc/timezone,并且RHEL5的/etc/sysconfig/clock中的ZONE变量不能用于其他发行版。在我们的例子中,我们为ruby应用程序和workers设置它,它们使用TZ env变量。因此,我发现上面的方法适用于这种情况,但可能仅适用于这种情况。
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty
==> default: Running provisioner: shell...
    default: Running: inline script
==> default: stdin: is not a tty