class Chef::Knife::WindowsListenerCreate

Public Instance Methods

exitstatus() click to toggle source
# File lib/chef/knife/windows_listener_create.rb, line 63
def exitstatus
  $?.exitstatus
end
get_cert_passphrase() click to toggle source
# File lib/chef/knife/windows_listener_create.rb, line 57
def get_cert_passphrase
  print "Enter given certificate's passphrase (empty for no passphrase):"
  passphrase = STDIN.gets
  passphrase.strip
end
run() click to toggle source
# File lib/chef/knife/windows_listener_create.rb, line 67
def run
  STDOUT.sync = STDERR.sync = true

  if Chef::Platform.windows?
    begin
      if config[:cert_install]
        config[:cert_passphrase] = get_cert_passphrase unless config[:cert_passphrase]
        result = `powershell.exe -Command " '#{config[:cert_passphrase]}' | certutil  -importPFX '#{config[:cert_install]}' AT_KEYEXCHANGE"`
        if exitstatus
          ui.info "Certificate installed to Certificate Store"
          result = `powershell.exe -Command " echo (Get-PfxCertificate #{config[:cert_install]}).thumbprint "`
          ui.info "Certificate Thumbprint: #{result}"
          config[:cert_thumbprint] = result.strip
        else
          ui.error "Error installing certificate to Certificate Store"
          ui.error result
          exit 1
        end
      end

      unless config[:cert_thumbprint]
        ui.error "Please specify the --cert-thumbprint"
        exit 1
      end

      result = `winrm create winrm/config/Listener?Address=*+Transport=HTTPS @{Hostname="#{config[:hostname]}";CertificateThumbprint="#{config[:cert_thumbprint]}";Port="#{config[:port]}"}`
      Chef::Log.debug result

      if exitstatus == 0
        ui.info "WinRM listener created with Port: #{config[:port]} and CertificateThumbprint: #{config[:cert_thumbprint]}"
      else
        ui.error "Error creating WinRM listener. use -VV for more details."
        exit 1
      end

    rescue => e
      puts "ERROR: + #{e}"
    end
  else
    ui.error "WinRM listener can be created on Windows system only"
    exit 1
  end
end