Здравствуйте!
Встретился с интересной задачкой:
Имеется 100 серверов FreeBSD с одинаковым железом, одинаковым софтом. Разница лишь в /var/log/* и /etc/rc.confНужно обновить на всех машинах систему. Как это сделать наиболее граматно?
>Нужно обновить на всех машинах систему. Как это сделать наиболее граматно?freebsd‐update?
А зачем?
>А зачем?Вопрос такой задают, при устройстве на работу. Нужно что-то умное отвечать )
>Вопрос такой задают, при устройстве на работу. Нужно что-то умное отвечать )
>еще спрашивают, как установить систему на 100 машин )) или юзера завести )))
Может тебе не надо на эту работу? )) А тут вдальнейшем не надо сотни глупых вопросов ))
>Может тебе не надо на эту работу? )) А тут вдальнейшем не
>надо сотни глупых вопросов ))я просто предположил, что может быть чего-то важного не знаю про обновление системы...
Мне тоже стало любопытно придумали ли БСДшники что-нибудь умное в этом плане, если не уровня RHEL/SLES, так хотя бы просто прокси для пакетов какой-нибудь дабы избежать многократной загрузки и компилирования. Познавательный холиворчик не помешал бы :)
>Мне тоже стало любопытно придумали ли БСДшники что-нибудь умное в этом плане,
>если не уровня RHEL/SLES, так хотя бы просто прокси для пакетов
>какой-нибудь дабы избежать многократной загрузки и компилирования. Познавательный холиворчик не помешал
>бы :)Один уже ответил "А зачем?". Сейчас подтянутся другие и скажут, что это не нужно :D
>Мне тоже стало любопытно придумали ли БСДшники что-нибудь умное в этом плане,
>если не уровня RHEL/SLES, так хотя бы просто прокси для пакетов
>какой-нибудь дабы избежать многократной загрузки и компилирования. Познавательный холиворчик не помешал
>бы :)В BSD как раз все нормально. Можно ченидь придумать.
Тут задача явно не корректно стоит - она сильно упрощена, в реалиях таково не встретить.
Самый (ИМХО) простой вариант обновить один сервак, срезать с него дамп, а потом массово накатить этот дамп на остальные серваки.
А как быть потом с /etc? /usr/local/etc потом можно перезалить, а вот для /etc выполнять пофайловый diff, а потом вручную исправлять?
>А как быть потом с /etc? /usr/local/etc потом можно перезалить, а вот
>для /etc выполнять пофайловый diff, а потом вручную исправлять?1) прочитай условий этой абстрактной задачи
2) предварительно сдампить конкретные файлы и каталоги, а потом вернуть на место вам мешают религиозные убеждения?
>>А как быть потом с /etc? /usr/local/etc потом можно перезалить, а вот
>>для /etc выполнять пофайловый diff, а потом вручную исправлять?
>
>1) прочитай условий этой абстрактной задачи
>2) предварительно сдампить конкретные файлы и каталоги, а потом вернуть на место
>вам мешают религиозные убеждения?Да и дампить-то незачем. Можно и попроще сделать.
1. (как уже было сказано) проапгрейдить 1 тачку.
2. rsync'ом синхронизировать (по SSH - чтоб не крутить rsync демоном) со всеми остальными тачками; а чтоб не перезаписылись нужные файлы - юзать опцию --exclude=PATTERN или --exclude-from=FILE, которой подсунуть список исключаемых файлов (в первом варианте - прямо в команде, во втором - список в файле).Главная проблема - чтоб юзера и группы на всех тачках были одинаковыми (что не гарантированно даже если все сервисы на тачках одинаковы), иначе могут бить проблемы с пермишенами на файлы. Но для этого есть у rsync'а опция --dry-run, которая только покажет, что, собственно, будет выполняться при синхронизации, но не выполняя саму синхронизацию (типа демо-моде). И здесь ведущими собаководами рекомендуются к употреблению опции --verbose --progress для наглядности. Типа посмотрел, убедился что всё пойдёт нормально - синхронизируй.
Удачи.
respect,
ronin
>[оверквотинг удален]
>могут бить проблемы с пермишенами на файлы. Но для этого есть
>у rsync'а опция --dry-run, которая только покажет, что, собственно, будет выполняться
>при синхронизации, но не выполняя саму синхронизацию (типа демо-моде). И здесь
>ведущими собаководами рекомендуются к употреблению опции --verbose --progress для наглядности. Типа
>посмотрел, убедился что всё пойдёт нормально - синхронизируй.
>
>Удачи.
>
>respect,
>roninа как rsycn отнесется к файлам с флагами типа schg ?
>[оверквотинг удален]
>>при синхронизации, но не выполняя саму синхронизацию (типа демо-моде). И здесь
>>ведущими собаководами рекомендуются к употреблению опции --verbose --progress для наглядности. Типа
>>посмотрел, убедился что всё пойдёт нормально - синхронизируй.
>>
>>Удачи.
>>
>>respect,
>>ronin
>
>а как rsycn отнесется к файлам с флагами типа schg ?Есть у него мнооого вкусностей. В том числе и опции --acls (отвечает за списки контроля доступа), --xattrs (отв. за расширенные атрибуты файловых систем).
Вот --xattrs для этого и пригодится. Я юзаю его на линухе для синхронизации файловых систем ext3fs, где используются extended attributes (lsattr/chattr - линуксовые аналоги schg) - расширенные атрибуты сохраняются прекрасно. Думаю, так же должно работать с schg флагами на бзде (сам не проверял).respect,
ronin
>В BSD как раз все нормально. Можно ченидь придумать.Гениальная фраза. Чего-нибудь придумать можно везде, варианты с дампом и rsync посмешили, а нормальных механизмов смотрю нет, БСД как всегда позади планеты всей ;)
>>В BSD как раз все нормально. Можно ченидь придумать.
>
>Гениальная фраза. Чего-нибудь придумать можно везде, варианты с дампом и rsync посмешили,
> а нормальных механизмов смотрю нет, БСД как всегда позади планеты
>всей ;)что иммено подразумеваешь под нормальным механизмом ? )
Ну например такой: если обновление задевает только один установленный пакет/порт, то только этот пакет должен быть один раз загружен из мира, при необходимости один раз скомпилирован и установлен на все машины, которые в нем нуждаются. С задачей в исходном топике конечно справится rsync, но вот для более менее реальной ситуации он не подходит. Неужели никаких вариантов кроме создания полного зеркала или загрузки по сети для фрюхи не придумали?
собирать и использовать пакеты в freeBSD вроде не запрещается :)
>Ну например такой: если обновление задевает только один установленный пакет/порт, то только
>этот пакет должен быть один раз загружен из мира, при необходимости
>один раз скомпилирован и установлен на все машины, которые в нем
>нуждаются. С задачей в исходном топике конечно справится rsync, но вот
>для более менее реальной ситуации он не подходит. Неужели никаких вариантов
>кроме создания полного зеркала или загрузки по сети для фрюхи не
>придумали?Есть и на такой случай один вариант. Кажется, где-то в официальной доке он описівается (тоесть, єто не творчество "шаловливіх ручек"):
Ставится 1 эталонная тачка, с которой по NFS експортируется /usr, /usr/ports, или что Вам необходимо. Ну а дальше, сами понимаете - на эталонной тачке portsnap/portupgarde - и понеслась...
А остальные тачки просто юзают этот экспорт как свой родной. Тоесть, все телодвижения выполняются только 1 раз - на эталонной тачке, но становятся доступными всем тачкам, которые юзают этот экспорт.Но если апгрейд задевает не только приложения/библиотеки, но и кернел, то боюсь простым NFS-sharing'ом не обойтись - придётся-таки на каждой тачке кернел подменять ручками/rsync'ом.
respect,
ronin
>Неужели никаких вариантов кроме создания полного зеркала
>или загрузки по сети для фрюхи не придумали?Angra, вот ты вроде бы умный мужик, а троллишь как [beeep] :(
Вот давай я про Линукс рассуждать начну основываясь на ответах начинающих убунтятников?
(На всякий случай - я с ним с 1994-5, поэтому это просто пример)Судя по вопросу - ожидаемым ответом будет:
На одной тачке (master) обновляем порты, собираем _пакет_ для нужного порта, super_proga-1.1.1.tbz кидается на ftp (анонимам должно быть разрешён даунлоад).
На остальных тачках pkg_add ftp://master.lavka.org/pub/FreeBSD/ports/packages/whatever/s...Есть и другие варианты, но я думаю ожидается именно такой ответ.
>[оверквотинг удален]
>(На всякий случай - я с ним с 1994-5, поэтому это просто
>пример)
>
>Судя по вопросу - ожидаемым ответом будет:
>
>На одной тачке (master) обновляем порты, собираем _пакет_ для нужного порта, super_proga-1.1.1.tbz
>кидается на ftp (анонимам должно быть разрешён даунлоад).
>На остальных тачках pkg_add ftp://master.lavka.org/pub/FreeBSD/ports/packages/whatever/s...
>
>Есть и другие варианты, но я думаю ожидается именно такой ответ.По-моему вряд ли. Быстрей всего имелось в виду что-нибудь типа spacewalk. Или на крайний случай кеширующий репозиторий на nginx. Это для линукса.
>но вот для более менее реальной ситуации он не подходитСподобитесь объяснить, почему?
>Неужели никаких вариантов кроме создания полного зеркала
>или загрузки по сети для фрюхи не придумали?Вам так, потроллить или правда интересно? Если бы было интересно, прочитали бы handbook, тут вам не курсы по FreeBSD. А вообще вариантов огромное количество. Хочешь - поставь tinderbox и одной командой (или через web интерфейс) собери пакеты (включая локальные) сразу подо все используемые у тебя версии FreeBSD и архитектуры, хочешь - просто расшарь packages по NFS/FTP/SMB/whatever, тогда если пакета там нет, он будет качаться и туда класться, либо собираться из портов (как удобнее), после чего остальные машины будут брать его, соответственно, оттуда. Можно и без централизованного хранилища - будет качать с первой машины, на которой кажется собранный пакет, если не найдет - то из сети/собирать. portupgrade умеет все это и много другое.
>Вам так, потроллить или правда интересно?Вроде бы с самого ясно выразился, но смотрю не все заметили, цитирую:
>>Познавательный холиворчик не помешал бы :)И таки действительно получилось познавательно, мне как человеку работавшему с фрей мало и давно, было интересно.
>И таки действительно получилось познавательно, мне как человеку работавшему с фрей мало
>и давно, было интересно.Ну тогда всегда пожалуйста.
>Здравствуйте!
>Встретился с интересной задачкой:
>Имеется 100 серверов FreeBSD с одинаковым железом, одинаковым софтом. Разница лишь в
>/var/log/* и /etc/rc.conf
>
>Нужно обновить на всех машинах систему. Как это сделать наиболее граматно?Привет, вопрос конечно интересный, Вы подразумеваете что то наподобия WSUS в выньдосе ?
>Здравствуйте!
>Встретился с интересной задачкой:
>Имеется 100 серверов FreeBSD с одинаковым железом, одинаковым софтом. Разница лишь в
>/var/log/* и /etc/rc.conf
>
>Нужно обновить на всех машинах систему. Как это сделать наиболее граматно?freebsd-update + portupgrade + pssh
Если заранее озаботиться - то просто собрать новый образ и перезапустить машины.