Я использую марионетку для администрирования кластера серверов debian. Мне нужно изменить часовой пояс каждой машины в кластере. Правильный способ debian сделать это - использовать dpkg-reconfigure tzdata
. Но я могу изменить это, только если использую диалог. Есть ли способ автоматизировать это из оболочки, чтобы я мог просто написать Exec, чтобы упростить это?
Если нет, то я думаю, что следующим лучшим способом, вероятно, будет раздача марионеток /etc/timezone
и /etc/localtime
с правильными данными по кластеру.
Любой вклад приветствуется!
Вам необходимо указать интерфейс как «неинтерактивный», и он сохранит ваши текущие настройки.
dpkg-reconfigure примет текущие системные настройки как евангелие, поэтому просто измените свой часовой пояс, как обычно, и запустите его с неинтерактивным флагом
например для меня, чтобы перейти в "Европа / Дублин", где я нахожусь:
# echo "Europe/Dublin" > /etc/timezone
# dpkg-reconfigure -f noninteractive tzdata
Очевидно, это позволяет вам использовать puppet / cfengine, как вам нравится, также распространять / etc / timezone.
Поскольку принятый ответ больше не работает (Debian Jessie, апрель 2017 г.), подход, измененный из @ gertvdijk's комментарий ссылка, похоже, выполняет эту работу сейчас:
sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata
Вы должны уметь использовать debconf-set-selections для предварительной настройки конфигурации. Установите debconf-utils и запустите debconf-get-selections | grep tzdata
на правильно настроенной системе, чтобы выяснить, что это установить.
Вы также можете использовать рецепт из (ныне несуществующего) Марионетка вики (архив) который заменяет /etc/localtime
с соответствующим файлом zoneinfo из /usr/share/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