mirror of
https://github.com/ceph/ceph
synced 2025-01-24 03:53:54 +00:00
8054199787
Due to lack of Windows support in the Teuthology, the test case adopts the following workaround: * Deploy baremetal machine with `ubuntu_latest.yaml` and configure it with libvirt KVM. * Create a libvirt VM and provision it with Windows Server 2019, using the official ISO from Microsoft. * Configure SSH in the Windows VM, and run the tests remotely via SSH. The implementation of the test case consists of workunit scripts. `qa/workunits/windows/test_rbd_wnbd.py` is the main Python script to test Ceph on Windows basic functionality. This is executed in the libvirt VM configured with Windows Server 2019. Co-authored-by: Lucian Petrut <lpetrut@cloudbasesolutions.com> Co-authored-by: Daniel Vincze <dvincze@cloudbasesolutions.com> Signed-off-by: Ionut Balutoiu <ibalutoiu@cloudbasesolutions.com>
43 lines
1.7 KiB
PowerShell
43 lines
1.7 KiB
PowerShell
$ErrorActionPreference = "Stop"
|
|
|
|
. "${PSScriptRoot}\utils.ps1"
|
|
|
|
$VIRTIO_WIN_PATH = "E:\"
|
|
|
|
# Install QEMU quest agent
|
|
Write-Output "Installing QEMU guest agent"
|
|
$p = Start-Process -FilePath "msiexec.exe" -ArgumentList @("/i", "${VIRTIO_WIN_PATH}\guest-agent\qemu-ga-x86_64.msi", "/qn") -NoNewWindow -PassThru -Wait
|
|
if($p.ExitCode) {
|
|
Throw "The QEMU guest agent installation failed. Exit code: $($p.ExitCode)"
|
|
}
|
|
Write-Output "Successfully installed QEMU guest agent"
|
|
|
|
# Install OpenSSH server
|
|
Start-ExecuteWithRetry {
|
|
Get-WindowsCapability -Online -Name OpenSSH* | Add-WindowsCapability -Online
|
|
}
|
|
|
|
# Start OpenSSH server
|
|
Set-Service -Name "sshd" -StartupType Automatic
|
|
Start-Service -Name "sshd"
|
|
|
|
# Set PowerShell as default SSH shell
|
|
New-ItemProperty -PropertyType String -Force -Name DefaultShell -Path "HKLM:\SOFTWARE\OpenSSH" -Value (Get-Command powershell.exe).Source
|
|
|
|
# Create SSH firewall rule
|
|
New-NetFirewallRule -Name "sshd" -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
|
|
|
|
# Authorize the SSH key
|
|
$authorizedKeysFile = Join-Path $env:ProgramData "ssh\administrators_authorized_keys"
|
|
Set-Content -Path $authorizedKeysFile -Value (Get-Content "${PSScriptRoot}\id_rsa.pub") -Encoding ascii
|
|
$acl = Get-Acl $authorizedKeysFile
|
|
$acl.SetAccessRuleProtection($true, $false)
|
|
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators", "FullControl", "Allow")
|
|
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM", "FullControl", "Allow")
|
|
$acl.SetAccessRule($administratorsRule)
|
|
$acl.SetAccessRule($systemRule)
|
|
$acl | Set-Acl
|
|
|
|
# Reboot the machine to complete first logon process
|
|
Restart-Computer -Force -Confirm:$false
|