Nessun APT raccomanda con il burattino


8

Uso Puppet per gestire un sacco di server Debian al lavoro, in parte se questo include l'installazione di pacchetti. Un pacchetto che installo su diversi sistemi è nmap che viene utilizzato per verificare che le regole del firewall siano configurate correttamente. Su Debian 7.0, se hai APT :: Install-recommends abilitato ottieni un sacco di schifezze insieme a nmap (vedi sotto).

Non voglio tutte le schifezze che installano nmap con le raccomandazioni abilitate incluse. Una soluzione sarebbe quella di aggiornare la mia configurazione apt con APT::Install-Recommends "0";. Ma non voglio che questo sia il valore predefinito. La maggior parte delle volte che voglio raccomanda inclusa. I pacchetti consigliati sono per lo più perfetti e non ricevo tonnellate di roba di cui non ho bisogno. Ma ci sono alcuni pacchetti che stanno portando pensa che non voglio / non ho bisogno.

  package { 'nmap':
    ensure => installed,
    require => Class['apt'],
  }

Esiste un metodo per controllare se le raccomandazioni sono installate tramite puppet quando si utilizza il provider di pacchetti 'apt'? Non voglio scherzare con il provider aptitude poiché apt e aptitude non sono completamente compatibili tra loro.

Con Raccomanda

root@fw-01:~# apt-get install nmap
Reading package lists... Done
Building dependency tree       
Reading state information... Done
... 
The following NEW packages will be installed:
  fonts-droid fonts-liberation ghostscript gnuplot gnuplot-nox groff gsfonts
  imagemagick imagemagick-common libblas3 libblas3gf libcroco3 libcupsimage2
  libdjvulibre-text libdjvulibre21 libexiv2-12 libgfortran3 libgs9
  libgs9-common libijs-0.35 libilmbase6 libjbig2dec0 liblcms1 liblcms2-2
  liblensfun-data litesting firewall blensfun0 liblinear-tools liblinear1 liblqr-1-0
  libmagickcore5 libmagickcore5-extra libmagickwand5 libnetpbm10 libopenexr6
  libpaper-utils libpaper1 librsvg2-2 librsvg2-common libsvm-tools libwmf0.2-7
  netpbm nmap poppler-data psutils ufraw-batch
0 upgraded, 45 newly installed, 0 to remove and 0 not upgraded.
Need to get 32.0 MB of archives.
After this operation, 93.8 MB of additional disk space will be used.
Do you want to continue [Y/n]? 

Senza Raccomandazioni

root@fw-01:~# apt-get --no-install-recommends install nmap
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  libblas3 libblas3gf libgfortran3 liblinear1
Suggested packages:
  liblinear-dev
Recommended packages:
  liblinear-tools
The following NEW packages will be installed:
  libblas3 libblas3gf libgfortran3 liblinear1 nmap
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 4,405 kB of archives.
After this operation, 17.4 MB of additional disk space will be used.
Do you want to continue [Y/n]?

È tempo di guardare quella aptclasse.
Michael Hampton,


@MichaelHampton, i giusti della classe apt si assicurano che APT sia configurato per usare i miei repository interni. Non sta cambiando nulla in relazione ai Consigli.
Zoredache,

Risposte:


10

Ciò è ora possibile tramite l'impostazione "install_options" nel tipo "pacchetto" Puppet: http://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options

Per esempio:

package { 'nmap':
  ensure          => installed,
  install_options => ['--no-install-recommends'],
}

Quanto sopra assicura che l'opzione "--no-install-recommend" sia passata ad apt-get, che salta i pacchetti consigliati solo per questa installazione: http://manpages.ubuntu.com/manpages/precise/man8/apt-get .8.html


3

Finora ho trovato le seguenti soluzioni, ma non sono ideali.

Attendi fino a quando una patch aggiunta di recente non diventa versione rilasciata e aggiorna.

  • PRO: questo è il modo giusto
  • CON: Devo aspettare, o localmente patchare la mia installazione.

Basta usare un exec per installare invece del pacchetto e usare un exec.

  • PRO: semplice da fare se non ti preoccupi del controllo degli errori.
  • CON: Ci vuole una riga di comando piuttosto complessa per installare, non aggiornare automaticamente e gestire con grazia errori di installazione.

Aggiorna globalmente la mia configurazione apt, e dedica il tempo a trovare tutte le cose mancanti e ad adattare i miei manifest per installare anche i pacchetti che volevo che venissero installati solo se consigliati.

  • PRO: i miei manifest sono più specifici e riflettono più precisamente lo stato di un sistema
  • CON: Risolvere i miei manifest / configurazioni per riflettere questa nuova realtà richiederà una quantità non banale di tempo / sforzo.

Imposta la variabile d'ambiente APT_CONFIG prima di eseguire il pupazzo.

  • PRO: facile da impostare, se si utilizza il burattino avviato cron
  • PRO: non cambia il comportamento per l'utilizzo manuale di apt
  • CON: facile da dimenticare per impostarlo quando si esegue manualmente APT a scopo di test.
  • CON: devi correggere tutti i manifest, proprio come se aggiorni la configurazione globale.

2
Che ne dici di scrivere un provider personalizzato usando il provider apt come genitore e aggiungere lì i flag richiesti? O quello, o scrivere un manifest per il burattinaio per eseguire il comando patch a meno che non ci siano prove che sia già stato applicato.
Mike Renfro,

@MikeRenfro che non è fuori discussione, ma non conosco particolarmente il rubino.
Zoredache,
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.