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