win_chocolatey: fixes for proxy support (#28809)
This commit is contained in:
parent
a41da28f3f
commit
113635e44c
2 changed files with 93 additions and 57 deletions
|
@ -9,7 +9,6 @@
|
|||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
|
||||
# As of chocolatey 0.9.10, non-zero success exit codes can be returned
|
||||
# See https://github.com/chocolatey/choco/issues/512#issuecomment-214284461
|
||||
$successexitcodes = (0, 1605, 1614, 1641, 3010)
|
||||
|
@ -34,7 +33,7 @@ $ignoredependencies = Get-AnsibleParam -obj $params -name "ignore_dependencies"
|
|||
$skipscripts = Get-AnsibleParam -obj $params -name "skip_scripts" -type "bool" -default $false
|
||||
$proxy_url = Get-AnsibleParam -obj $params -name "proxy_url" -type "str"
|
||||
$proxy_username = Get-AnsibleParam -obj $params -name "proxy_username" -type "str"
|
||||
$proxy_password = Get-AnsibleParam -obj $params -name "proxy_password" -type "str"
|
||||
$proxy_password = Get-AnsibleParam -obj $params -name "proxy_password" -type "str" -failifempty ($proxy_username -ne $null)
|
||||
|
||||
$result = @{
|
||||
changed = $false
|
||||
|
@ -53,7 +52,6 @@ if ($upgrade)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
Function Chocolatey-Install-Upgrade
|
||||
{
|
||||
[CmdletBinding()]
|
||||
|
@ -124,9 +122,8 @@ Function Chocolatey-Install-Upgrade
|
|||
{
|
||||
Add-Warning -obj $result -message "Chocolatey was older than v0.10.5, so it was upgraded during this task run."
|
||||
$script:options = @( "-dv" )
|
||||
Choco-Upgrade -package chocolatey
|
||||
Choco-Upgrade -package chocolatey -proxy_url $proxy_url -proxy_username $proxy_username -proxy_password $proxy_password
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# set the default verbosity options
|
||||
|
@ -183,7 +180,6 @@ Function Choco-IsInstalled
|
|||
return $false
|
||||
}
|
||||
|
||||
|
||||
Function Choco-Upgrade
|
||||
{
|
||||
[CmdletBinding()]
|
||||
|
@ -201,7 +197,10 @@ Function Choco-Upgrade
|
|||
[bool] $allowemptychecksums,
|
||||
[bool] $ignorechecksums,
|
||||
[bool] $ignoredependencies,
|
||||
[bool] $allowdowngrade
|
||||
[bool] $allowdowngrade,
|
||||
[string] $proxy_url,
|
||||
[string] $proxy_username,
|
||||
[string] $proxy_password
|
||||
)
|
||||
|
||||
if (-not (Choco-IsInstalled $package))
|
||||
|
@ -266,6 +265,21 @@ Function Choco-Upgrade
|
|||
$options += "--allow-downgrade"
|
||||
}
|
||||
|
||||
if ($proxy_url)
|
||||
{
|
||||
$options += "--proxy=`"'$proxy_url'`""
|
||||
}
|
||||
|
||||
if ($proxy_username)
|
||||
{
|
||||
$options += "--proxy-user=`"'$proxy_username'`""
|
||||
}
|
||||
|
||||
if ($proxy_password)
|
||||
{
|
||||
$options += "--proxy-password=`"'$proxy_password'`""
|
||||
}
|
||||
|
||||
# NOTE: Chocolatey does not use stderr except for help output
|
||||
Try {
|
||||
$output = & $script:executable upgrade $script:options $options
|
||||
|
@ -298,7 +312,6 @@ Function Choco-Upgrade
|
|||
$result.failed = $false
|
||||
}
|
||||
|
||||
|
||||
Function Choco-Install
|
||||
{
|
||||
[CmdletBinding()]
|
||||
|
@ -316,7 +329,10 @@ Function Choco-Install
|
|||
[bool] $allowemptychecksums,
|
||||
[bool] $ignorechecksums,
|
||||
[bool] $ignoredependencies,
|
||||
[bool] $allowdowngrade
|
||||
[bool] $allowdowngrade,
|
||||
[string] $proxy_url,
|
||||
[string] $proxy_username,
|
||||
[string] $proxy_password
|
||||
)
|
||||
|
||||
if (Choco-IsInstalled $package)
|
||||
|
@ -327,7 +343,8 @@ Function Choco-Install
|
|||
-skipscripts $skipscripts -source $source -installargs $installargs `
|
||||
-packageparams $packageparams -allowemptychecksums $allowemptychecksums `
|
||||
-ignorechecksums $ignorechecksums -ignoredependencies $ignoredependencies `
|
||||
-allowdowngrade $allowdowngrade
|
||||
-allowdowngrade $allowdowngrade -proxy_url $proxy_url `
|
||||
-proxy_username $proxy_username -proxy_password $proxy_password
|
||||
return
|
||||
}
|
||||
elseif (-not $force)
|
||||
|
@ -388,6 +405,21 @@ Function Choco-Install
|
|||
$options += "--skip-scripts"
|
||||
}
|
||||
|
||||
if ($proxy_url)
|
||||
{
|
||||
$options += "--proxy=`"'$proxy_url'`""
|
||||
}
|
||||
|
||||
if ($proxy_username)
|
||||
{
|
||||
$options += "--proxy-user=`"'$proxy_username'`""
|
||||
}
|
||||
|
||||
if ($proxy_password)
|
||||
{
|
||||
$options += "--proxy-password=`"'$proxy_password'`""
|
||||
}
|
||||
|
||||
# NOTE: Chocolatey does not use stderr except for help output
|
||||
Try {
|
||||
$output = & $script:executable install $script:options $options
|
||||
|
@ -485,50 +517,8 @@ Function Choco-Uninstall
|
|||
$result.failed = $false
|
||||
}
|
||||
|
||||
|
||||
Function Choco-ConfigureProxy
|
||||
{
|
||||
[CmdletBinding()]
|
||||
|
||||
param(
|
||||
[string] $proxy_url,
|
||||
[string] $proxy_username,
|
||||
[string] $proxy_password
|
||||
)
|
||||
$hash = @{
|
||||
proxy = $proxy_url
|
||||
proxyUser = $proxy_username
|
||||
proxyPassword = $proxy_password
|
||||
}
|
||||
foreach ($h in $hash.GetEnumerator()) {
|
||||
if ($($h.Value))
|
||||
{
|
||||
$cmd = "$executable config set $($h.Name) $($h.Value)"
|
||||
}
|
||||
else
|
||||
{
|
||||
$cmd = "$executable config unset $($h.Name)"
|
||||
}
|
||||
$results = Invoke-Expression $cmd
|
||||
if ($LastExitCode -ne 0)
|
||||
{
|
||||
$result.choco_error_cmd = $cmd
|
||||
$result.choco_error_log = $results
|
||||
|
||||
Throw "Error setting $($h.Name) with $($h.Value)"
|
||||
}
|
||||
If ("$results" -notmatch "Nothing to change. Config already set.")
|
||||
{
|
||||
$result.changed = $true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Chocolatey-Install-Upgrade
|
||||
|
||||
Choco-ConfigureProxy
|
||||
|
||||
if ($state -in ("absent", "reinstalled")) {
|
||||
|
||||
Choco-Uninstall -package $package -version $version -force $force -timeout $timeout `
|
||||
|
@ -542,8 +532,8 @@ if ($state -in ("downgrade", "latest", "present", "reinstalled")) {
|
|||
-skipscripts $skipscripts -source $source -installargs $installargs `
|
||||
-packageparams $packageparams -allowemptychecksums $allowemptychecksums `
|
||||
-ignorechecksums $ignorechecksums -ignoredependencies $ignoredependencies `
|
||||
-allowdowngrade ($state -eq "downgrade")
|
||||
|
||||
-allowdowngrade ($state -eq "downgrade") -proxy_url $proxy_url `
|
||||
-proxy_username $proxy_username -proxy_password $proxy_password
|
||||
}
|
||||
|
||||
Exit-Json -obj $result
|
||||
|
|
|
@ -111,15 +111,19 @@ options:
|
|||
version_added: '2.4'
|
||||
proxy_url:
|
||||
description:
|
||||
- Proxy url used to install chocolatey and the package
|
||||
- Proxy url used to install chocolatey and the package.
|
||||
version_added: '2.4'
|
||||
proxy_username:
|
||||
description:
|
||||
- Proxy username used to install chocolatey and the package
|
||||
- Proxy username used to install chocolatey and the package.
|
||||
- When dealing with a username with double quote characters C("), they
|
||||
need to be escaped with C(\) beforehand. See examples for more details.
|
||||
version_added: '2.4'
|
||||
proxy_password:
|
||||
description:
|
||||
- Proxy password used to install chocolatey and the package
|
||||
- Proxy password used to install chocolatey and the package.
|
||||
- See notes in C(proxy_username) when dealing with double quotes in a
|
||||
password.
|
||||
version_added: '2.4'
|
||||
notes:
|
||||
- Provide the C(version) parameter value as a string (e.g. C('6.1')), otherwise it
|
||||
|
@ -191,4 +195,46 @@ EXAMPLES = r'''
|
|||
proxy_url: http://proxy-server:8080/
|
||||
proxy_username: joe
|
||||
proxy_password: p@ssw0rd
|
||||
|
||||
- name: Install curl with proxy credentials that contain quotes
|
||||
win_chocolatey:
|
||||
name: curl
|
||||
proxy_url: http://proxy-server:8080/
|
||||
proxy_username: user with \"escaped\" double quotes
|
||||
proxy_password: pass with \"escaped\" double quotes
|
||||
'''
|
||||
|
||||
RETURN = r'''
|
||||
choco_bootstrap_output:
|
||||
description: DEPRECATED, will be removed in 2.6, use stdout instead.
|
||||
returned: changed, choco task returned a failure
|
||||
type: str
|
||||
sample: Chocolatey upgraded 1/1 packages.
|
||||
choco_error_cmd:
|
||||
description: DEPRECATED, will be removed in 2.6, use command instead.
|
||||
returned: changed, choco task returned a failure
|
||||
type: str
|
||||
sample: choco.exe install -r --no-progress -y sysinternals --timeout 2700 --failonunfound
|
||||
choco_error_log:
|
||||
description: DEPRECATED, will be removed in 2.6, use stdout instead.
|
||||
returned: changed, choco task returned a failure
|
||||
type: str
|
||||
sample: sysinternals not installed. The package was not found with the source(s) listed
|
||||
command:
|
||||
description: The full command used in the chocolatey task.
|
||||
returned: changed
|
||||
type: str
|
||||
sample: choco.exe install -r --no-progress -y sysinternals --timeout 2700 --failonunfound
|
||||
rc:
|
||||
description: The return code from the chocolatey task.
|
||||
returned: changed
|
||||
type: int
|
||||
sample: 0
|
||||
stdout:
|
||||
description: The stdout from the chocolatey task. The verbosity level of the
|
||||
messages are affected by Ansible verbosity setting, see notes for more
|
||||
details.
|
||||
returned: changed
|
||||
type: str
|
||||
sample: Chocolatey upgraded 1/1 packages.
|
||||
'''
|
||||
|
|
Loading…
Reference in a new issue