LINUX.ORG.RU

Puppet: установка пакетов с предварительной загрузкой

 ,


0

3

Добрый день.

Не сталкивался ли кто с необходимостью заставить puppet скачать все необходимые deb пакеты перед установкой софта?

Суть проблемы: Есть ~300 компьютеров под управлением debian, конфигурируемые через puppet. Все устраивает окромя обновления софта. Почти все клиентские ПК выходят на связь через gprs модемы, что согласитесь не сильно быстро. Так вот, из репозитория обновляется собственный софт который состоит примерно из 30 пакетов (демон и плагины к нему).

Во время обновления puppet скачивает один deb пакет, устанавливает его, скачивает следующий, устанавливает и так далее. Пока все пакеты установятся софт, будем говорит, не в рабочем состоянии. Так вот как только устанавливается демон, софт пекращает работу, и пока закачиваются плагины, пользователи начинают нажимать кто power, кто reset, короче не дают системе нормально отработать.

Если же закачать все пакеты сразу (например через aptitude) и установить одной пачкой, поользователи даже не замечают, что что-то произошло и не нажимают лишних кнопок :)

Подитожу: Хочу заставить puppet сначала скачать все deb пакеты и только после того как он все скачал установить все одной пачкой. Как?


Паппет не щупал, но решение в лоб - на каждом клиенте локальный миррор своих пакетов и синхронизовать его периодически, ставить собсно из него же.

blind_oracle ★★★★★ ()

Не делал такое но видится как-то так:

exec { 'apt-update':
  command => 'apt-get update && apt-get --download-only upgrade',
}
......

package { 'mypackage':
  ensure  => 'latest',
  require => Exec['apt-update'],
}
WhiteWolf ()

можно сначала rsync *.deb, а потом, если что-то новое прилетело, запускать уже установку того что прилетело

zed_0xff ()
Ответ на: комментарий от WhiteWolf

Если другого варианта не найду буду делать нечто такое. Правда хотелось делать как-нить более красиво, хотя бы исходя из того, что пакетов много получится длинная строка типа

apt-get --download-only upgrade package1 package2 package3 package4 package5 package6 package7...
А не указывать - не вариант, как я уже писал связь через gprs и тянуть все обновления будет долго и дорого ;)

YP977 ()

Решено: Puppet: установка пакетов с предварительной загрузкой

Похоже, что разобрался как это все должно выглядеть.

Часть файла:

....

    $base_packages = [
        "openssh-client",
        "sudo",
        "openvpn",
        "openssl",
        "openbox",
        "xorg",
        "xterm",
        "ppp",
        "molly-guard",
        "flow-tools",
        "lsb-release",
        "vim",
        "mc",
        "ntp",
        "slim",
        "fprobe",
        "openssh-server",
        "monit",
        "screen",
        "libqca2",
    ]

    package { 'base_packages':
        ensure => present,
        name => $base_packages,
        responsefile => '/var/local/preseed/all.preseed',
        require =>
        [
            Class['software::addrepos'],
            File['preseed-dir'],
        ],
    }

....

Раньше было так:

....

    package { $base_packages:
        ensure => present,
        responsefile => '/var/local/preseed/all.preseed',
        require =>
        [
            Class['software::addrepos'],
            File['preseed-dir'],
        ],
    }

....

В двух словах: перенес массив пакетов из определения package в атрибут name. В итого получилась обработка всех пакетов одной пачкой.

 
Start-Date: 2014-07-28  15:49:52
Commandline: /usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install openssh-client sudo openvpn openssl openbox xorg xterm ppp molly-guard flow-tools lsb-release vim mc ntp slim fprobe openssh-server monit screen libqca2
Install: libqca2:i386 (2.0.3-4), monit:i386 (5.4-2)
Upgrade: openssh-client:i386 (6.0p1-4+deb7u1, 6.0p1-4+deb7u2), openssl:i386 (1.0.1e-2+deb7u7, 1.0.1e-2+deb7u11), openssh-server:i386 (6.0p1-4+deb7u1, 6.0p1-4+deb7u2)
End-Date: 2014-07-28  15:49:54

До этого каждый пакет устанавливался отдельно.

YP977 ()
Ответ на: комментарий от WhiteWolf

exec не комильфо, но я тоже ничего лучше не вижу

dyasny ★★★★★ ()
Ответ на: комментарий от dyasny

ну, мне решение автора больше понравилось - перечислить все пакеты в одном ресурсе package. В этом случае, реально, exec не нужен =)

WhiteWolf ()
Ответ на: комментарий от WhiteWolf

мне тоже, я когда писал, не докрутил до ответа

dyasny ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.