Назад | Перейти на главную страницу

Каков рекомендуемый макет каталога марионеточного сервера?

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

Пока у меня есть:

puppet/
   + manifests/
      + site.pp  
      + nodes/
          + production/
              + nodes.pp
          + dev/
              + nodes.pp
   + modules/

Я просто немного застрял после этого :)

Поэтому я думаю, что хочу разделить это на роли сервера, такие как «веб-сервер», у которого есть такие службы, как «httpd» или «nginx».

Какой лучший способ изложить все это, так как это сводит меня с ума, что, похоже, нет предпочтительного метода для этого, или, может быть, я просто пропустил его во всей другой информации :(

Вот как бы вы структурировали каталоги?

puppet/
   + manifests/
      + site.pp  
      + nodes/
          + production/
              + nodes.pp (Nodes have roles)
          + dev/
              + nodes.pp
       + roles/
           + web-server-apache.pp (Roles have modules)
   + modules/
       + web-server-apache/
           + manifests/
               + init.pp (This is where "httpd" gets defined and installs latest httpd)
           + templates/
           + files/

Я предлагаю использовать IDE, такую ​​как Geppeto, для управления модулями в соответствии с Руководством по стилю модулей Puppet. Джеппетто создаст необходимые файлы и структуру каталогов.

Да, стандартная структура каталогов выглядит так - какие варианты этой структуры вы видите?

Каждый из ваших сервисов (httpd, nginx) должен обрабатываться модулями внутри modules каталог, а прикрепление этих модулей к узлам для включения в их каталог конфигурации будет происходить в пределах manifests.

Как вы хотите определить свои роли? Обычно это должно быть сделано в определениях ваших узлов, независимо от того, является ли это nodes.pp файл в каталоге манифестов, который загружается site.ppили вместо этого используйте Hiera для ваших определений узлов (что я определенно рекомендую, если вы готовы).

Поэтому я думаю, что хочу разделить это на роли сервера, такие как «веб-сервер», у которого есть такие службы, как «httpd» или «nginx».

Я думаю, вы спрашиваете, можете ли вы организовать свои модули в виде дерева в файловой системе. По большей части люди этого не делают. Они просто помещают множество модулей в каталог модулей и дают им красивые описательные метки / имена.

Полезно создать небольшую структуру для конкретного модуля. Например, у вас может быть role модуль, вы можете создать такой класс, как role :: webserverwhich includes in modules that configure particular services. But ifrole :: webserver` просто включает классы, вы можете применить то же самое в определении вашего узла, вашем коде или hiera.

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

Итак, мое предложение: откажитесь от идеи дерева и примите тот факт, что у вас будет большой каталог модулей плоского каталога.