69 votes

automate dpkg-reconfigure tzdata

J'utilise Puppet pour administrer un cluster de serveurs Debian. J'ai besoin de changer le fuseau horaire de chaque machine du cluster. La manière correcte de faire cela dans le système Debian est d'utiliser dpkg-reconfigure tzdata . Mais je ne peux le modifier que si j'utilise la boîte de dialogue. Existe-t-il un moyen d'automatiser cela à partir du Shell afin que je puisse simplement écrire un Exec pour rendre cela facile ?

Si ce n'est pas le cas, je pense que la meilleure solution suivante serait probablement de distribuer Puppet. /etc/timezone y /etc/localtime avec les données correctes à travers le cluster.

Toute contribution est appréciée !

99voto

David Pokluda Points 4284

Vous devez spécifier que le frontend est "non interactif" et il enregistrera vos paramètres actuels.

dpkg-reconfigure prendra les paramètres actuels du système comme évangile, donc changez simplement votre fuseau horaire comme vous le feriez normalement et exécutez-le avec le drapeau non-interactif

Par exemple, pour que je passe à "Europe/Dublin" là 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.

EDITAR:

après le commentaire de @gertvdijk pointant vers https://bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806 et @scruss réponse vous devrez probablement procéder de cette manière dans la plupart des distributions modernes :

$ sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
$ sudo dpkg-reconfigure -f noninteractive tzdata

38voto

scruss Points 451

Depuis le réponse acceptée ne fonctionne plus (Debian Jessie, avril 2017), une approche modifiée à partir de celle de @gertvdijk commentaire Le lien semble faire l'affaire maintenant :

sudo ln -fs /usr/share/zoneinfo/Europe/Dublin /etc/localtime
sudo dpkg-reconfigure -f noninteractive tzdata

4voto

jammus Points 1796

Vous devriez être en mesure d'utiliser debconf-set-selections pour prédéfinir la configuration. Installez debconf-utils et exécutez debconf-get-selections | grep tzdata sur un système correctement configuré pour savoir à quoi le fixer.

4voto

Toby White Points 350

Vous pouvez également utiliser la recette du site (aujourd'hui disparu) Puppet wiki ( archives ) qui remplace /etc/localtime avec le fichier zoneinfo approprié 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.

-5voto

f4a65fa46s5fa Points 1

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

/usr/bin/tzselect

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X