mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-11-04 00:02:37 +01:00 
			
		
		
		
	Extending Config Drive support * Added support for VMware * Build configdrive.iso on ssvm * Added support for VPC and Isolated Networks * Moved implementation to new Service Provider * UI fix: add support for urlencoded userdata * Add support for building systemvm behind a proxy Co-Authored-By: Raf Smeets <raf.smeets@nuagenetworks.net> Co-Authored-By: Frank Maximus <frank.maximus@nuagenetworks.net> Co-Authored-By: Sigert Goeminne <sigert.goeminne@nuagenetworks.net>
		
			
				
	
	
		
			141 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			21 KiB
		
	
	
	
		
			Batchfile
		
	
	
	
	
	
@echo off
 | 
						|
 | 
						|
REM Licensed to the Apache Software Foundation (ASF) under one
 | 
						|
REM or more contributor license agreements.  See the NOTICE file
 | 
						|
REM distributed with this work for additional information
 | 
						|
REM regarding copyright ownership.  The ASF licenses this file
 | 
						|
REM to you under the Apache License, Version 2.0 (the
 | 
						|
REM "License"); you may not use this file except in compliance
 | 
						|
REM with the License.  You may obtain a copy of the License at
 | 
						|
REM
 | 
						|
REM   http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
REM
 | 
						|
REM Unless required by applicable law or agreed to in writing,
 | 
						|
REM software distributed under the License is distributed on an
 | 
						|
REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
						|
REM KIND, either express or implied.  See the License for the
 | 
						|
REM specific language governing permissions and limitations
 | 
						|
REM under the License.
 | 
						|
 | 
						|
rem ----------------------------------------------------------------------------------------------------------------
 | 
						|
set PasswordReset_Script=cloud-set-guest-password-configdrive.vbs
 | 
						|
echo Set owshNet = CreateObject^("WScript.Network"^)                                                                                                 > %PasswordReset_Script%
 | 
						|
echo strComputer = owshNet.ComputerName                                                                                                             >> %PasswordReset_Script%
 | 
						|
echo Const HKEY_CURRENT_USER = ^&H80000001                                                                                                          >> %PasswordReset_Script%
 | 
						|
echo registryKeyPath = "SOFTWARE\CLOUDSTACKmd5Checksum\"                                                                                            >> %PasswordReset_Script%
 | 
						|
echo registryKeyName = "PasswordMd5Checksum"                                                                                                        >> %PasswordReset_Script%
 | 
						|
echo CDPath = ""                                                                                                                                    >> %PasswordReset_Script%
 | 
						|
echo configLabelName = "config-2"                                                                                                                     >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo Set fso = CreateObject ^("Scripting.FileSystemobject"^)                                                                                        >> %PasswordReset_Script%
 | 
						|
echo For Each drive In fso.Drives                                                                                                                   >> %PasswordReset_Script%
 | 
						|
echo    If drive.DriveType = 4 And drive.IsReady Then                                                                                               >> %PasswordReset_Script%
 | 
						|
echo       If drive.VolumeName = configLabelName Then                                                                                               >> %PasswordReset_Script%
 | 
						|
echo            CDPath = drive.Path                                                                                                                 >> %PasswordReset_Script%
 | 
						|
echo       End If                                                                                                                                   >> %PasswordReset_Script%
 | 
						|
echo       Exit For                                                                                                                                 >> %PasswordReset_Script%
 | 
						|
echo    End If                                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo Next                                                                                                                                           >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo IF CDPath = "" Then                                                                                                                            >> %PasswordReset_Script%
 | 
						|
echo    WScript.Echo "Config Drive not found to set the password to VM"                                                                             >> %PasswordReset_Script%
 | 
						|
echo    WScript.Quit                                                                                                                                >> %PasswordReset_Script%
 | 
						|
echo End If                                                                                                                                         >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo PasswordFileName = "\VM_PASSWORD.txt"                                                                                                          >> %PasswordReset_Script%
 | 
						|
echo PasswordFilePath = CDPath ^& "\CLOUDSTACK\PASSWORD" ^& PasswordFileName                                                                        >> %PasswordReset_Script%
 | 
						|
echo Set ObjFile = fso.OpenTextFile^(PasswordFilePath^)                                                                                             >> %PasswordReset_Script%
 | 
						|
echo If Err.Number ^<^> 0 Then                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo    WScript.Echo "Error: " ^& PasswordFilePath ^& " --- " ^& Err.Description                                                                    >> %PasswordReset_Script%
 | 
						|
echo    WScript.Quit                                                                                                                                >> %PasswordReset_Script%
 | 
						|
echo End If                                                                                                                                         >> %PasswordReset_Script%
 | 
						|
echo Password = ObjFile.ReadLine                                                                                                                    >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo PasswordMd5checsumFileName = "\VM_PASSWORD_MD5CHECKSUM.txt"                                                                                    >> %PasswordReset_Script%
 | 
						|
echo PasswordMd5checsumFilePath = CDPath ^& "\CLOUDSTACK\PASSWORD" ^& PasswordMd5checsumFileName                                                    >> %PasswordReset_Script%
 | 
						|
echo Set ObjFile2 = fso.OpenTextFile^(PasswordMd5checsumFilePath^)                                                                                  >> %PasswordReset_Script%
 | 
						|
echo If Err.Number ^<^> 0 Then                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo    WScript.Echo "Error: " ^& PasswordMd5checsumFilePath ^& " --- " ^& Err.Description                                                          >> %PasswordReset_Script%
 | 
						|
echo    WScript.Quit                                                                                                                                >> %PasswordReset_Script%
 | 
						|
echo End If                                                                                                                                         >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo registryKeyValue = ObjFile2.ReadLine                                                                                                           >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo ' The below logic is to make sure script sets the password to VM only when new password appears in config drive                                >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo Set registryObject=GetObject^("winmgmts:{impersonationLevel=impersonate}!\\" ^& strComputer ^& "\root\default:StdRegProv"^)                    >> %PasswordReset_Script%
 | 
						|
echo If registryObject.EnumKey^(HKEY_CURRENT_USER, registryKeyPath, "", ""^) = 0 Then                                                               >> %PasswordReset_Script%
 | 
						|
echo    registryObject.GetStringValue HKEY_CURRENT_USER, registryKeyPath, registryKeyName, previousRegistryKeyValue                                 >> %PasswordReset_Script%
 | 
						|
echo    If ^(previousRegistryKeyValue ^<^> registryKeyValue^) Then                                                                                  >> %PasswordReset_Script%
 | 
						|
echo        SavePasswordChecksum^(^)                                                                                                                >> %PasswordReset_Script%
 | 
						|
echo        SetPasswordToVM^(^)                                                                                                                     >> %PasswordReset_Script%
 | 
						|
echo    End If                                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo Else                                                                                                                                           >> %PasswordReset_Script%
 | 
						|
echo    Return = registryObject.CreateKey^(HKEY_CURRENT_USER, registryKeyPath^)                                                                     >> %PasswordReset_Script%
 | 
						|
echo    If ^(Return = 0^) And ^(Err.Number = 0^) Then                                                                                               >> %PasswordReset_Script%
 | 
						|
echo        SavePasswordChecksum^(^)                                                                                                                >> %PasswordReset_Script%
 | 
						|
echo        SetPasswordToVM^(^)                                                                                                                     >> %PasswordReset_Script%
 | 
						|
echo    Else                                                                                                                                        >> %PasswordReset_Script%
 | 
						|
echo        Wscript.Echo Now ^& vbTab ^& "Create Registry Key failed while setting the password to VM. Error = " ^& Err.Number                      >> %PasswordReset_Script%
 | 
						|
echo    End If                                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo End If                                                                                                                                         >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo '                                                                                                                                              >> %PasswordReset_Script%
 | 
						|
echo ' Procedure to set the password to the VM                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo '                                                                                                                                              >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo Sub SetPasswordToVM^(^)                                                                                                                        >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo    Set objUser = GetObject^("WinNT://" ^& strComputer ^& "/administrator"^)                                                                    >> %PasswordReset_Script%
 | 
						|
echo    If Err.Number ^<^> 0 Then                                                                                                                   >> %PasswordReset_Script%
 | 
						|
echo        WScript.Echo Now ^& vbTab ^& "Error connecting to " ^& strComputer ^& " --- " ^& Err.Description                                        >> %PasswordReset_Script%
 | 
						|
echo        Err.Clear                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo        WScript.Quit                                                                                                                            >> %PasswordReset_Script%
 | 
						|
echo    Else                                                                                                                                        >> %PasswordReset_Script%
 | 
						|
echo        Select Case Password                                                                                                                    >> %PasswordReset_Script%
 | 
						|
echo            Case ""                                                                                                                             >> %PasswordReset_Script%
 | 
						|
echo                WScript.Echo Now ^& vbTab ^& "Config drive did not have any password for the VM"                                                >> %PasswordReset_Script%
 | 
						|
echo                WScript.Quit                                                                                                                    >> %PasswordReset_Script%
 | 
						|
echo            Case "saved_password"                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo                WScript.Echo Now ^& vbTab ^& "VM has already saved the password"                                                                >> %PasswordReset_Script%
 | 
						|
echo                WScript.Quit                                                                                                                    >> %PasswordReset_Script%
 | 
						|
echo            Case else                                                                                                                           >> %PasswordReset_Script%
 | 
						|
echo                objUser.Setpassword Password                                                                                                    >> %PasswordReset_Script%
 | 
						|
echo                objUser.Setinfo                                                                                                                 >> %PasswordReset_Script%
 | 
						|
echo                If Err.Number ^<^> 0 Then                                                                                                       >> %PasswordReset_Script%
 | 
						|
echo                    wscript.Echo Now ^& vbTab ^& "Error setting password for " ^& strComputer ^& "\Administrator" ^& " --- " ^& Err.Description >> %PasswordReset_Script%
 | 
						|
echo                    Err.Clear                                                                                                                   >> %PasswordReset_Script%
 | 
						|
echo                    WScript.Quit                                                                                                                >> %PasswordReset_Script%
 | 
						|
echo                Else                                                                                                                            >> %PasswordReset_Script%
 | 
						|
echo                    WScript.Echo Now ^& vbTab ^& "Password set for " ^& strComputer ^& "\Administrator"                                         >> %PasswordReset_Script%
 | 
						|
echo                End If                                                                                                                          >> %PasswordReset_Script%
 | 
						|
echo        End Select                                                                                                                              >> %PasswordReset_Script%
 | 
						|
echo    End If                                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo End Sub                                                                                                                                        >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo Sub SavePasswordChecksum^(^)                                                                                                                   >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo    Return = registryObject.SetStringValue^(HKEY_CURRENT_USER, registryKeyPath, registryKeyName, registryKeyValue^)                             >> %PasswordReset_Script%
 | 
						|
echo    If ^(Return ^<^> 0^) Or ^(Err.Number ^<^> 0^) Then                                                                                          >> %PasswordReset_Script%
 | 
						|
echo        Wscript.Echo Now ^& vbTab ^& "SetStringValue to Registry Key failed while setting the password to VM. Error = " ^& Err.Number           >> %PasswordReset_Script%
 | 
						|
echo    End If                                                                                                                                      >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
echo End Sub                                                                                                                                        >> %PasswordReset_Script%
 | 
						|
echo.                                                                                                                                               >> %PasswordReset_Script%
 | 
						|
rem -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 | 
						|
 | 
						|
cscript //Nologo %PasswordReset_Script%
 |