206 lines
5.6 KiB
YAML
206 lines
5.6 KiB
YAML
---
|
|
|
|
- name: install module from Powershell Gallery
|
|
win_psmodule:
|
|
name: "{{ powershell_module }}"
|
|
state: present
|
|
register: module_setup
|
|
|
|
- name: test Powershell Gallery module setup
|
|
assert:
|
|
that:
|
|
- "module_setup is changed"
|
|
- "module_setup.output == 'Module {{ powershell_module }} installed'"
|
|
|
|
- name: check idempotency reinstalling module
|
|
win_psmodule:
|
|
name: "{{ powershell_module }}"
|
|
state: present
|
|
register: module_reinstall
|
|
|
|
- name: test win_psmodule idempotency
|
|
assert:
|
|
that:
|
|
- "module_reinstall is not changed"
|
|
|
|
- name: check module install with allow_clobber not active
|
|
win_psmodule:
|
|
name: "{{ allow_clobber_module }}"
|
|
register: fail_allow_clobber
|
|
ignore_errors: yes
|
|
|
|
- name: test allow_clobber has failed
|
|
assert:
|
|
that:
|
|
- "fail_allow_clobber is failed"
|
|
|
|
- name: check module install with allow_clobber active
|
|
win_psmodule:
|
|
name: "{{ allow_clobber_module }}"
|
|
allow_clobber: yes
|
|
register: ok_allow_clobber
|
|
|
|
- name: test module install with allow_clobber active
|
|
assert:
|
|
that:
|
|
- "ok_allow_clobber is changed"
|
|
|
|
- name: check wrong module install attempt
|
|
win_psmodule:
|
|
name: "{{ wrong_module }}"
|
|
state: present
|
|
ignore_errors: yes
|
|
register: module_fail
|
|
|
|
- name: test module setup fails
|
|
assert:
|
|
that:
|
|
- "module_fail is failed"
|
|
|
|
- name: check fake custom ps repository registration attempt
|
|
win_psmodule:
|
|
name: "{{ wrong_module }}"
|
|
repository: Fake repository
|
|
url: http://my_fake_repo.com/repo/
|
|
ignore_errors: yes
|
|
register: repo_fail
|
|
|
|
- name: test fake custom ps repository registration attempt
|
|
assert:
|
|
that:
|
|
- "repo_fail is failed"
|
|
|
|
- name: check module is installed
|
|
win_shell: (Get-Module -Name {{ powershell_module }} -ListAvailable).Name
|
|
register: module_check
|
|
|
|
- name: test module is installed
|
|
assert:
|
|
that:
|
|
- "module_check.stdout_lines[0] == '{{ powershell_module }}'"
|
|
|
|
- name: check allow_clobber module is installed
|
|
win_shell: (Get-Module -Name {{ allow_clobber_module }} -ListAvailable).Name
|
|
register: allow_clobber_check
|
|
|
|
- name: test allow_clobber module is installed
|
|
assert:
|
|
that:
|
|
- "allow_clobber_check.stdout_lines[0] == '{{ allow_clobber_module }}'"
|
|
|
|
- name: remove installed powershell module
|
|
win_psmodule:
|
|
name: powershell-yaml
|
|
state: absent
|
|
register: module_uninstall
|
|
|
|
- name: test powershell module removal
|
|
assert:
|
|
that:
|
|
- "module_uninstall is changed"
|
|
- "module_uninstall.output == 'Module {{ powershell_module }} removed'"
|
|
|
|
- name: check module is uninstalled
|
|
win_shell: (Get-Module -Name {{ powershell_module }} -ListAvailable).Name
|
|
register: module_check
|
|
|
|
- name: test module is no more present
|
|
assert:
|
|
that:
|
|
- "module_check.stdout == ''"
|
|
|
|
- name: check idempotency re-removing module
|
|
win_psmodule:
|
|
name: "{{ powershell_module }}"
|
|
state: absent
|
|
register: module_uninstall_2
|
|
|
|
- name: test idempotency
|
|
assert:
|
|
that:
|
|
- "module_uninstall_2 is not changed"
|
|
|
|
- name: check removing allow_clobber module
|
|
win_psmodule:
|
|
name: "{{ allow_clobber_module }}"
|
|
state: absent
|
|
register: module_uninstall_3
|
|
|
|
- name: test removing allow_clobber module
|
|
assert:
|
|
that:
|
|
- "module_uninstall_2 is not changed"
|
|
- "module_uninstall_3 is changed"
|
|
|
|
- name: Create repository path
|
|
win_file:
|
|
path: "{{custom_repo_path}}"
|
|
state: directory
|
|
|
|
- name: Make sure sample module is uninstalled
|
|
win_psmodule:
|
|
name: "{{ powershell_module }}"
|
|
state: absent
|
|
register: module_uninstall_4
|
|
|
|
- name: Copy some module to custom repo
|
|
win_shell: |
|
|
# Need PSGet 1.6.0 for publishing and named repo usage
|
|
$psg = [PSCustomObject]@{ n="PowerShellGet"; v="1.6.0"};
|
|
Remove-Module -Name $psg.n -Force -EA SilentlyContinue;
|
|
Import-PackageProvider -Name $psg.n -RequiredVersion $psg.v -EV missingProvider -Force | Out-Null;
|
|
|
|
if($missingProvider){
|
|
Install-PackageProvider -Name $psg.n -RequiredVersion $psg.v -Confirm:$false -Force | Out-Null;
|
|
|
|
# Unload previous version
|
|
Remove-Module -Name $psg.n -Force -EA SilentlyContinue;
|
|
Import-PackageProvider -Name $psg.n -RequiredVersion $psg.v -Force | Out-Null;
|
|
}
|
|
|
|
$modName = "{{powershell_module}}";
|
|
$temp = $env:Temp;
|
|
|
|
Save-Module -Name $modName -Repository PSGallery -Path $temp | Out-Null;
|
|
|
|
$repoName = "{{custom_repo_name}}";
|
|
$repoPath = "{{custom_repo_path}}";
|
|
|
|
if(!(Test-Path $repoPath)){
|
|
New-Item -Type Directory $repoPath -Force | Out-Null;
|
|
}
|
|
|
|
Register-PSRepository -Name $repoName -SourceLocation $repoPath -InstallationPolicy Trusted | Out-Null;
|
|
|
|
Publish-Module -Path "$temp\\$modName" -Repository $repoName -Force -Confirm:$false | Out-Null;
|
|
Get-ChildItem "$repoPath\\*" | ? Name -match "$modName.*.nupkg" | % Name;
|
|
|
|
register: saved_package
|
|
|
|
- name: Validate sample module in custom repo
|
|
assert:
|
|
that:
|
|
- "powershell_module in (saved_package.stdout_lines | last)"
|
|
|
|
- name: Install module from custom Powershell repository
|
|
win_psmodule:
|
|
name: "{{ powershell_module }}"
|
|
state: present
|
|
repository: "{{custom_repo_name}}"
|
|
url: "{{custom_repo_path}}"
|
|
register: module_from_custom_repo
|
|
|
|
- name: Test custom Powershell repository module install
|
|
assert:
|
|
that:
|
|
- "module_from_custom_repo is changed"
|
|
- "module_from_custom_repo.output == 'Module {{ powershell_module }} installed'"
|
|
|
|
- name: Verify module was installed from custom repo
|
|
win_shell: (Get-InstalledModule -Name "{{powershell_module}}").Repository
|
|
register: is_package_customrepo
|
|
|
|
- name: Validate sample module is installed from custom repo
|
|
assert:
|
|
that:
|
|
- "is_package_customrepo.stdout_lines[0] == custom_repo_name"
|