Статьи

Puppet: концептуальное руководство для начинающих (часть 1)

Кто-то спросил меня, с чего начать изучение кукол. Я указал им на онлайн-документы PuppetLabs для Puppet , которые действительно хороши для правильного понимания.

Но для тех, кто пытается начать с Puppet, эта документация немного длинна для чтения, похожа на книгу.

Я искал несколько блогов, но не нашел никакого контента ( короткого, но достаточно, основ, но пригодного для использования ), который я искал.   Вот что я создал, чтобы заполнить этот пробел …

____________________________________________________

Марионетка

Руководство для начинающих (часть 1)

Что это такое? Когда это требуется?
(для всех новых парней, которые пришли сюда, просто просматривая Интернет) Puppet — это среда автоматизированного управления конфигурацией OpenSource (
что означает инструмент, который знает, как настроить все машины в детерминированное состояние, как только вы предоставите ему необходимый набор манифестов, вытягивая правильный струны ).
Он имеет корпоративный уровень, который продается организацией под названием
PuppetLabs (
http://puppetlabs.com/ ).
Это полезно # 1, когда у вас чертовски много машин, которые необходимо настроить в подобной форме.
Это полезно # 2
  


когда у вас есть инфраструктура, которая требует динамического увеличения и уменьшения компьютеров с заранее определенной (или, по крайней мере, рассчитанной метаданными) конфигурацией.

Это полезно # 3  , чтобы иметь контроль над всеми сконфигурированными машинами, поэтому централизованный (мастер-сервер или репо на основе) изменение получает распространяются на все автоматически.

И больше сценариев подходит по мере необходимости.

_____________________________________


Hello World с Puppet

Установите
Ruby ,
Rubygems на свой компьютер, где вы собираетесь его протестировать.

$ gem install puppet --no-ri --no-rdoc


Загрузите установщики
@Windows   
@MacOSX  ::
& :: 
Docs для установки.

Проверка правильности установки и правильного функционирования …


Теперь ‘
puppet —version ‘ предоставит вам версию установки.

Выполнение ‘
facter ‘ даст вам список основной информации, относящейся к системной среде.

Имейте быстрый запуск кукольного экземпляра. Это создаст каталог ‘/ tmp / pup’, если он не существует. Он создает файл ‘/ tmp / pup / et’ с содержимым ‘look at me’.

{Если вы используете платформу без местоположения ‘/ tmp’. Как и для Windows, измените ‘/ tmp’ на ‘C: /’ или эквивалентный}


$ puppet apply -e "file{'/tmp/pup':
                               ensure => 'directory'}
                             file{ '/tmp/pup/et':
                               ensure => 'present',
                               content => 'look at me',
                               require => File['/tmp/pup']}
                           "

_____________________________________

Глупая структура использования.

Создайте огромный манифест для вашего узла со всеми ресурсами и данными, упомянутыми в нем. Затем непосредственно примените этот файл манифеста вместо
‘-e «abc {….. xyz}»‘ .

Если приведенный выше пример является вашей огромной заповедью конфигурации для узла, скопируйте все это в файл с именем «
mynode.pp ».

Затем примените его так же, как

$ puppet apply mynode.pp

_____________________________________

Как он развивается

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

Модули могут быть созданы в любом дизайне. Обычно это работает, имея разные модули для каждого компонента системы. Чтобы развить различные состояния логической конфигурации для любого данного компонента системы (а также поддерживать его в чистоте), можно выполнить дальнейшую перефакторинг в манифесте модулей, разделив его на разные области.

Вот
пример модуля для «apache httpd» . Для очень простой библиотеки вы можете захотеть структурировать свой модуль следующим образом

  • база каталогов для вашего модуля:  < MODULE_PATH> httpd /
  • каталог в модуле для обслуживания статических файлов: < MODULE_PATH> / httpd / files
  • статический файл конфигурации для httpd:  
    <MODULE_PATH>/httpd/files/myhttpd.conf
    AccessFileName .acl
  • каталог для хранения ваших манифестов в модуле:  
    <MODULE_PATH>/httpd/manifests/
  • Манифест полного решения:  
    <MODULE_PATH>/httpd/manifests/init.pp
    class httpd{
      include httpd::install
      include httpd::config
      include httpd::service
    }
  • манифест, просто устанавливающий httpd:   
    <MODULE_PATH>/httpd/manifests/install.pp
    class httpd::install {  package {'httpd': ensure => 'installed'}
    }
  • манифест, просто настраивающий httpd:  
    <MODULE_PATH>/httpd/manifests/config.pp
    class httpd::config{  file {'/etc/httpd/conf.d/httpd.conf':
        ensure => 'present',
        source => 'puppet:///modules/httpd/myhttpd.conf'
      }
    }
  • манифест, просто обрабатывающий службу httpd: 
    <MODULE_PATH>/httpd/manifests/service.pp
    class httpd::service{
      service{'httpd': ensure => 'running' }
    }

Теперь, используя его

$ puppet apply --modulepath=<MODULE_PATH>  -e "include httpd"

установит, настроит и запустит службу httpd.

  $ puppet apply --modulepath=<MODULE_PATH>  -e "include httpd::install

«

просто установить службу httpd.

Далее … Часть 2 …