it-swarm.com.de

automatisiere dpkg-rekonfiguriere tzdata

Ich verwende Puppet, um einen Cluster von Debian-Servern zu verwalten. Ich muss die Zeitzone jedes Computers im Cluster ändern. Der richtige Debian-Weg, dies zu tun, ist die Verwendung von dpkg-reconfigure tzdata. Aber ich kann es nur ändern, wenn ich den Dialog benutze. Gibt es eine Möglichkeit, dies über die Shell zu automatisieren, damit ich einfach einen Exec schreiben kann, um dies zu vereinfachen?

Wenn nicht, denke ich, wäre der nächstbeste Weg wahrscheinlich, Puppen verteilen zu lassen /etc/timezone und /etc/localtime mit den richtigen Daten im gesamten Cluster.

Jede Eingabe geschätzt!

60
razor

Sie müssen das Frontend als "nicht interaktiv" angeben, damit Ihre aktuellen Einstellungen gespeichert werden.

bei der dpkg-Neukonfiguration werden die aktuellen Systemeinstellungen als Evangelium verwendet. Ändern Sie daher einfach Ihre Zeitzone wie gewohnt und führen Sie sie mit dem nicht interaktiven Flag aus

z.B. für mich zu "Europa/Dublin" zu wechseln, wo ich bin:

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

Auf diese Weise können Sie natürlich Puppet/Cfengine verwenden, da Sie auch/etc/timezone verteilen möchten.

93
Philip Reynolds

Da der akzeptierte Antwort nicht mehr funktioniert (Debian Jessie, April 2017), scheint ein von @ gertvdijks Kommentar Link modifizierter Ansatz jetzt die Aufgabe zu erledigen:

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

Sie sollten in der Lage sein, debconf-set-selections zu verwenden, um die Konfiguration voreinzustellen. Installieren Sie debconf-utils und führen Sie debconf-get-selections | grep tzdata auf einem ordnungsgemäß konfigurierten System, um herauszufinden, wie es ebenfalls eingestellt werden soll.

5
Zoredache

Sie können auch das Rezept aus dem (inzwischen nicht mehr existierenden) Puppet Wiki ( Archiv ) verwenden, das /etc/localtime Durch die entsprechende Zoneinfo-Datei aus /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"
    }
}

Ich bin nicht sicher, ob dpkg-recfigure etwas extra macht, aber ich habe das obige Rezept verwendet und es funktioniert perfekt.

3
phred