Введение Я изучаю шеф-повар, чтобы автоматизировать управление сервером на работе. Я скачал chefdk 3.0 из здесь и теперь я пытаюсь построить свою первую кулинарную книгу с помощью шеф-повара.
Внимание! Я использую это в среде Windows для целей тестирования, я ожидаю, что он потерпит неудачу, так как Windows не имеет iptables, но я не ожидаю, что он потерпит неудачу, заявив, что он не может найти поваренную книгу. Я пробовал использовать кулинарную книгу Windows и работает.
Проблема Я могу создать поваренную книгу и запустить ее, но я не могу ссылаться на зависимости от супермаркета.
Я попробовал две альтернативы:
Альтернатива 1
Я использовал следующую команду для создания кулинарной книги
chef generate cookbook learn_chef_httpd
(из данного руководства)
Мне удалось завершить учебное пособие, и теперь я хочу проверить ссылку на другую кулинарную книгу, поэтому я выбрал simple_iptables
Я добавил эту строку
cookbook 'simple_iptables', '~> 0.7.0'
В мой Berksfile, как описано в Супермаркете.
Затем я добавил эти строки в файл default.rb:
include_recipe 'simple_iptables'
# Allow HTTP, HTTPS
simple_iptables_rule "http" do
rule [ "--proto tcp --dport 80",
"--proto tcp --dport 443" ]
jump "ACCEPT"
end
И я запускаю кулинарию, используя:
chef-client --local-mode --runlist 'recipe[learn_chef_httpd]'
Проблема в том, что шеф-повар не находит поваренную книгу
Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook simple_iptables not found. If you're loading simple_iptables from anoth er cookbook, make sure you configure the dependency in your metadata
Я попытался добавить его в метаданные:
depends 'simple_iptables', '~> 0.7.0'
Но я все еще получаю сообщение об ошибке:
Error Resolving Cookbooks for Run List:
Missing Cookbooks:
No such cookbook: simple_iptables
Альтернатива 2
Я все еще пытаюсь заставить его работать, поэтому я также попытался сделать его "способом berkshelf", поэтому я создал новую кулинарную книгу.
berks cookbook test
И я добавил эту строку
cookbook 'simple_iptables', '~> 0.7.0'
В мой Berksfile, как описано в Супермаркете.
Затем я добавил эти строки в файл default.rb:
include_recipe 'simple_iptables'
# Allow HTTP, HTTPS
simple_iptables_rule "http" do
rule [ "--proto tcp --dport 80",
"--proto tcp --dport 443" ]
jump "ACCEPT"
end
Выполненные berks install:
berks install
и запустил его:
chef-client --local-mode --runlist 'recipe[test]'
Произошла такая же ошибка
Chef::Exceptions::CookbookNotFound
----------------------------------
Cookbook simple_iptables not found. If you're loading simple_iptables from anoth er cookbook, make sure you configure the dependency in your metadata
Я попытался добавить его в метаданные:
depends 'simple_iptables', '~> 0.7.0'
Но я все еще получаю сообщение об ошибке:
Error Resolving Cookbooks for Run List:
Missing Cookbooks:
No such cookbook: simple_iptables
Я посмотрел папку ~/berkshelf и кулинарные книги там.
** Альтернатива 3 **
Я запустил экземпляр CentOS 6.5 EC2 на Amazon, установил Ruby 2.1.3 и Chef. создала папку ~/chef-repo/cookbooks
Я создал поваренную книгу с помощью berkshelf, запустил
bundle install
добавил ссылку/код, как в других вариантах затем
berks install
и выполнялся так же, как в прошлый раз.
У меня были те же проблемы.
Что мне не хватает? Что мне нужно, чтобы заставить его работать?