Как запустить поваренную книгу с зависимостями в шеф-поваре?

Я настроил рабочую станцию ​​на этом шаге для начала работы (ОС Redhat 6.5). Я запустил узел. Я модифицировал кулинарную книгу вот так:

myCookbook / metadata.rb

name             'myCookbook'
maintainer       'YOUR_COMPANY_NAME'
maintainer_email 'YOUR_EMAIL'
license          'All rights reserved'
description      'Installs/Configures myCookbook'
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version          '0.1.0'

depends 'maven'

Например. только depends 'maven' строка была добавлена ​​после выполнения knife cookbook create myCookbook.

myCookbook / recipes / default.rb

maven 'spring-context' do
  group_id 'org.springframework'
  version  '4.0.4.RELEASE'
  dest     '/root/chef-repo/'
  repositories ['http://repo.maven.apache.org/maven2/']
end

Потом бегу:

knife cookbook upload myCookbook

Сейчас пытаюсь:

knife bootstrap 192.168.1.37 --ssh-user root --ssh-password '123456' --sudo --use-sudo-password --node-name node-with-maven-run --run-list 'recipe[myCookbook]'

И получить:

ERROR: Cookbook myCookbook depends on cookbooks which are not currently
ERROR: being uploaded and cannot be found on the server.
ERROR: The missing cookbook(s) are: 'maven' version '>= 0.0.0'

Как установить всю поваренную книгу на сервер шеф-повара из этого mtCookbook зависит?


person Cherry    schedule 11.12.2014    source источник


Ответы (3)


См. здесь

Или просто введите knife cookbook upload --help, и он покажет вам следующую строку (вместе с другими):

--include-dependencies Also upload cookbook dependencies

Итак, knife cookbook upload myCookbook --include-dependencies ваш ответ

Вам также понадобится maven кулинарная книга на вашей рабочей станции, knife cookbook site install maven или любой другой способ создать каталог с именем maven в вашем локальном cookbook_path, содержащий кулинарную книгу, где metatada.rb файл в качестве ключа name со значением maven

person Tensibai    schedule 11.12.2014

@rastasheep описал, как инструмент berkshelf теперь связан с chefdk.

Его действительно легко использовать, и его стоит изучить. Он разработан для работы как инструмент сборки драгоценных камней.

Пример

└── myCookbook
    ├── Berksfile       <-- Berkshelf configuration file
    ├── Berksfile.lock  <-- Lock file generated by Berkshelf
    ├── metadata.rb
    ├── README.md
    └── recipes
        └── default.rb

Berksfile

source "https://supermarket.getchef.com"

metadata

Директива «source» сообщает berkshelf, откуда загружать зависимости. Директива «метаданные» указывает berkshelf использовать зависимости из метаданных поваренной книги.

Использование Berkshelf

Команда "install" загрузит зависимости кулинарной книги (кешируется в ~ / .berkshelf).

$ cd myCookbook
$ berks install
Resolving cookbook dependencies...
Fetching 'myCookbook' from source at .
Fetching cookbook index from https://supermarket.getchef.com...
Installing maven (1.2.0)
Installing 7-zip (1.0.2)
Installing ark (0.9.0)
Installing chef_handler (1.1.6)
Installing java (1.29.0)
Installing windows (1.34.8)
Using myCookbook (0.1.0) from source at .

Berkshelf также может загрузить все кулинарные книги на ваш шеф-поварский сервер.

$ berks upload
Uploaded 7-zip (1.0.2) to: 'http://127.0.0.1:8889/'
Uploaded ark (0.9.0) to: 'http://127.0.0.1:8889/'
Uploaded chef_handler (1.1.6) to: 'http://127.0.0.1:8889/'
Uploaded java (1.29.0) to: 'http://127.0.0.1:8889/'
Uploaded maven (1.2.0) to: 'http://127.0.0.1:8889/'
Uploaded myCookbook (0.1.0) to: 'http://127.0.0.1:8889/'
Uploaded windows (1.34.8) to: 'http://127.0.0.1:8889/'
person Mark O'Connor    schedule 11.12.2014

Существует несколько других вариантов управления кулинарной книгой и зависимостями, например Berkshelf или Librarian-chef, где Berkshelf более популярен, и он даже включен в Chef Development Kit, поэтому, если вы его используете, вам не нужно устанавливать его отдельно.

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

Для получения дополнительной информации о том, как использовать эти инструменты, обратитесь к официальным сайтам:

В общем, для управления небольшими проектами вы можете использовать флаг выгрузки ножа для загрузки зависимостей.

-d, --include-dependencies
    Use to ensure that when a cookbook has a dependency on one (or more) cookbooks, those cookbooks will also be uploaded.
person rastasheep    schedule 11.12.2014