Come posso gestire apt in modo efficiente su più macchine?


11

Gestisco circa 30 server Ubuntu usando le marionette. Ho visto molti riferimenti a cron-apt e apticron come approcci per mantenere aggiornati i loro pacchetti, ma non sono stato in grado di trovare un modo per gestire centralmente il processo. Con cront-apt / apticron avrei comunque bisogno di accedere a ciascun host ed eseguire aptitude updateper eseguire l'aggiornamento. Per non parlare delle notifiche di revisione di tutte e 30 le macchine ogni volta che viene aggiornato un pacchetto principale.

Deve esserci un modo migliore. Eventuali suggerimenti?

Risposte:


3

Il paesaggio potrebbe interessarti. Questo è lo strumento di gestione "ufficiale" per la gestione di grandi distribuzioni Ubuntu e Canonical è probabilmente molto desideroso di ottenere i tuoi soldi per il suo utilizzo.

RE-EDIT:

Innanzitutto, un disclaimer; Non ho usato il mirroring per Debian o Ubuntu, quindi non ho familiarità con il software.

In secondo luogo, sembra che apt-mirror sarebbe una soluzione "troppo pesante", mi scuso. L'idea originale era che avresti avuto una macchina di prova separata (o un ambiente di prova, probabilmente una macchina virtuale?) Su cui distribuire l'aggiornamento. Una volta che sei soddisfatto delle prestazioni dell'aggiornamento, dovresti estrarre / inserire il pacchetto nel tuo mirror "deploy" (ci sarebbe il mirror locale dalle fonti ufficiali e un mirror secondario solo per gli aggiornamenti che desideri distribuire). Le macchine remote eseguivano quindi un aggiornamento a un orario prestabilito e lo estraevano dal mirror "deploy" su ciascuna macchina, un processo cron composto da:

apt-get update && apt-get upgrade --quiet --assume-yes

Sfortunatamente, quando ho iniziato a leggere i dettagli, sembra che apt-mirrortirerà tutti i tipi di cose e non solo i pacchetti che stai cercando. Quindi, abbandonerò questa idea, sebbene il concetto abbia qualche merito.


Il paesaggio sembra interessante. Dovrò guardare più da vicino. Non sono chiaro su come eseguire un mirror apt locale (cosa che faccio attualmente) mi aiuterebbe ad approvare / rivedere gli aggiornamenti in sospeso. Puoi chiarirlo?
Insyte,

14

Un collega ha scoperto e ha analizzato brevemente apt-dater, che è un "gestore di aggiornamenti di pacchetti remoti basato su terminali".

Si utilizza un'interfaccia basata su curses per gestire gli aggiornamenti su tutti i propri host, o gruppi di host, ecc. Supporta la registrazione dell'intera sessione apt, inclusi eventuali errori che possono verificarsi, ecc.

Si basa su ssh e sudo sulle macchine gestite.

vedi http://www.ibh.de/apt-dater/

Non l'ho usato da solo, quindi non posso approvarlo, ma sembra vicino a quello che stai cercando.


Sembra molto promettente. Insyte, ho intenzione di raccomandare questa risposta al mio. Mentre puoi fare tutti i passaggi che ho descritto, vuoi davvero investire il tempo in quello, quando potresti probabilmente fare una configurazione molto rapida di questo e andare avanti con la vita? @Jeff, +1 per un bel suggerimento.
Avery Payne,

4

Dal momento che stai già utilizzando Puppet, il modo più semplice per farlo (e il migliore per scopi di controllo / tracciamento delle modifiche) è specificare la versione desiderata dei pacchetti che desideri installare nel manifest del pupazzo. Tieni d'occhio la lista degli annunci di sicurezza, e quando qualcosa che usi arriva ti basta aggiornare Puppet per dire "installa questa nuova versione di questo pacchetto". Supponendo che tu stia utilizzando il controllo di revisione sui tuoi manifesti, sai quando è stata modificata la "politica" e i rapporti di Puppet ti mostrano esattamente quando è stata effettivamente apportata la modifica (in modo da poterlo correlare facilmente con eventuali eventi di registro successivi).


Questo è praticamente ciò che facciamo. Non usiamo il tipo di pacchetto fantoccio poiché ciò causerebbe l'installazione di ogni pacchetto su ogni server. Invece, scriviamo un file sul server con il nome e la versione del pacchetto e quindi utilizziamo uno script per eseguirli e verificare se sono installati e quindi provare a installarli. La seconda parte è uno script che legge la mia cartella di posta con le email di apticron e prende tutti i pacchetti che necessitano di aggiornamento e riscrive il file manifest. Non siamo del tutto sicuri di quanto funzioni bene questo metodo.
David Pashley,

2
Perché il tipo di pacchetto Puppet installa tutti i pacchetti su ogni macchina? Metti le stanze per ogni pacchetto nella relativa classe o tipo definito, quindi viene installato solo sulle macchine appropriate. Se si desidera centralizzare l'elenco delle versioni in un file, disporre di un grande elenco di risorse virtuali e realizzarle laddove necessario.
womble

2

Dai un'occhiata a clusterssh (apt-get install clusterssh):

$ cssh server1 server2 server3 ...


1
In realtà funziona ancora in 10.9.3 ... è un po 'esilarante usarlo
Jonathan S. Fisher,

1

Senza averci davvero pensato prima, la mia prima idea sarebbe qualcosa di simile a ciò che ogni cosa ha suggerito, specialmente se hai già un test di abilitazione.

Fondamentalmente, imposti le tue macchine di produzione per l'aggiornamento automatico dal tuo repository locale e aggiorni questo repository solo dopo aver aggiornato il tuo ambiente di test alla versione più recente di tutto ciò che esegui.

Apticron non si adatta bene, è progettato per funzionare in ambienti piuttosto piccoli, ma ha alcuni punti positivi:

  • Non ti invia solo un elenco, ma anche i log delle modifiche per i pacchetti da aggiornare.
  • Per ottenere i log delle modifiche scarica i pacchetti, quindi quando esegui l'aggiornamento non devi aspettare che vengano scaricati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.