主厨new_resource。<值>与<值>

时间:2019-03-08 17:09:30

标签: ruby chef

我继承了使用另一本带有自定义资源的食谱的食谱。

我正在尝试弄清楚这段代码中new_resource的使用。

在下面的代码中,path new_resource.fullpath导致“未定义的方法”。

当我将该行更改为简单的path fullpath以引用局部变量时,它工作得很好。我不知道以前的意图是什么。

我确定这很容易。寻找ELI5。谢谢!

完整代码块。

resource_name :mb_worker_role
default_action :create

property :service_name, String, name_property: true
property :root_path, String, required: true
property :executable, String, required: true
property :wcf_port, [Integer, String], default: 808
property :health_port, [Integer, String], default: 8000
property :use_dummy, [TrueClass, FalseClass], default: true

action :create do
  # Create firewall allow for WCF port
  windows_firewall_rule "#{new_resource.service_name} - WCF" do
    localport new_resource.wcf_port.to_s
    protocol 'TCP'
    firewall_action :allow
  end

  # Create firewall allow for health port
  windows_firewall_rule "#{new_resource.service_name} - Health" do
    localport new_resource.health_port.to_s
    protocol 'TCP'
    firewall_action :allow
  end

  # Full path to service executable at root_path\executable
  fullpath = "#{new_resource.root_path}\\#{new_resource.executable}"

  # Create directory for worker role application root
  directory new_resource.root_path do
    recursive true
    action :create
  end

  # Set NetTCPPortSharing to start on demand
  windows_service 'NetTCPPortSharing' do
    action :configure_startup
    startup_type :manual
  end

  # Stage the dummy worker role executable if requested
  # Only used to verify this resource when testing
  if property_is_set?(:use_dummy)
    cookbook_file 'Stage dummy worker role executable' do
      # path new_resource.fullpath
      path fullpath
      cookbook 'mb_worker_role'
      source 'WorkerRole.Default.exe'
      only_if { new_resource.use_dummy }
      action :create
    end
  end

  # Create windows service if it does not exist
  powershell_script "Installing Windows service #{new_resource.service_name}" do
    code <<-EOH
      # Create the Windows service
      sc.exe create "#{new_resource.service_name}" binPath="#{fullpath}"
    EOH
    not_if "(Get-Service -Name #{new_resource.service_name}).Name -eq '#{new_resource.service_name}'"
  end

  # Set service to automatic and make sure it's running
  windows_service new_resource.service_name do
    action [:configure_startup, :enable, :start]
    startup_type :automatic
  end
end

0 个答案:

没有答案