main

Управление конфигурациями

«Разрешите говорить откровенно! Мне не нравится эта экс'педиция! Мне не нравятся эти мат'росы! И воо'пще! Мне воо'пще ничего не нравится, сэр!»

Второй подход к снаряду. Сейчас появился и тестовый полигон и нежелание лазить на сервера руками, поэтому решил посмотреть, что у нас появилось за 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 генерируется имя ключа, если клиенты гуляют по подсети - получается адъ.
  • Хотелось бы вебморду для сервера, при таком-то потреблении ресурсов.

  1. Хотя, стоит признать, одну хаскелевскую софтину я таки использую. Но это уже другая история. ↩