Женская футболка с надписью
"Привлекательная сотрудница"
Пояс из сабачьей шерсти.
Добавить текст
Артикул: 154478 Товар серцифицирован Российской федерацией
Дата публикации: 08.01.2014 00:00
Пояс из сабачьей шерсти.
Выполняем изменение При выполнении этой команды вы увидите вывод, похожий на указанный выше. Прочитав его внимательно, вы увидите, что Puppet применил конфигурацию, а затем незамедлительно завершился — никаких изменений не было сделано! Это неудивительно, так как никакой конфигурации для этого компьютера мы еще не описали. Покажем, как это делается. RAL С Puppet нужно описывать желаемую конфигурацию компьютера на языке абстракции ресурсов (Resource Abstraction Language — RAL). Это особый язык Puppet (специальный для данной области) для программирования конфигурации компьютеров. Чтобы получить представление о том, на что похож RAL, можно интерактивно просмотреть текущую конфигурацию компьютера: puppet resource user Запустите эту команду, и вы увидите описание всех пользователей компьютера. Каждому пользователю отведен отдельный блок кода, который начинается с типа ресурса и фигурной скобки, затем следует название блока (до двоеточия), затем блок закрывается еще одной фигурной скобкой. Внутри каждого блока информация о каждом пользователе описывается парами «свойство » => «значение », разделенными запятыми. Хотя команда resource просто показывает состояние текущей системы, описание на RAL для каждого ресурса точно такое же, как для изменения текущей системы. Давайте зададим ресурс сами, выполнив команду puppet resource user lxf --edit. Откроется редактор с почти пустым описанием типа ресурса пользователя — оно содержит только ensure => absent, поскольку пользователя lxf еще нет в нашей системе! Чтобы создать пользователя, можно просто отредактировать открывшийся файл. Сделайте его таким: user { ‘lxf’: ensure => ‘present’, password => ‘0neDOO10G$dMgbLXlOLvlr30YuTqnap1’, shell => ‘/bin/bash’, } Это простое определение ресурса гарантирует, что в наших системах будет создан пользователь lxf, его пароль будет установлен в заданную свертку, а его оболочкой для входа в систему будет Bash. Заметьте, что пароль мы указали уже в зашифрованном формате. Чтобы зашифровать пароль, примените, например, программу openssl: openssl passwd -1 Сохранив файл и закрыв редактор, вы увидите, что Puppet применяет новую конфигурацию к вашей системе. Если теперь запустить id lxf, вы должны увидеть, что пользователь создан, и для пользователей заполнены некоторые другие параметры, включая идентификатор группы, идентификатор пользователя, домашний каталог и т. д. Язык описания ресурсов в Puppet богат: для каждого типа доступны множество различных типов и атрибутов. Разумеется, мы на нашем уроке не сумеем рассказать обо всех, но взгляните на подробную справку по всем доступным типам — http://docs.puppetlabs.com/references/latest/type.html. Вообще- то, если у вас появятся любые вопросы о том, что можно сделать с Puppet и как это сделать, указанная статья почти всегда будет вашей первой стартовой точкой, поэтому добавьте ее в закладки. Несколько ресурсов Ну вот, это было небольшое введение в RAL. Теперь пора показать, как быстро задать несколько ресурсов для одной системы. При написании конфигураций Puppet все определения ресурсов помещаются в манифесты — файлы с расширением .pp. Если создать файл .pp и добавить в него определения ресурсов, то затем можно применить все эти изменения в Puppet командой puppet apply <manifest>. Например, можно создать нового пользователя с его домашним каталогом и поместить в него один файл в одном манифесте. Добавьте следующее описание в файл lxf-user.pp: user { ‘lxf’: ensure => ‘present’, password => ‘0neDOO10G$dMgbLXlOLvlr30YuTqnap1’, shell => ‘/bin/bash’, managehome => ‘true’, } file { ‘/home/lxf/hello’: ensure => ‘present’, require => User[‘lxf’], } Затем выполните команду puppet apply lxf-user.pp, и новая конфигурация будет применена. Здесь мы добавили к определению пользователя атрибут managehome, который — как вы увидите, заглянув в справку по типам — означает, что нужно автоматически создать новый каталог для пользователя. Мы также указали файл, который нужно создать в домашнем каталоге. Обратите внимание, что оба ресурса были заданы отдельно; в каждом указан тип ресурса, его название и несколько атрибутов. Теперь все это вам довольно хорошо знакомо, но есть еще один очень важный атрибут, который мы указали — require. Порядок операций в Puppet Puppet не обращает внимание на порядок ресурсов, задаваемых в манифестах. Так, в нашем примере выше, в котором мы сначала создали пользователя, а потом файл, нет гарантии, что Puppet будет создавать ресурсы именно в этом порядке. Иногда это несущественно, но иногда, как в нашем примере, создает проблемы.Название файла ресурса означает, что файл должен быть создан в /home/lxf, но каталога /home/lxf в природе не будет, пока Puppet не создаст пользователя lxf. А что произойдет при попытке создать файл в каталоге, которого не существует? Крах операции; а заодно и запуска Puppet. Чтобы это обойти, в Puppet есть набор метапараметров (параметры, приложимые к любому типу) для явного указания порядка обработки ресурсов. Два из них — require и before. Каждый определяет простое отношение зависимости между двумя ресурсами, причем первый означает «применить этот ресурс после указанного », а второй — «применить этот ресурс перед указанным ». Довольно просто, правда? Чтобы сослаться на ресурс, к которому применяется отношение, мы указываем тип ресурса, за котором следует название экземпляра нужного ресурса в квадратных скобках, например: User[‘lxf’]. Обратите внимание, что здесь название типа указывается с большой буквы, а при определении нового ресурса — с маленькой. Повелитель кукол В этой статье мы повсюду описывали архитектуру Puppet как клиент– серверную, но пока при применении изменений командой puppet apply пропускали сервер. Даже после того, как вы написали указанные выше манифесты и сами запустили puppet agent --test, Puppet не применит никаких изменений. Как исправить это и заставить- таки сервер работать? Существует один специальный манифест, который сервер Puppet считывает при каждом подключении к нему клиента, запрашивающего конфигурацию: site.pp. Наряду с обычными определениями ресурсов Puppet, site.pp также может содержать еще один тип ресурсов, который нам пока не встречался — определение узла: node ‘localhost’ { ... <наш прежний манифест> ... } Когда узел "localhost” свяжется с сервером Puppet, тот прочтет манифест site.pp, найдет определение узла, соответствующее имени хоста клиента, и скомпилирует и распространит соответствующий манифест. По умолчанию этот манифест находится в каталоге /etc/puppet/manifests/. Поэтому если вы пойдете дальше и создадите файл site.pp и затем выполните команду puppet agent --test, вы увидите, что манифест применен корректно. Модули Одна из ключевых идей, лежащих в основе Puppet — и любой системы управления конфигурацией — в том, чтобы сделать настройку и поддержку компьютеров похожими на разработку кода. У такого подхода, очевидно, масса преимуществ; о некоторых мы говорили вначале, но одно пока подробно не рассмотрено, и это идея абстракции. У всех создаваемых web-серверов, даже если на них разворачиваются разные программы, обычно одна и та же базовая конфигурация. Например, в каждой системе, независимо от их количества, нужно установить web-сервер Apache и стандартный набор правил Iptables и NTP и добавить несколько пользователей. Этот набор требований представляет собой абстрактное определение web-сервера, который мы сделаем более конкретным, развернув на нем какое-нибудь конкретное web-приложение, например, Drupal. В примерах Puppet, приведенных на нашем уроке — и в частности, в созданном нами файле site.pp — создание множества различных web-серверов с одной и той же базовой конфигурацией привело бы к множественному дублированию кода Puppet, так как для каждого типа web-сервера пришлось бы повторять абстрактное базовое определение, описанное выше. Чтобы это обойти, код в Puppet можно группировать в классы и модули, а потом повторно использовать их для «составления » систем. К сожалению, мы не успеваем рассказать об этом на нашем уроке, но модули и классы — основа использования Puppet в реальных системах, и мы советуем вам уделить этому некоторое время, прежде чем двигаться дальше. | «Puppet делает настройку похожей на разработку кода. »