class Chef::Knife::WindowsListenerCreate
Public Instance Methods
get_cert_passphrase()
click to toggle source
# File lib/chef/knife/winops_windows_listener_create.rb, line 55 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/winops_windows_listener_create.rb, line 61 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 = %x{powershell.exe -Command " '#{config[:cert_passphrase]}' | certutil -importPFX '#{config[:cert_install]}' AT_KEYEXCHANGE"} if $?.exitstatus ui.info "Certificate installed to Certificate Store" result = %x{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 = %x{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