39 lines
2.1 KiB
PowerShell
39 lines
2.1 KiB
PowerShell
|
# @file tests/windows/test.ps1
|
||
|
# @brief Runs an Ansible play on a GitHub Actions CI shared Windows runner
|
||
|
#
|
||
|
# @description
|
||
|
# This PowerShell script prepares a GitHub Actions CI shared Windows runner to test an
|
||
|
# Ansible play for Windows compatibility. Since Ansible cannot run on Windows,
|
||
|
# it uses WSL to run the play on the Windows host. The script performs the following tasks
|
||
|
# in order:
|
||
|
#
|
||
|
# 1. Changes the administrator password to AnsibleTest999 since it is unknown
|
||
|
# 2. Sets up WinRM CredSSP which Ansible connects with since SSH is currently not a viable option for
|
||
|
# connecting to the Windows host from a WSL environment. The script this step uses is an
|
||
|
# official example of how to set up WinRM on Windows for Ansible.
|
||
|
# 3. Runs the Ansible play via WSL
|
||
|
|
||
|
# @description Update admin password to AnsibleTest999
|
||
|
Write-Host "Changing $env:UserName password to 'AnsibleTest999'"
|
||
|
$NewPassword = ConvertTo-SecureString "AnsibleTest999" -AsPlainText -Force
|
||
|
Set-LocalUser -Name $env:UserName -Password $NewPassword
|
||
|
|
||
|
Write-Host "Setting up WinRM CredSSP"
|
||
|
$url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
|
||
|
$file = "$env:temp\ConfigureRemotingForAnsible.ps1"
|
||
|
(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
|
||
|
PowerShell.exe -ExecutionPolicy ByPass -File $file -Verbose -EnableCredSSP -DisableBasicAuth -ForceNewSSLCert
|
||
|
|
||
|
# Alternate method which works if using winrm_connection_scheme http
|
||
|
# winrm quickconfig -q force
|
||
|
# winrm set winrm/config/service '@{AllowUnencrypted="true"}'
|
||
|
# winrm get winrm/config
|
||
|
# winrm enumerate winrm/config/listener
|
||
|
|
||
|
# POC for using Docker instead of WSL to do the provisioning:
|
||
|
# Write-Host "Running the Ansible play on the local machine via a Docker container with Ansible"
|
||
|
# $CurrentLocation = Get-Location
|
||
|
# $WorkDirectory = Split-Path -leaf -path (Get-Location)
|
||
|
# $HostIP = (Get-NetIPConfiguration | Where-Object -Property IPv4DefaultGateway).IPv4Address.IPAddress
|
||
|
# docker run -v $("$($CurrentLocation)"+':/'+$WorkDirectory) -w $('/'+$WorkDirectory) --add-host='windows-docker:'$HostIP --entrypoint /bin/sh megabytelabs/ansible:slim ./tests/windows/test.sh
|