• Как правильно использовать Puppet?

    ptchol
    @ptchol
    Linux system administrator
    С "оркестрейшеном" у puppet все плохо.
    Был puppet-kick, но его выпилили, теперь есть mcollective, который позволит вам дернуть агента на всех нодах и применить конфигурацию. Но имхо это из пушки по воробьям.
    Мы по прежнему по старинке, через pssh дергаем на нужной группе нод 'puppet agent -t'.
    Применить конфиг на отдельном сервере, из коробки я думаю врядли получится. Нужно придумать что то свое :).
    Ну или конечно же, Вы всегда можете нагородить
    if $::fqdn in $testing_nginx_servers {
        $config = new_config
      else {
        $config = stable_config
      }
      ::nginx::vhost { 'server.com' :
        template      => $config
        server_name   => "${::fqdn} ${title}",
        document_root => '/var/www/server.com',
        ssl_keys      => 'server.com'
      }

    А где нить в site.pp объявить
    $testing_nginx_servers = [ 'web-1.server.com', 'web-2.server.com' ]


    В конце концов вы можете раскатывать конфиг, но не релоадить nginx :).

    На тему ansible vs puppet. Субъективно, ansible, массовый раннер скриптов :). К тому же на состояние полугодовалой давности довольно тормозной.

    Puppet подразумевает, что накатка изменений, не влияет критично на Ваше окружение, и может происходить в фоне. Тоесть для ряда пакетов Вы написали 'ensure => latest', и не паритесь, обновляется оно сам по себе когда нада +\- 30 минут и всё. Внесли изменения в конфигу, проверили на одном серваке, и уверенны что через полчаса это будет везде. Сейчас скажу глупость, но о "схеме" его работы можно сказать что он "согласован в конечном счете", и этот "конечный счет" определяется получасовым таймаутом обновления (как в DNS :) )

    Может быть уже неактуально, но вот здесь человек сравнивал ansible \ salt в качестве альтернатив для переезда.

    Если привлекает YAML в puppet есть hiera, для экспорта ресурсов с нод, есть puppetdb (к примеру что бы при добавлении backend серверов, их адреса попали в необходимый upstream у nginx, без прямого прописывания их в конфиге).

    Если напрягает что нету всяких "циклов", то это решается во первых при помощи define, или в свежем синтаксисе есть each / slise / reduce / filter, который позволяет удобно работать с со всякими списками параметров, плюс очень много чего полезного реализовано в stdlib.

    Puppet декларативен, и если вы не хотите мирится с отсутствием возможностей перезаписать переменную / параметры ресурса / класса, то Вам будет сложно с ним, иначе не вижу ничего плохого в этом выборе.
    Ответ написан
    2 комментария