Не удается перезапустить брандмауэр с помощью 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' по вашему рецепту.

Другие вопросы по тегам