Организация ресурсов Chef и расширение поваренных книг: пакет Apache2 + скомпилированный PHP

Я пытаюсь понять, как организовать свою кухню шеф-повара и расширить функциональность поваренных книг сообщества Opscode. Отказ от ответственности: n00b.

ПЛАНИРОВАННЫЙ СТЕК

  • Ubuntu 12.04.2
  • Apache2 (пакет)
  • PHP 5.4.13 (скомпилировано)
  • MySQL Server
  • MySQL Client

APACHE COOKBOOK + Скомпилированный PHP

Поваренная книга Apache предлагает только рецепт установки php как пакета. Официальный пакет Ubuntu 12.04 устанавливает PHP 5.3, и не существует хорошего неофициального пакета 5.4+. Приложение требует PHP 5.4+. Таким образом, PHP должен быть скомпилирован из источника с "--with-apxs2" флаг.

APXS

Для компиляции PHP для работы с Apache2 требуется apxs2 (или apxs), который, похоже, не устанавливается apache::default рецепт (хотя apache2 -l шоу mod_so.c и документы Apache, кажется, указывают, что это указывает на установку.)

  1. Я заметил, что строка 142-143 шаблона apache.conf.erb по умолчанию закомментирована LoadModule что-то вроде "держать apxs счастливыми", но я не понял его цели. Есть ли что-то простое, что я пропускаю в документации Apache2, которая показывает, как установить или включить apxs?
  2. Поваренная книга Apache не предлагает метод установки dev пакет. Итак, где должна происходить эта установка? Мой рецепт 'sample_lamp_app'? В кулинарной книге вроде my_apache2, которая "расширяет" кулинарную книгу сообщества? Рецепт 'php::source', с not_if условный тест для apxs?

НОТА

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

1 ответ

Я задал этот же вопрос одному из парней из Opscode на конференции пару недель назад..

В настоящее время мы используем старую версию chef (10.14.4), поскольку она позволяет хранить кулинарные книги в разных местах, и шеф-повар объединит их все вместе. Когда вы делаете это, он предупреждает об устаревшем поведении, но парень из Opscode, похоже, не нашел ответа на правильный способ сделать это.

Структура каталогов

Мы переопределяем только те части, которые хотим изменить, и файл метаданных. В этом случае мы скопировали файл default.rb, внесли изменения и сохранили его в нашем каталоге поваренных книг-переопределений. Обратите внимание, что мы также скопировали файл metadata.rb, в котором мы увеличили номер версии. Я обычно добавляю 9, так что моя версия всегда самая высокая, делая версию примерно 92.2.13 вместо 2.2.13. Таким образом, я использую 9 как тип пространства имен.

`-- chef
    |-- cookbooks
    |   `-- apache2
    |       |-- attributes
    |       |   `-- ...
    |       |-- CHANGELOG.md
    |       |-- CONTRIBUTING.md
    |       |-- definitions
    |       |   `-- ...
    |       |-- files
    |       |   `-- ...
    |       |-- Gemfile
    |       |-- LICENSE
    |       |-- metadata.json
    |       |-- metadata.rb
    |       |-- README.md
    |       |-- recipes
    |       |   `-- ...
    |       `-- templates
    |           `-- ...
    `-- cookbooks-overrides
        `-- apache2
            |-- metadata.rb
            `-- recipes
                `-- default.rb

knife.rb

Мы говорим шеф-повару, где искать поваренные книги

...
cookbook_path [
    "#{ENV['HOME']}/dev/deployment/chef/cookbooks",
    "#{ENV['HOME']}/dev/deployment/chef/cookbooks-overrides"
]

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

Это, я уверен, не "способ" сделать это, но это, безусловно, один из способов, который был успешным для нас до сих пор. Нужно лишь немного усердия, чтобы убедиться, что ваши переопределения все еще работают, когда вы обновляете основную кулинарную книгу (в данном случае, apache2).

Другие ссылки

В этом посте рассказывается о создании "кулинарной книги-обертки" для того, что вы хотите.

Этот пост рассказывает об инструменте для управления сторонними кулинарными книгами.

Другие вопросы по тегам