私は人形を使用してdebianサーバーのクラスターを管理しています。クラスター上の各マシンのタイムゾーンを変更する必要があります。これを行う適切なdebianの方法は、dpkg-reconfigure tzdata
を使用することです。しかし、ダイアログを使用しないと変更できないようです。これをシェルから自動化して、Execを作成してこれを簡単にする方法はありますか?
そうでない場合、次の最良の方法はおそらく、puppetに/etc/timezone
と/etc/localtime
をクラスター全体で正しいデータとともに配布させることだと思います。
任意の入力を歓迎します!
フロントエンドを「非インタラクティブ」として指定する必要があります。これにより、現在の設定が保存されます。
dpkg-reconfigureは現在のシステム設定をゴスペルとして取得するため、通常の方法でタイムゾーンを変更し、非インタラクティブフラグで実行します。
例えば私が「ヨーロッパ/ダブリン」に変更するために私はここにいます:
# echo "Europe/Dublin" > /etc/timezone
# dpkg-reconfigure -f noninteractive tzdata
もちろん、これにより/ etc/timezoneも配布したいので、puppet/cfengineを使用できます。
debconf-set-selections を使用して構成を事前設定できるはずです。 debconf-utilsをインストールし、適切に構成されたシステムでdebconf-get-selections | grep tzdata
を実行して、何を設定するかを把握します。
(現在は廃止されています) Puppet wiki ( archive )のレシピを使用して、/etc/localtime
を/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が追加の処理を行うかどうかはわかりませんが、上記のレシピを使用して完全に機能します。