Нет APT рекомендует с марионеткой

8

Я использую puppet для управления кучей серверов Debian на работе, частично, если это включает в себя установку пакетов. Один пакет, который я устанавливаю на нескольких системах, - это nmap, который используется для проверки правильности настройки правил брандмауэра. В Debian 7.0, если у вас включен APT :: Install-Recommended, вы получаете целую кучу дерьма вместе с nmap (см. Ниже).

Я не хочу, чтобы все дерьмо, которые устанавливают Nmap с включенными рекомендациями включены. Одним из решений было бы обновить мою подходящую конфигурацию APT::Install-Recommends "0";. Но я не хочу, чтобы это было по умолчанию. Большую часть времени я хочу, чтобы рекомендации включены. Рекомендованные пакеты в основном хороши, и я не получаю тонны вещей, которые мне не нужны. Но есть несколько пакетов, которые приносят мысли, которые мне не нужны / не нужны.

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

Есть ли какой-нибудь способ контроля, если рекомендуемые устанавливаются через puppet при использовании поставщика пакетов «apt»? Я не хочу возиться с провайдером 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]?
Zoredache
источник
Пришло время взглянуть на этот aptкласс.
Майкл Хэмптон
Связанная ошибка Debian: bugs.debian.org/cgi-bin/bugreport.cgi?bug=682062
Zoredache
@MichaelHampton, класс apt оправдывает, что APT настроен на использование моих внутренних репозиториев. Это не меняет ничего, что связано с рекомендациями.
Зоредаче
@Zoredache См. Также: serverfault.com/q/280405 и projects.puppetlabs.com/issues/4113
Шейн Мэдден,

Ответы:

10

Теперь это возможно с помощью параметра «install_options» в типе «пакета» Puppet: http://docs.puppetlabs.com/references/latest/type.html#package-attribute-install_options

Например:

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

Вышеуказанное обеспечивает передачу опции --no-install-Recommended в apt-get, которая пропускает рекомендуемые пакеты только для этой установки: http://manpages.ubuntu.com/manpages/precise/man8/apt-get .8.html

Тим Донохью
источник
3

До сих пор я нашел следующие решения, но они не идеальны.

Подождите, пока недавно добавленный патч превратится в выпущенную версию и обновите.

  • PRO: это правильный путь
  • CON: Я должен подождать или локально исправить мою настройку.

Просто используйте exec для установки вместо пакета и используйте exec.

  • PRO: просто сделать, если вы не беспокоитесь о проверке ошибок.
  • CON: для установки требуется довольно сложная командная строка, а не автоматическое обновление и корректная обработка ошибок установки.

Глобально обновите мою подходящую конфигурацию и потратьте время, чтобы найти все недостающие вещи и настроить мои манифесты, чтобы также установить пакеты, которые я хотел, которые устанавливаются только по рекомендации.

  • PRO: мои манифесты более конкретны и точнее отражают состояние системы
  • CON: Исправление моих манифестов / конфигов, чтобы отразить эту новую реальность, потребует нетривиального количества времени / усилий.

Установите переменную окружения APT_CONFIG перед запуском puppet.

  • PRO: легко установить, если вы используете марионетку, инициированную cron
  • PRO: не меняет поведение при использовании apt вручную
  • CON: легко забыть установить его при запуске APT вручную для целей тестирования.
  • CON: вы должны исправить все манифесты, как если бы вы обновляли глобальную конфигурацию.
Zoredache
источник
2
Как насчет написания собственного провайдера, использующего провайдера apt в качестве родителя, и добавления туда необходимых флагов? Либо так, либо напишите манифест для puppetmaster, чтобы выполнить команду исправления, если нет доказательств того, что она уже была применена.
Майк Ренфро
@MikeRenfro, о котором не может быть и речи, но я не особо знаком с рубином.
Зоредаче