Управление конфигурациями
«Разрешите говорить откровенно! Мне не нравится эта экс'педиция! Мне не нравятся эти мат'росы! И воо'пще! Мне воо'пще ничего не нравится, сэр!»
Второй подход к снаряду. Сейчас появился и тестовый полигон и нежелание лазить на сервера руками, поэтому решил посмотреть, что у нас появилось за 2 года с момента прошлой попытки.
Что у нас есть
В принципе, расклад остался практически тот же.
- puppet -- +вебморда, -ruby
- chef -- -ruby
В принципе возражения те же. Я не хочу тащить на сервер ещё один жручий интерпретатор, со своей инфраструктурой. Хватит с меня питона.
cfengine
На этом остановимся поподробнее. Судя по оффсайту - круче только яйца Чака Норриса. Но, стоит приглядеться поближе и отбросить пафос - в сухом остатке имеем ещё один нескучный dsl и принудительный декларативный стиль. При попытке применения к реальной задаче, красивая концепция
rule:
hosts::
/etc/ntp.conf
perms => 0644
owner => root
рассыпается на уродливое
control:
any::
ntp_config_dest = ( /etc/ntp.conf )
role_ntp_client::
ntp_config_src = ( ${masterfiles}/conf/ntp/client/ntp.conf )
ntp_step_ticker = ( ${masterfiles}/conf/ntp/client/step-tickers )
copy:
any::
${ntp_config_src} dest=${ntp_config_dest}
mode=0444 backup=false type=checksum
server=${policyhost}
define=restart_ntpd
redhat::
${ntp_step_ticker} dest=/etc/ntp/step-tickers
mode=0444 backup=false type=checksum
server=${policyhost}
directories:
any::
/var/lib/ntp owner=ntp group=ntp mode=0755
files:
any::
/var/lib/ntp/drift owner=ntp group=ntp mode=0644 r=0
processes:
redhat::
# restart ntpd if not found running
"ntpd" restart "/sbin/service ntpd restart"
shellcommands:
redhat.restart_ntpd::
# handler for restarts
"/sbin/service ntpd restart >/dev/null 2>&1" useshell=true
redhat::
# ensure ntpd runs at startup
"/sbin/chkconfig ntpd on" ifelapsed=179
Взято отсюда.
Если ещё проще: вместо простого запуска команды вы будете сначала думать, как втиснуть в прокрустово ложе вашей конфигурации и как разобрать её по всем этим селекторам.
Напоминает ЛОРовских лисперов и хаскелистов. "ЛИСП ВСЕХ ПАРВЁТ" и мизер прикладного софта в репозиториях в итоге.1
С другой стороны, надо признать и достоинства:
- шифрование ipc
- pull
- c
salt
Два года назад я её либо не нашёл, либо она ещё не была дописана. К сожалению - питон, но это уже практически неизбежное зло.
Из достоинств:
- remote exec с достаточно высокой оперативностью
- Опять же, декларативный стиль, но!
- определяется он достаточно свободно и
...в yaml
Не нужны дополнительные настройки фаервола на клиенте. Вообще. Сабж открывает и держит tcp-сокет, переподключаясь при необходимости.
- Поддержка conf.d как для агента, так и для сервера.
- fileserve
- Шифрование
- ...и прочие плюшки, всё как в лучших домах.
Ну и из недостатков:
- Питон, блжад! :'-( 160 метров вирт памяти на дефолтного агента. Всякие VPS пролетают со свистом. Школьные машинки тоже.
- Зависимость от dns. На основе rdns генерируется имя ключа, если клиенты гуляют по подсети - получается адъ.
- Хотелось бы вебморду для сервера, при таком-то потреблении ресурсов.
Хотя, стоит признать, одну хаскелевскую софтину я таки использую. Но это уже другая история. ↩