沒有 APT 推薦使用 puppet
我在工作中使用 puppet 管理一堆 Debian 伺服器,其中包括安裝軟體包。我在多個系統上安裝的一個包是 nmap,它用於驗證防火牆規則是否設置正確。在 Debian 7.0 上,如果你啟用了 APT::Install-Recommends,你會得到一大堆垃圾以及 nmap(見下文)。
我不希望安裝 nmap 並啟用建議的所有廢話。一種解決方案是更新我的 apt 配置
APT::Install-Recommends "0";
。但我不想讓它成為預設值。大多數時候,我希望推薦包括在內。推薦的包大部分都很好,而且我沒有得到很多我不需要的東西。但是有一些包裹帶來了我不想要/不需要的想法。package { 'nmap': ensure => installed, require => Class['apt'], }
使用“apt”包提供程序時,是否有任何方法可以控制是否通過 puppet 安裝推薦? 我不想與 aptitude 提供者混為一談,因為 apt 和 aptitude 彼此並不完全兼容。
有推薦
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]?
無推薦
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]?
現在可以通過 Puppet ‘package’ 類型中的“install_options”設置來實現: https ://puppet.com/docs/puppet/latest/types/package.html#package-attribute-install_options
例如:
package { 'nmap': ensure => installed, install_options => ['--no-install-recommends'], }
以上確保將“–no-install-recommends”選項傳遞給 apt-get,它會跳過為此安裝推薦的軟體包:http: //manpages.ubuntu.com/manpages/precise/man8/apt-get .8.html
到目前為止,我已經找到了以下解決方案,但它們並不理想。
等到最近添加的更新檔使其成為發布版本併升級。
- PRO:這是正確的方法
- CON:我必須等待,或者在本地修補我的設置。
只需使用 exec 來安裝而不是包,然後使用 exec。
- PRO:如果您不擔心錯誤檢查,這很容易做到。
- 缺點:安裝需要相當複雜的命令行,不會自動升級,並且可以優雅地處理安裝錯誤。
全域更新我的 apt 配置,花時間查找所有失去的東西並調整我的清單以安裝我想要的軟體包,這些軟體包只有通過推薦才能安裝。
- PRO:我的清單更具體,更準確地反映了系統的狀態
- CON:修復我的清單/配置以反映這一新現實將花費大量的時間/精力。
在執行 puppet 之前設置 APT_CONFIG 環境變數。
- PRO:易於設置,如果您使用的是 cron 啟動的 puppet
- PRO:不會改變任何手動使用 apt 的行為
- 缺點:手動執行 APT 進行測試時容易忘記設置。
- 缺點:您必須修復所有清單,就像您更新全域配置一樣。