Я пытаюсь понять, как организовать свою кухню шеф-повара и расширить функциональные возможности кулинарных книг сообщества Opscode. Отказ от ответственности: n00b.
ПЛАНИРУЕМЫЙ СТЕК
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 похоже, указывает на то, что это указывает на установку.)
LoadModule
строчку с чем-то вроде "держать apxs счастливыми", но я не понимал ее цели. Есть ли что-то простое, что мне не хватает в документации Apache2, которое показывает, как установить или включить apxs?dev
пакет. Итак, где должна происходить эта установка? Мой рецепт 'sample_lamp_app'? В кулинарной книге вроде my_apache2, которая «расширяет» рецепт сообщества? Рецепт 'php :: source' с not_if
условно что тест для apxs?НОТА
Пожалуйста, не отвечайте такими вещами, как «обновитесь до Ubuntu 12.10» или «используйте вместо этого эту неофициальную кулинарную книгу Apache2». Во-первых, спецификация проекта требует 12.04. Во-вторых, меня больше интересует изучение правильных методов организации и взаимодействия в кулинарных книгах.
Я задал этот же вопрос одному из парней из Opscode на конференции пару недель назад.
В настоящее время мы используем старую версию chef (10.14.4), потому что она позволяет хранить кулинарные книги в нескольких местах, и Chef объединит их все вместе. Когда вы это делаете, он предупреждает об устаревшем поведении, но у разработчика 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
нож.rb
Мы говорим шеф-повару, где искать поваренные книги
...
cookbook_path [
"#{ENV['HOME']}/dev/deployment/chef/cookbooks",
"#{ENV['HOME']}/dev/deployment/chef/cookbooks-overrides"
]
Теперь, когда вы отправляете поваренную книгу на сервер шеф-повара с помощью нож поваренная книга загрузить , вы получите предупреждение, потому что кулинарная книга существует более чем в одном месте, но она все равно с радостью объединит их вместе, и вы получите одну кулинарную книгу, которая делает то, что вы хотите.
Я уверен, что это не «способ» сделать это, но, безусловно, один из способов, который до сих пор был для нас успешным. Просто потребуется немного усердия, чтобы убедиться, что ваши переопределения все еще работают, когда вы обновляете основную кулинарную книгу (в данном случае apache2).
Прочие ссылки
Эта почта рассказывает о создании «поваренной книги-оболочки», чтобы делать то, что вы хотите.
Эта почта говорит об инструменте для управления сторонними кулинарными книгами.