Не удается перезапустить брандмауэр с помощью Chef
Я пишу кулинарную книгу для брандмауэра в Ubuntu14.04, используя Chef
,
Berksfile
source "https://api.berkshelf.com"
cookbook 'firewall'
сайт-поваренные / UFW / Рецепты / default.rb
firewall 'ufw'
firewall_rule 'http' do
port 80
end
firewall_rule 'https' do
port 443
end
сайт-поваренные / UFW / metadata.rb
depends 'firewall'
узлы / myserver.json
{
"run_list": [
"firewall",
"ufw"
]
}
knife solo cook myserver
заканчивается ошибка как это:
Recipe: firewall::default
* firewall[default] action restart
================================================================================
Error executing action `restart` on resource 'firewall[default]'
================================================================================
NoMethodError
-------------
undefined method `include?' for :create:Symbol
Cookbook Trace:
---------------
/home/ironsand/chef-solo/cookbooks-3/firewall/libraries/provider_firewall_ufw.rb:67:in `block (2 levels) in <class:FirewallUfw>'
/home/ironsand/chef-solo/cookbooks-3/firewall/libraries/provider_firewall_ufw.rb:66:in `each'
/home/ironsand/chef-solo/cookbooks-3/firewall/libraries/provider_firewall_ufw.rb:66:in `block in <class:FirewallUfw>'
Resource Declaration:
---------------------
# In /home/ironsand/chef-solo/cookbooks-3/firewall/recipes/default.rb
22: firewall 'default' do
23: ipv6_enabled node['firewall']['ipv6_enabled']
24: action :install
25: end
26:
Compiled Resource:
------------------
# Declared in /home/ironsand/chef-solo/cookbooks-3/firewall/recipes/default.rb:22:in `from_file'
firewall("default") do
action [:install]
updated true
retries 0
retry_delay 2
default_guard_interpreter :default
declared_type :firewall
cookbook_name :firewall
recipe_name "default"
ipv6_enabled true
enabled true
rules {"ufw"=>{}}
end
Что я делаю не так? Как я могу это исправить?
2 ответа
Похоже, ошибка в firewall
поваренная книга. https://github.com/chef-cookbooks/firewall/blob/master/libraries/provider_firewall_ufw.rb#L67 должен приводить действие к массиву, чтобы быть безопасным. Если вы установите action [:create]
на вашем ресурсе firewall_rule это, вероятно, будет работать.
Возможно, вам стоит установить кулинарную книгу из супермаркета Chef. Как установить смотрите здесь https://blog.chef.io/using-chef-supermarket-a-guided-tour . Вы должны гарантировать согласованность в
metadata.rb
а также
Policyfile.rb
. Удалять
Policyfile.lock.json
если не получают никаких обновлений. Добавить также
include_recipe 'firewall::default'
по вашему рецепту.