Size: a a a

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

2021 April 09

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
ну PR этот чувак принимает. Поэтому вперед. В целом не так много модулей поддерживают нормальое удаление своих ресурсов
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
О, спасибо. Сертификат я изначально сгенерировал указывая сервер и подумал, что он сервер уже и добавил в какой-то свой конфиг, ан нет, нужно руками создать ещё. Теперь появилось :)
источник
2021 April 13

A

Asdqwert in Puppet — русскоговорящее сообщество
Всем привет.

У меня есть класс в модуле нижеследующего содержания и по логам вижу, то нода рапортует о changed каждый раз, т.е. насколько я понимаю, делает apt-get update каждые 10 минут.

Как реализовать этот apt-get update только 1 раз при установке пакетов?

$ cat environments/production/manifests/site.pp
class apt_base::install {
 exec { 'apt-update':
   command => '/usr/bin/apt-get update'
 }

 $base_packages = ['curl','wget']

 package { $base_packages:
     ensure => present,
     require => Exec['apt-update']
 }
}

$ cat environments/production/modules/apt_base/manifests/install.pp:
node 'node01' {
 include apt_base::install
}
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
источник

A

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

A

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

A

Andor in Puppet — русскоговорящее сообщество
проблема в том что у тебя exec выполняется всегда
источник

A

Andor in Puppet — русскоговорящее сообщество
у тебя нет ни unless ни refreshonly ни других опций
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
Спасибо.
Добавление такого refreshonly будет достаточно или всё не так просто?
class apt_base::install {
 exec { 'apt-update':
   command => '/usr/bin/apt-get update',
   refreshonly => true
 }

 $base_packages = ['curl','wget']

 package { $base_packages:
     ensure => present,
     require => Exec['apt-update']
 }
}
источник

A

Andor in Puppet — русскоговорящее сообщество
нет, так оно наоборот не будет запускаться никогда
источник

A

Andor in Puppet — русскоговорящее сообщество
кроме случаев когда придёт нотификация, но у тебя её нет
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
Не затруднит написать как именно мне это реализовать в этом примере?
источник

A

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

VL

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

A

Asdqwert in Puppet — русскоговорящее сообщество
Спасибо, поразбираюсь
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
Т.е. если использовать apt модуль puppetlabs, то это вот так будет выглядеть или оно не так работает или туда нельзя список скармливать и надо как-то ещё?
class apt_base::install {
 $base_packages = ['curl','wget']
 Class['apt::update'] -> $base_packages <| provider == 'apt' |>
}
источник

A

Asdqwert in Puppet — русскоговорящее сообщество
И в манифест для ноды нужно будет что-то дополнительно добавлять или будет достаточно того, что я уже добавил свой модуль?
node 'node01' {
 include apt_base::install
}
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
Не уверен что Class['apt::update'] -> Package['package-name'] вызовит apt-get update
Что-то вроде Class['repo'] ~> Class['apt::update'] обычно деалют.
Для базовых пакетов, которые итак уже есть в репах, у меня такой костыль:
exec {'base_apt_update': 
   command => 'apt-get update',
   path => ['/bin', '/sbin', '/usr/bin', '/usr/sbin'],
   onlyif => '[ "`find /var/lib/apt/lists -maxdepth 0 -type d -mmin +60`" = "/var/lib/apt/lists" ]'
}

Делает apt-get update если его не было больше часа назад (-mmin +60 - крутилка)
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
$base_packages <| provider == 'apt' |> - некорректный синтаксис. Коллекторы имеют синтакис ResourceType <| expression |>
источник

DS

Dmitry Sergeev in Puppet — русскоговорящее сообщество
Хотя вижу в forge модулях много кто так делает https://github.com/elastic/puppet-elasticsearch/blob/master/manifests/package.pp#L157
https://github.com/voxpupuli/puppet-nginx/blob/master/manifests/package/debian.pp#L23
Но я чет не понимаю, как объявление, что Package['blabla'] требует класс Class['apt::update'] может вызвать exec с refreshonly из класса apt::update
Ведь Package['blablal'] -> Class['apt::update'], равночильно
pacakge {'blabla':
   ....
  require => Class['apt::update']
}
никаких уведомлений exec не получит.
источник