automatiser dpkg-reconfigure tzdata

60

J'utilise puppet pour administrer un cluster de serveurs Debian. Je dois changer le fuseau horaire de chaque machine du cluster. La bonne façon de faire cela consiste à utiliser debian dpkg-reconfigure tzdata. Mais je ne peux apparemment sembler le changer que si j'utilise le dialogue. Existe-t-il un moyen d'automatiser cette opération à partir du shell afin que je puisse simplement écrire un fichier Exec pour simplifier les choses?

Sinon, je pense que la meilleure façon serait probablement d'avoir marionnettes distribuer /etc/timezoneet /etc/localtimeavec les données correctes dans le cluster.

Toute entrée appréciée!

Elrond
la source
Notez que la réponse actuellement acceptée est erronée depuis 2017 . La bonne réponse est celle-ci .
Dan Dascalescu

Réponses:

93

Vous devez spécifier le frontal comme «non interactif» et cela sauvegardera vos paramètres actuels.

dpkg-reconfigure considérera les paramètres actuels du système comme un évangile. Changez donc simplement votre fuseau horaire comme vous le feriez normalement et exécutez-le avec l'indicateur non interactif.

par exemple pour que je passe à "Europe / Dublin" où je suis:

# echo "Europe/Dublin" > /etc/timezone    
# dpkg-reconfigure -f noninteractive tzdata

Évidemment, cela vous permet d’utiliser puppet / cfengine comme vous le souhaitez pour distribuer également / etc / timezone.

Philip Reynolds
la source
5
au lieu de modifier les autorisations, vous pouvez procéder de la sorte. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null
gorelative
3
Pour être complet, un autre moyen de faire écho via sudo estsudo bash -c 'echo "Europe/Dublin" > /etc/timezone'
MartyMacGyver
6
La tête haute! Les versions les plus récentes d'Ubuntu / Debian ne fonctionnent plus de cette façon. Le comportement a changé. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806
gertvdijk
22

Puisque la réponse acceptée ne fonctionne plus (Debian Jessie, avril 2017), une approche modifiée depuis le lien de commentaire de @ gertvdijk semble faire l'affaire maintenant:

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata
scruss
la source
1
Cela devrait être la réponse acceptée de nos jours.
Dan Dascalescu
Génial, cela fonctionne bien
infomaniac
5

Vous devriez pouvoir utiliser debconf-set-selections pour prédéfinir la configuration. Installez debconf-utils et exécutez-le debconf-get-selections | grep tzdatasur un système correctement configuré pour déterminer les paramètres à définir.

Zoredache
la source
1
Pour les choses basées sur debconf, cela devrait marcher. Mais tzdata préfère la configuration de / etc / timezone. Donc, cela ne fonctionne pas sur un système déjà installé (Wheezy).
Elrond
3

Vous pouvez également utiliser la recette du wiki ( archive ) de Puppet (maintenant disparu ) qui remplace /etc/localtimele fichier zoneinfo approprié à partir de /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"
    }
}

Je ne suis pas sûr que dpkg-reconfigure fasse quelque chose de plus, mais j'ai utilisé la recette ci-dessus et cela fonctionne parfaitement.

énoncé
la source
-3

C'est très simple et il suffit de taper une commande et de répondre aux questions simples.
puis lancez:

/usr/bin/tzselect
f4a65fa46s5fa
la source
1
man tzselect: "Notez que tzselect ne changera pas le fuseau horaire pour vous. Utilisez 'dpkg-reconfigure tzdata' pour y parvenir."
Spinkus