Vraag automatiseren van dpkg-herconfiguratie van tzdata


Ik gebruik marionet om een ​​cluster van debian-servers te beheren. Ik moet de tijdzone van elk apparaat in het cluster wijzigen. De juiste manier om dit te doen is om te gebruiken dpkg-reconfigure tzdata. Maar ik kan het alleen lijken te veranderen als ik het dialoogvenster gebruik. Is er een manier om dit vanuit de shell te automatiseren, zodat ik gewoon een Exec kan schrijven om dit gemakkelijk te maken?

Zo niet, dan denk ik dat de volgende beste manier waarschijnlijk is om poppen te verspreiden /etc/timezone en /etc/localtime met de juiste gegevens in het cluster.

Enige input gewaardeerd!


51
2017-11-13 18:45


oorsprong




antwoorden:


U moet de frontend als `niet-interactief 'specificeren en het zal uw huidige instellingen opslaan.

dpkg-herconfiguratie zal de huidige systeeminstellingen als evangelie aannemen, dus verander simpelweg uw tijdzone zoals u dat normaal zou doen en voer het uit met de niet-interactieve vlag

bijv. voor mij om over te schakelen naar "Europa / Dublin" waar ik ben:

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

Uiteraard kun je hiermee ook poppentheater / cfengine gebruiken om / etc / timezone te distribueren.


91
2017-11-13 18:57



als een alternatief voor het wijzigen van rechten, zou je zoiets als dit kunnen doen. echo 'Europe/Dublin' | sudo tee /etc/timezone > /dev/null - gorelative
Voor de volledigheid is een andere manier om via sudo te echoën sudo bash -c 'echo "Europe/Dublin" > /etc/timezone' - MartyMacGyver
Kom op! Nieuwere Ubuntu / Debian-versies werken niet meer zo. Gedrag gewijzigd. bugs.launchpad.net/ubuntu/+source/tzdata/+bug/1554806 - gertvdijk


Sinds de geaccepteerd antwoord werkt niet meer (Debian Jessie, april 2017), een aanpak die is gewijzigd vanuit @ gertvdijk's commentaar link lijkt nu het werk te doen:

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

7
2018-04-27 20:30





Je zou moeten kunnen gebruiken -Debconf set-selecties om de configuratie vooraf in te stellen. Installeer debconf-utils en voer het uit debconf-get-selections | grep tzdata op een correct geconfigureerd systeem om erachter te komen wat het ook moet instellen.


4
2017-11-13 18:57



Voor dingen die debconf zijn gebaseerd, zou dit moeten werken. Maar tzdata geeft de voorkeur aan de config uit / etc / timezone. Dit werkt dus niet op een reeds geïnstalleerd (wheezy) systeem. - Elrond


U kunt ook het recept van het (nu ter ziele gegane) recept gebruiken Puppet wiki (archief) die wordt vervangen /etc/localtime met het juiste zoneinfo-bestand van /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"
    }
}

Ik weet niet zeker of dpkg-reconfigure iets extra's doet, maar ik heb het bovenstaande recept gebruikt en het werkt perfect.


2
2018-05-26 20:23





Het is heel eenvoudig en je hoeft alleen maar een opdracht te typen en de eenvoudige vragen te beantwoorden.
voer dan uit:

/usr/bin/tzselect

-3
2018-04-07 16:53



man tzselect: "Merk op dat tzselect de tijdzone niet voor jou zal veranderen. Gebruik hiervoor 'dpkg-reconfigure tzdata'." - spinkus