Size: a a a

Puppet — русскоговорящее сообщество

2021 April 13

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
Хотя там хитрости с $_kick_apt не обратил внимание.  Да работать будет, но там минимум 'daily' можно выставить.
jhgfdfgh555kkk
Выстави frequency в классе apt
источник

A

Andor in Puppet — русскоговорящее сообщество
никак не вызовет напрямую, прост подразумевается что ты классом apt уже озаботился как-то
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
Там по умолчанию refreshonly  в классе apt включен и само по себе apt-get не будет вызываться, но можно выставить чтобы оно вызывалось когда apt-get update не выполнялось больше суток
# лучше через hiera задать параметры и сделать include apt
class { 'apt':
 update => {
   frequency => 'daily',
 },
}
Class['apt::update'] -> ensure_packages(['curl','wget'])
источник

A

Andor in Puppet — русскоговорящее сообщество
можно, угу
источник

A

Andor in Puppet — русскоговорящее сообщество
но ваще разработчики других модулей просто делегируют этот вопрос модулю apt и не делают себе мозги
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
Так я не хочу делать периодически update вообще, только перед установкой
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
это же не скрипт. Ты просто объявляешь что должны быть такие-то пакеты в состоянии установлено.
Оно не совсем периодически делает, а во время puppet agent -t если прошло больше суток с последнего обновления apt-get update. Если у тебя puppet agent -t периодически не выполняется, то и не будет выполняться периодически apt-get update.
А чего ты боишься обновлять apt-get update раз в сутки? - это странно.

ну если такие себе ограничения фиганул, тогда костыли остаются. Скрипты на баше, типо dpkg -l | grep -E "curl|wget" если нет пакетов то делаем apt-get update. Запихать скрипт определения того, есть пакеты curl или wget в системе в аттрибуты unless или onlyif ресурса exec{'apt-get update':}
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
Например
        exec {'apt-get update':
           command     => 'apt-get update',
           path        => ['/usr/bin', '/bin'],
           unless     => "dpkg -s ${package_name}",
           before      => Package[$package_name]
       }
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
для твоего кейса
       exec {'apt-get update':
           command     => 'apt-get update',
           path        => ['/usr/bin', '/bin'],
           unless      => "dpkg -s wget && dpkg -s curl",
           before      => Package['wget', 'curl']
       }
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
На баше смогу что угодно накатать, но это ж типа паппет и я думад, что он должен давать доп плюшки.

Для тебя возможно apt-get update делать часто нормально, а мне каждый килобайт хочется экономить ибо IoT, on edge и вот это всё.
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
Выглядит ужасно :)
А можно список скармливать и по нему проходиться?
Типа
base_packages = [ package1, package 2, packageN ]
А потом уже по $base_packages это всё реализовать?
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
И можно же списки делать вместо
[ app1, app2, appN]

- app1
- app2
- appN

?
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
можно
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
Извините за нубские вопросы :)
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
unless => "dpkg -s $base_package" тоже сработает или как туда && передать?
источник

A

Andor in Puppet — русскоговорящее сообщество
$packages.each ...
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
unless это shell, надо сформировать команду и передать туда
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
например
    $packages = ['wget', 'curl']
   $check_packages = $packages.map|$p| {"dpkg -s ${p}"}.join(' && ')

   exec { 'apt-get update':
     command => 'apt-get update',
     path    => ['/usr/bin', '/bin'],
     unless  => $check_packages,
     before  => Package[$packages]
   }
   
   ensure_packages($packages, {
       ensure => 'present'
   })
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
в $check_packages формируется строка dpkg -s wget && dpkg -s curl
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
Ну или вместо before в ensure_packages  указать require, если так удобней
```
    ensure_packages($packages, {
       ensure => 'present',
       require => Exec['apt-get update'],
   })
```
источник