我使用puppetpipe理一个debian服务器集群。 我需要更改群集上每台机器的时区。 正确的debian方法是使用dpkg-reconfigure tzdata
。 但是,如果我使用对话框,我似乎只能改变它。 有没有办法从shell自动化这个,所以我可以写一个Exec来简化这个过程?
如果不是的话,我认为下一个最好的方法可能是让puppet在整个群集中分配正确的数据/etc/timezone
和/etc/localtime
。
任何input赞赏!
您需要将前端指定为“非交互式”,它将保存您当前的设置。
dpkg-reconfigure将把当前的系统设置作为福音,所以简单的改变你的时区就像你通常的方式一样,用非交互的标志运行它
例如,对于我来说,在我所在的地方换成“欧洲/都柏林”
# echo "Europe/Dublin" > /etc/timezone # dpkg-reconfigure -f noninteractive tzdata
显然,这可以让你使用puppet / cfengine来分配/ etc / timezone。
您应该可以使用debconf-set-selections来预设configuration。 安装debconf-utils并运行debconf-get-selections | grep tzdata
debconf-get-selections | grep tzdata
在一个正确configuration的系统上找出设置它的方法。
由于接受的答案不再有效(Debian Jessie,2017年4月),从@ gertvdijk的评论链接修改过的方法似乎现在可以完成这项工作:
sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime sudo dpkg-reconfigure -f noninteractive tzdata
您也可以使用(现已停用的) Puppet wiki ( 归档文件 )中的配方,将/etc/localtime
replace为/usr/share/zoneinfo
相应的zoneinfo文件:
class timezone { package { "tzdata": ensure => installed } } class timezone::central inherits timezone { file { "/etc/localtime": require => Package["tzdata"], source => "file:///usr/share/zoneinfo/US/Central", } } class timezone::eastern inherits timezone { file { "/etc/localtime": require => Package["tzdata"], source => "file:///usr/share/zoneinfo/US/Eastern" } } class timezone::pacific inherits timezone { file { "/etc/localtime": require => Package["tzdata"], source => "file:///usr/share/zoneinfo/US/Pacific" } } class timezone::mountain inherits timezone { file { "/etc/localtime": require => Package["tzdata"], source => "file:///usr/share/zoneinfo/US/Mountain" } }
我不知道如果dpkg-reconfigure做了额外的事情,但是我已经使用了上面的配方,它完美的工作。
它非常简单,只需键入命令并回答简单的问题。
然后运行:
/usr/bin/tzselect