NuGet en Andere Pakketleveranciers op Windows Installeren met Ansible
Categories:
Projecten: c2platform/rws/ansible-gis
,
c2platform.wincore
Inleiding
Bij het werken met Ansible-projecten die gericht zijn op Windows-hosts, moet u vaak de NuGet Pakketleverancier installeren. Zonder deze kan het volgende bericht verschijnen:
PowerShellGet vereist NuGet-provider versie ‘2.8.5.201’ of nieuwer om te communiceren met NuGet-gebaseerde repositories
Ansible biedt momenteel geen speciale modules voor deze taak, maar u kunt de NuGet Pakketleverancier handmatig installeren met het volgende PowerShell commando:
Find-PackageProvider -name Nuget -ForceBootstrap -IncludeDependencies -Force
Als alternatief kunt u de win_powershell
Ansible-module gebruiken om deze taak
uit te voeren.
Gebruik van de c2platform.wincore.win
Rol
Een nog handigere aanpak is het gebruik van de
c2platform.wincore.win
Ansible rol. Deze rol biedt een sjabloon install_package_provider.ps.j2
voor
het gecontroleerd installeren van pakketleveranciers zoals NuGet en Chocolatey.
Het voordeel van het gebruik van de c2platform.wincore.win
rol is dat het
weinig Ansible-configuratie vereist; u hoeft het alleen maar te configureren.
Het RWS-referentie-implementatieproject,
c2platform/rws/ansible-gis
geeft een voorbeeld van hoe u deze rol configureert in het bestand
group_vars/windows/main.yml
. Hier is een fragment van dat bestand:
win_resources:
1-windows:
- name: Chocolatey Package Provider
type: win_powershell
script: "{{ lookup('ansible.builtin.template', 'install_package_provider.ps.j2', template_vars={'win_package_provider': 'Chocolatey'}) }}"
# debug_path: C:\vagrant\logs\chocolately-package-provider.yml
- name: NuGet Package Provider
type: win_powershell
script: "{{ lookup('ansible.builtin.template', 'install_package_provider.ps.j2', template_vars={'win_package_provider': 'Nuget'}) }}"
Sjabloon voor Installeren van Pakketleveranciers
Het install_package_provider.ps.j2
sjabloon, onderdeel van de
c2platform.wincore.win
Ansible rol, is hieronder voor uw gemak opgenomen:
$Ansible.Failed = $false
$Ansible.Changed = $false
{% if win_proxy_url is defined %}
$proxy = '{{ win_proxy_url }}'
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
[system.net.webrequest]::defaultwebproxy = new-object system.net.webproxy($proxy)
[system.net.webrequest]::defaultwebproxy.BypassProxyOnLocal = $true
{% endif %}
Write-Output "Install {{ win_package_provider }} Package Provider (if not installed already)"
try {
$packageProvider = Get-PackageProvider -Name {{ win_package_provider }}
if (-not $packageProvider) {
Write-Output "Installing {{ win_package_provider }} Package Provider"
$result = Install-PackageProvider -Name {{ win_package_provider }} -Force -Confirm:$false
if ($result -eq $null) {
$Ansible.Failed = $true
Write-Error "Failed to install {{ win_package_provider }} Package Provider"
} else {
$Ansible.Changed = $true
}
}
if ($Ansible.Changed) {
Write-Output "{{ win_package_provider }} Package Provider has been installed or updated."
} elseif ($Ansible.Failed) {
Write-Output "{{ win_package_provider }} Package Provider failed to install."
}
else {
Write-Output "{{ win_package_provider }} Package Provider is installed, and the installation was not changed"
}
}
catch {
$Ansible.Failed = $true
Write-Error "An error occurred: $_"
}
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.