Add win_psrepository (#48828)

* Add win_psrepository

* Small corrections

* Correct requiqurements - add NuGet

* Extend tests

* Post-review updates

* Post-review - updates 2

* Add empty RETURN section in documentation

* Add empty line at EOF

* Post-review updates 3

* Update tests to run in check_mode too

* Minor updates

* Correct installing/updating NuGet

* a few changes for review

* Remove copyrights

* Revert "Remove copyrights"

This reverts commit 2d687ec6a691d8d71358ae447e0fdc828976a767.
This commit is contained in:
Wojciech Sciesinski 2018-12-04 22:47:28 +01:00 committed by Dag Wieers
commit e4a3e73b15
7 changed files with 374 additions and 0 deletions

View file

@ -0,0 +1,58 @@
#!powershell
# Copyright: (c) 2017, Daniele Lazzari <lazzari@mailup.com>
# Copyright: (c) 2018, Wojciech Sciesinski <wojciech[at]sciesinski[dot]net>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
#Requires -Module Ansible.ModuleUtils.Legacy
# win_psrepository (Windows PowerShell repositories Additions/Removals/Updates)
$params = Parse-Args -arguments $args -supports_check_mode $true
$check_mode = Get-AnsibleParam -obj $params -name "_ansible_check_mode" -type "bool" -default $false
$name = Get-AnsibleParam -obj $params -name "name" -type "str" -failifempty $true
$source = Get-AnsibleParam -obj $params -name "source" -type "str"
$state = Get-AnsibleParam -obj $params -name "state" -type "str" -default "present" -validateset "present", "absent"
$installationpolicy = Get-AnsibleParam -obj $params -name "installation_policy" -type "str" -validateset "trusted", "untrusted"
$result = @{"changed" = $false}
$Repo = Get-PSRepository -Name $name -ErrorAction Ignore
if ($state -eq "present") {
if ($null -eq $Repo){
if ($null -eq $installationpolicy) {
$installationpolicy = "trusted"
}
if (-not $check_mode) {
Register-PSRepository -Name $name -SourceLocation $source -InstallationPolicy $installationpolicy
}
$result.changed = $true
}
else {
$changed_properties = @{}
if ($Repo.SourceLocation -ne $source) {
$changed_properties.SourceLocation = $source
}
if ($null -ne $installationpolicy -and $Repo.InstallationPolicy -ne $installationpolicy) {
$changed_properties.InstallationPolicy = $installationpolicy
}
if ($changed_properties.Count -gt 0) {
if (-not $check_mode) {
Set-PSRepository -Name $name @changed_properties
}
$result.changed = $true
}
}
}
elseif ($state -eq "absent" -and $null -ne $Repo) {
if (-not $check_mode) {
Unregister-PSRepository -Name $name
}
$result.changed = $true
}
Exit-Json -obj $result

View file

@ -0,0 +1,68 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright: (c) 2018, Wojciech Sciesinski <wojciech[at]sciesinski[dot]net>
# Copyright: (c) 2017, Daniele Lazzari <lazzari@mailup.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
# this is a windows documentation stub. actual code lives in the .ps1
# file of the same name
ANSIBLE_METADATA = {'metadata_version': '1.1',
'status': ['preview'],
'supported_by': 'community'}
DOCUMENTATION = r'''
---
module: win_psrepository
version_added: "2.8"
short_description: Adds, removes or updates a Windows PowerShell repository.
description:
- This module helps to add, remove and update Windows PowerShell repository on Windows-based systems.
options:
name:
description:
- Name of the repository to work with.
required: yes
source:
description:
- Specifies the URI for discovering and installing modules from this repository.
- A URI can be a NuGet server feed (most common situation), HTTP, HTTPS, FTP or file location.
state:
description:
- If C(present) a new repository is added or updated.
- If C(absent) a repository is removed.
choices: [ absent, present ]
default: present
installation_policy:
description:
- Sets the C(InstallationPolicy) of a repository.
- Will default to C(trusted) when creating a new repository.
choices: [ trusted, untrusted ]
notes:
- The PowerShellGet module (version 1.6.0 or newer) and the NuGet package provider (version 2.8.5.201 or newer) are required.
- See the examples on how to update the NuGet package provider.
- You can't use M(win_psrepository) to re-register (add) removed PSGallery, use the command C(Register-PSRepository -Default) instead.
author:
- Wojciech Sciesinski (@it-praktyk)
'''
EXAMPLES = r'''
---
- name: Ensure the required NuGet package provider version is installed
win_shell: Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force
- name: Add a PowerShell module and register a repository
win_psrepository:
name: MyRepository
source: https://myrepo.com
state: present
- name: Remove a PowerShell repository
win_psrepository:
name: MyRepository
state: absent
'''
RETURN = r'''
'''