Организация ресурсов 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, кажется, указывают, что это указывает на установку.)
- Я заметил, что строка 142-143 шаблона apache.conf.erb по умолчанию закомментирована
LoadModule
что-то вроде "держать apxs счастливыми", но я не понял его цели. Есть ли что-то простое, что я пропускаю в документации Apache2, которая показывает, как установить или включить apxs? - Поваренная книга 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).
Другие ссылки
В этом посте рассказывается о создании "кулинарной книги-обертки" для того, что вы хотите.
Этот пост рассказывает об инструменте для управления сторонними кулинарными книгами.