Hi group!

Hoping that someone can help me with  an issue I'm having. It's in a 
windows environment.
I'm trying to run a script on a remote windows machine using Bolt. The 
script looks up the latest version of chocolatey from a on prem nuget feed, 
downloads and installs chocolatey.

Running the script with this command:
bolt script run .\chocolatey_install.ps1 --nodes winrm://xxxxxxx --user 
userx--password --no-ssl 

It returns a 401 error when making a web request to the nuget feed, using 
System.Net.Webclient from .Net:
Querying latest package from http:
//xxx.xxxx.xxx/DefaultCollection/_packaging/Testfeed/nuget/v2/Packages()?$filter=(Id%20eq%20%27chocolatey%27)%20and%20IsLatestVersion
  STDERR:
    $invokeArgs = @{
     : System.Management.Automation.MethodInvocationException: Exception 
calling "DownloadString" with "1" argument(s): "The remote server returned 
an error: (401) Unauthorized." ---> System.Net.WebException: The remote 
server returned an error: (401) Unauthorized.
       at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& 
request)
       at System.Net.WebClient.DownloadString(Uri address)
       at CallSite.Target(Closure , CallSite , Object , String )
       --- End of inner exception stack trace ---
       at System.Management.Automation.ExceptionHandlingOps.
CheckActionPreference(FunctionContext funcContext, Exception exception)
       at 
System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame
 
frame)
       at 
System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
 
frame)
       at 
System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame
 
frame)
       at 
System.Management.Automation.Interpreter.Interpreter.Run(InterpretedFrame 
frame)
       at 
System.Management.Automation.Interpreter.LightLambda.RunVoid1[T0](T0 arg0)
       at 
System.Management.Automation.ScriptBlock.InvokeWithPipeImpl(ScriptBlockClauseToInvoke
 
clauseToInvoke, Boolean createLocalScope, Dictionary`2 functionsToDefine, 
List`1 variablesToDefine, ErrorHandlingBehavior errorHandlingBehavior, 
Object dollarUnder, Object input, Object scriptThis, Pipe outputPipe, 
InvocationInfo invocationInfo, Object[] args)
       at 
System.Management.Automation.ScriptBlock.<>c__DisplayClass57_0.<InvokeWithPipe>b__0()
       at 
System.Management.Automation.Runspaces.RunspaceBase.RunActionIfNoRunningPipelinesWithThreadCheck(Action
 
action)
       at System.Management.Automation.ScriptBlock.InvokeWithPipe(Boolean 
useLocalScope, ErrorHandlingBehavior errorHandlingBehavior, Object 
dollarUnder, Object input, Object scriptThis, Pipe outputPipe, 
InvocationInfo invocationInfo, Boolean propagateAllExceptionsToTop, List`1 
variablesToDefine, Dictionary`2 functionsToDefine, Object[] args)
       at System.Management.Automation.ScriptBlock.InvokeUsingCmdlet(Cmdlet 
contextCmdlet, Boolean useLocalScope, ErrorHandlingBehavior 
errorHandlingBehavior, Object dollarUnder, Object input, Object scriptThis, 
Object[] args)
       at Microsoft.PowerShell.Commands.InvokeCommandCommand.EndProcessing()
       at System.Management.Automation.CommandProcessorBase.Complete()
        + CategoryInfo          : NotSpecified: (:) [Write-Error], 
WriteErrorException
        + FullyQualifiedErrorId : 
Microsoft.PowerShell.Commands.WriteErrorException




Here are the relevant parts of the code:
function Get-Downloader {
param (
  [string]$url
 )
  $downloader = new-object System.Net.WebClient
  $downloader.UseDefaultCredentials  = $true
 
  return $downloader
}



function Download-Package {
param (
  [string]$packageODataSearchUrl,
  [string]$file
 )
  $downloader = Get-Downloader $packageODataSearchUrl
  
  Write-Output "Querying latest package from $packageODataSearchUrl"
NEXT LINE IS WHERE IT CRASHES
  [xml]$pkg = $downloader.DownloadString($packageODataSearchUrl)


 I have verified that userx is allowed to query the server. I have also 
tested to manually move the script to the remote machine and run it locally 
as userx AND THAT WORKS. 
Does anyone know if there is a problem/bug when accessing the credentials 
of the user running a script (through WebClient.UseDefaultCredentials) when 
the script is run by Bolt? I can think of many workaround, but I can't 
understand why this won't work.

Cheers!
Toband, the frustrated developer

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/7d5f7bdd-fa0c-4d9e-b95f-59d6d9e0df61%40googlegroups.com.

Reply via email to