LINUX.ORG.RU
ФорумAdmin

[Gentoo] Что заюзать для централизированного управления компами с Gentoo? Есть живые аналоги GEMS? Если таковых нет - может, напишем инструмент (подробности в теме)?

 


1

8

Когда-то был проект Gentoo Enterprise Management System, но, по всей видимости, он умер.

Всё, что нахожу - это или морально устаревшие документы 2003 года, или наборы костыльных скриптов, которые или старые, или слишком узконаправленные (читать «много хардкода»).

Наткнулся на интересную переписку по этой теме (всем заинтересованным читать, там немало интересных вещей, ИМХО).

Мне хотелось бы заполучить в руки инструмент для удобного управления не одним десятков серверов под управлением Gentoo, чтобы не распылятся на рутину, но в тоже время не терять гибкости Gentoo для каждой отдельной инсталляции.

Каким я себе представляю этот интструмент:
Пршу прощения за сумбурное изложение, но пока это не полноценное ТЗ

  • Web-интерфейс / консольный клиент
  • Наличие клиентских агентов или управление через SSH, логинимся под учёткой специального пользователя, для которого настроен sudo (за логин под рутом надо отстреливать яйца)
  • Отчёты по e-mail/RSS(Atom) об доступных обновлениях (что-то вроде вывода emerge -pvuDN world)
  • Конфигурирование на клиентах периодического обновления Portage (через крон eix-update?)
  • Важный пункт: опциональная настройка distcc с кросс-компилированием. Поскольку такой проект затребован, только когда серверов становится больше 3-10, то почему бы не использовать ресурсы простаивающих серверов (или на которых небольшая нагрузка)? Можно обратить внимание на перечисленные снизу проекты. Для Ъ:
    • ccache - caches compiler output to accelerate builds.
    • dmucs - helps distcc select appropriate servers.
    • ccontrol - gives centralized control of parallelism, caching and distribution even while the build is running.
    • crosstool - automates building cross-compilation toolchains.
    • distccWebView - is a CGI to show which of your servers are up and running.
    • tcpbalance - is a load-balancing TCP proxy written in Erlang that works well with distcc.
    В этом же пункте должна быть возможность легкой настройки пула компьютеров, предоставляющих distcc, с возможностью отключения отдельных нод, указания временного промежутка, когда нода может предоставлять сервис, и т.д. Этот пункт нужно отдельно обсудить.
  • Управление USE-флагами, с возможностью добавления комментариев к каждому флагу. При >10 инсталляций Gentoo проблематично помнить, почему был поставлен тот или иной флаг на конкретном сервере. Именно, не что он собой представляет, а зачем его поставили, какая мотивация была.
  • Удобный интерфейс для доступа к спискам замаскированных/размаскированных пакетов, установки глобальных и локальных USE-флагов, управления принятыми лицензиями (package.license), вывода списка хостов, у которых (не)совпадают маскировки/USE-флаги указанных пакетов. Опять же - опциональные комментарии к каждой или к группе записей.
  • Интерфейс к etc-update/dispatch-conf. Причём, если на одном хосте уже были одобрены изменения, то на другом хосте идентичные изменения помечаются в интерфейсе, что позволит сократить время на апдейт множества серверов, и даже написать утилиты множественного апдейта, когда специально помеченные изменения на одном хосте автоматом примутся на остальных при условии их идентичности.

Язык можно обговорить отдельно.

Здесь есть немало гентушников. Очень хотелось услышать мнение каждого из вас.

//Какого хрена я не могу отредактировать тему?

Добавлю ещё:

  • Интерфейс для настройки prelink
Chaser_Andrey ★★★★★
() автор топика

забукмаркил

посмотри калькулятор, они вроде как работали на эту тему, но, имхо, цельного такого продукта врядли найти, зато на bash можно за недельку сваять.

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

идея смотрится неплохо.
Хотя с моей точки зрения лучше использовать какую нибудь уже известную и расширяемую систему. И уже на её основе, что то городить.
P.S. Calculator Linux более приспособлен к централизованной аутентификации и стабильности обновлений(путём создании stage4 и накату на отдельный раздел), чем к корпоративной управляемости компьютерами с учётом gentoo-отличий.

Atlant ★★★★★
()

а самому написать? это ж не особо сложно, я думаю

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

а с какой целью? Зачем компилировать на каждом хосте, если можно собрать нужный пакет, которого нет в репах того же дебиана и раскидать его через приватный репозитарий?

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

Затем, что:

1. Разные архитектуры. В /etc/make.conf в параметре CFLAGS указывается опция "-march", которая у разных хостов будет разная. А если бы я захотел компилировать совместимое под все платформы, то мне проще было бы выбрать бинарный дистрибутив или Calculate.

2. USE-флаги могут отличаться на разных хостах.

3. Могут отличаться версии системных библиотек. Отслеживать ABI-совместимость и прописывать зависимости для каждого пакета пока слишком трудно.

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

2. USE-флаги могут отличаться на разных хостах.

вы подобный ззопарк замучаетесь отслеживать и поддерживать. Все должно быть единообразно.

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

1. В общем и целом по моим бенчмаркам это глубоко пофиг. Разница в производительности в пределах 10%, и это очень максимум. И зачем держать такой зоопарк разных процессоров? Изначально плохая архитектура.

2. Ну, можно собрать несколько вариантов пакетов, обозвав их там по разному, всё равно легче.

3. Зачем они будут отличаться? Не лучше ли единообразно всё?

blind_oracle ★★★★★
()

По моему опыту, многие пакеты на однотипных серверах имеют схожие USE-флаги, так что, можно делать центральное хранилище тарболлов и пересобирать только те немногие пакеты, которые имеют различные 1-2 флага.

Но у вас ещё и архитектуры разные — это похуже, но ненамного: сделайте разные хранилища для разных архитектур. Надеюсь, у вас их две-три, максимум.

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

Сделал приватный реп. Как по-быстрому можно подписать пакеты? :) Чтоб оно не ругалось, что не аутонтифицированное барахло я ставлю. :)

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

Puppet?

Поддерживаю. Единственно отличие от сабжа - способ доступа. Доступ по отдельному порту: 8140/tcp. Причём не с сервера на клиент, а наоборот с клиента на сервер. Клиенты подключаются и запрашивают манифест - описание конфигурации. Соединение защищено ssl, центр сертификации - сам сервер с puppet. Без клиентского сертификата можно только запросить/получить свой сертификат, но не манифест.

ЗЫ. Кроме puppet есть ещё cfengine ( старший из подобных проектов, ЕМНИП) и chef ( форк от puppet, с преферанском и секретаршами)

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

Кстати, у puppet для редактирования конфига есть офигенная фишка - augeas.

Можно тупо копировать конфиг с сервера как статичный файл, puppet будет его поддерживать в этом статичном состоянии, откатывая все изменения.

А можно использовать augeas. В результате puppet будет поддерживать в неизменном состоянии только заданные параметры, остальной файл можно править и изменения не будут перезаписаны.

        augeas{'ssh_config':
                context => '/files/etc/ssh/sshd_config',
                changes => [
                        "set Protocol 2",
                        "set PermitRootLogin no",
                ],
                notify  => Exec['sshd-restart']
        }
        exec{'sshd-restart':
                path    => ['/bin', '/usr/bin', '/sbin', '/usr/sbin'],
                command => 'service sshd restart',
                refreshonly     => true
        }
router ★★★★★
()
Ответ на: комментарий от blind_oracle

Сделал пакет через dpkg-build, создал простейший репозитарий . Раздаю пакеты через http. Дистрибутив ubuntu 10.04. Имеется парк из 20ти машин. Пока я говорю apt-get -y --force-yes всем клиентам через cron job.

Создавал примерно вот так: http://mediakey.dk/~cc/howto-create-your-own-debian-or-ubuntu-package-reposit...

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

Всё понятно, кроме вот этого: Publish the key fingerprint, that way your users will know what key they need to import in order to authenticate the files in the archive.

Где взять этот публичный отпечаток? И как сделать чтоб он не истекал на клиентах.

Пасибо. :)

DALDON ★★★★★
()

подписался на тему. А вообще люди в нашей конторе планируется написание политик для cfengine. Но как с этим дело пойдет и сколько времени займет на обкатку и тестирование - хз

Pinkbyte ★★★★★
()

естественно нам нужно не всё из вышеперечисленного, т.к. оконечные сервера будут снабжаться уже готовыми конфигами и бинарными пакетами, собранными «под сервер». Но кое-что нужно как воздух - система отчетов о прошедших и требуемых обновлениях к примеру...

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

Я когда-то писал отчёты на Perl, оно генерировало симпатичный html-файлик через шаблонизатор, но увы - исходники безвозвратно проср^W утеряны.

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

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

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

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

как...идея годная
но сам лично не смогу потестить на Н машинах
а на домашнем...с сабжем это никак )
если только миллион виртуалок...

megabaks ★★★★
()
21 сентября 2012 г.
Ответ на: комментарий от router

Добавил такую директиву augeas { «zabbix-agent_config»: context => «/etc/zabbix/zabbix_agentd.conf», changes => [ «Server=$ipaddress», «Hostname=$hostname» ] } И получил ошибку: err: Could not find a suitable provider for augeas

Как пофиксить?

itJunkie
()

Идея интересная, можно попробовать что-нибудь намутить

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

В том то и дело, что никак не поставить эту хрень. При компиляции вываливается с ошибкой:

In file included from _augeas.c:23:0: /usr/include/augeas.h:24:25: fatal error: libxml/tree.h: No such file or directory

При этом libxml2 переустанваливал, но всёравно не находит этот чёртов файл.

Может кто знает хотябы куда симлинк на него пихнуть, а то strace не успеваю натравить.

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

Дистрибутив?

При этом libxml2 переустанваливал,

А надо было - libxml2-dev или libxml2-devel

ruby-augeas в виде пакетов есть для большинства репозиториев. В debian в родном репозитории, для rhel/centos/fedora - в EPEL

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

На генту поставил сделав симлинк на катало заголовков.

Возникла другая проблема.

Паппет скачивает файл, вносит правки, а затем почему-то вынимает пустой аналог этого файла из какого-то бэкапа и удаляет таким образом все предыдущие правки =(

info: FileBucket adding {md5}3d4dfffd794aaf82f2cd6a4a2712ebd3 info: /Stage[main]/Zabbix/File[/etc/zabbix/zabbix_agentd.conf]: Filebucketed /etc/zabbix/zabbix_agentd.conf to puppet with sum 3d4dfffd794aaf82f2cd6a4a2712ebd3 notice: /Stage[main]/Zabbix/File[/etc/zabbix/zabbix_agentd.conf]/content: content changed '{md5}3d4dfffd794aaf82f2cd6a4a2712ebd3' to '{md5}064ac2f40061fb7f6aafa3321f1dda65' info: /Stage[main]/Zabbix/File[/etc/zabbix/zabbix_agentd.conf]: Scheduling refresh of Exec[replace Server] notice: /Stage[main]/Zabbix/Exec[replace Server]/returns: executed successfully notice: /Stage[main]/Zabbix/Exec[replace Server]: Triggered 'refresh' from 1 events notice: Finished catalog run in 5.04 seconds

class zabbix {
    package { "zabbix":
        ensure  => installed }
    service { "zabbix-agentd":
        require => Package["zabbix"],
        enable  => true,
        ensure  => running
    }
    file { "/etc/zabbix/zabbix_agentd.conf":
        owner   => zabbix,
        group   => zabbix,
        mode    => 640,
        source  => [ "puppet:///dist/zabbix/zabbix_agentd.conf" ]
    }              # real_path /usr/lib/puppet/dist
    exec { "replace Server":
        command =>  "sed s/^Server.*/Server=nika.zet/g /etc/zabbix/zabbix_agentd.conf > /etc/zabbix/zabbix_agentd.conf",
        subscribe => File["/etc/zabbix/zabbix_agentd.conf"],
        path    => "/bin:"
    }
}

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

Паппет скачивает файл, вносит правки, а затем почему-то вынимает пустой аналог этого файла из какого-то бэкапа и удаляет таким образом все предыдущие правки =(

О каких правках идёт речь?

source => [ «puppet:///dist/zabbix/zabbix_agentd.conf» ]

ты уверен что тебе нужен массив?

source => 'puppet:///dist/zabbix/zabbix_agent.conf',
router ★★★★★
()
Ответ на: комментарий от itJunkie

command => «sed s/^Server.*/Server=nika.zet/g /etc/zabbix/zabbix_agentd.conf > /etc/zabbix/zabbix_agentd.conf»,

epic fail

1) Зачем ты копируешь с сервера файл, чтобы потом прописать в нём статические данные? Храни файл на сервере уже с этими данными.

Если данные должны быть разные для разных хостов, используй шаблоны ( http://docs.puppetlabs.com/guides/templating.html ) или augeas ( http://docs.puppetlabs.com/references/latest/type.html#augeas )

2) этим корявым перенаправлением ты удаляешь содержимое файла

router ★★★★★
()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

Каким «корявым перенаправлением»? Именно в этом и состоял вопрос, а ты ответил на всё кроме этого - самого важного.

Augeas я попытался поюзать, но не смог даже заменить одну строку другой. А хранить все конфиги, если в них нужно сменить всего одну строку, как-то странно. Лучше взять один и менять в нём эту строку для каждого отдельного сервера.

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

Давай продолжим в отдельной теме? Пошёл оффтопик

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

3. Могут отличаться версии системных библиотек. Отслеживать ABI-совместимость и прописывать зависимости для каждого пакета пока слишком трудно.

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

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