[one-users] How config Windows vm template?
Carlos Martín Sánchez
cmartin at opennebula.org
Thu Aug 11 03:06:29 PDT 2011
Hi André,
Looks like we don't have many users virtualizing windows machines.
Maybe this kind of questions can be better helped in a windows support
list...
Since you took the time to create and share the contextualization scripts,
if you come up with a working procedure and want to contribute a guide or
how-to, we'd be glad to have it in the community wiki [1].
Regards.
[1] http://opennebula.org/documentation:community:index
--
Carlos Martín, MSc
Project Major Contributor
OpenNebula - The Open Source Toolkit for Cloud Computing
www.OpenNebula.org <http://www.opennebula.org/> | cmartin at opennebula.org
2011/8/5 André Monteiro <andremonteiro at ua.pt>
> Hello,
>
> I've been working in a windows script to contextualize VMs.<http://www.pastie.org/2324611By>
> <http://www.pastie.org/2324611By>
> By your experience, what's the best way to run the script automatically
> when creating a new instance? I can create it manually as a CD-ROM and run
> the windows7.one with the drive attached, but is there an automatic way?
>
> ################### Windows context configuring script ###################
> ########### Created by andremonteiro at ua.pt and tsbatista at ua.pt ###########
>
> [string]$computerName = "$env:computername"
> [string]$ConnectionString = "WinNT://$computerName"
> [string]$ipaddress = ""
> function getContext($file) {
> $context = @{}
> switch -regex -file $file {
> '(.+)="(.+)"' {
> $name,$value = $matches[1..2]
> $context[$name] = $value
> }
> }
> return $context
> }
> function addLocalUser($context) {
> # Create new user
> $username = $context["username"]
> $ADSI = [adsi]$ConnectionString
> $user = $ADSI.Create("user",$userName)
> $user.setPassword($context["user_password"])
> $user.SetInfo()
>
> # Add user to local Administrators
> $groups = "Administrators", "Administradores"
>
> foreach ($grp in $groups) {
> if([ADSI]::Exists("WinNT://$computerName/$grp,group")) {
> $group = [ADSI] "WinNT://$computerName/$grp,group"
> $group.Add("WinNT://$computerName/$username")
> }
> }
> }
> function getIp($mac) {
> $octet = $mac.Split(":")
> [String] $ip = ""
> $ip += [convert]::toint32($octet[2],16)
> $ip += "."+[convert]::toint32($octet[3],16)
> $ip += "."+[convert]::toint32($octet[4],16)
> $ip += "."+[convert]::toint32($octet[5],16)
> $ipaddress = $ip
> return $ip
> }
> function getGateway($mac) {
> $octet = $mac.Split(":")
> [String] $ip = ""
> $ip += [convert]::toint32($octet[2],16)
> $ip += "."+[convert]::toint32($octet[3],16)
> $ip += "."+[convert]::toint32($octet[4],16)
> $ip += ".1"
> return $ip
> }
> function configureNetwork($context) {
> $Nics = Get-WMIObject Win32_NetworkAdapterConfiguration | where
> {$_.IPEnabled -eq "TRUE" -and ($_.MACAddress)}
> foreach ($nic in $Nics) {
> [String]$mac = $nic.MACAddress
> [String]$ip = getIp($mac)
> [String]$gw = getGateway($mac)
> $nic.ReleaseDHCPLease()
> $nic.EnableStatic($ip , "255.255.255.0")
> $nic.SetGateways($gw)
> $nic.SetDNSServerSearchOrder($gw)
> $nic.SetDynamicDNSRegistration("FALSE")
> }
> }
> function renameComputer($context) {
> $ComputerInfo = Get-WmiObject -Class Win32_ComputerSystem
> $ComputerInfo.rename($context["HOSTNAME"]+$ipaddress.Split(".")[3])
> }
> function enableRemoteDesktop()
> {
> #Get RDP parameters
> #(Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace
> root\cimv2\terminalservices).AllowTsConnections
> #Set RDP state
> #(Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace
> root\cimv2\terminalservices).SetAllowTsConnections(1)
> #Get RDP Required Authentication
> #(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace
> root\cimv2\terminalservices -Filter
> "TerminalName='RDP-tcp'").UserAuthenticationRequired
> #Set RDP Required Authentication
> #(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace
> root\cimv2\terminalservices -Filter
> "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(1)
> $Terminal = (Get-WmiObject -Class "Win32_TerminalServiceSetting"
> -Namespace root\cimv2\terminalservices).SetAllowTsConnections(1)
> return $Terminal
> }
> # Create folder Context if unexistant
> if( -not(Test-Path "c:\context\")) {
> New-Item "c:\context\" -type directory
> }
>
> # Execute the script
> if( -not(Test-Path "c:\context\contextualized") -and(Test-Path
> "D:\context.sh")) {
> $context = @{}
> $context = getContext('D:\context.sh')
> Set-ExecutionPolicy unrestricted -force # not needed if already done
> once on the VM
> addLocalUser($context)
> configureNetwork($context)
> renameComputer($context)
> enableRemoteDesktop()
> echo "contextualized" |Out-File ("c:\context\contextualized")
> restart-computer
> }
> # remember to disable password complexity requirements in computer
> # management while rpeparing the cloud image!
> # Remember to run "Set-ExecutionPolicy bypass -force" before this!
>
> --
> André Monteiro
>
>
> *Carlos Martín Sánchez* cmartin at opennebula.org
> <users%40lists.opennebula.org?Subject=Re%3A%20%5Bone-users%5D%20How%20config%20Windows%20vm%20template%3F&In-Reply-To=%3CBANLkTimxR8Z3MbY_PJjPNqGNafegwYs4wQ%40mail.gmail.com%3E>
> *Thu May 12 02:22:09 PDT 2011*
>
>
> - Previous message: [one-users] How config Windows vm template?
> <http://lists.opennebula.org/pipermail/users-opennebula.org/2011-May/005192.html>
> - Next message: [one-users] having a problem when shut down a VM
> <http://lists.opennebula.org/pipermail/users-opennebula.org/2011-May/005193.html>
> - *Messages sorted by:* [ date ]<http://lists.opennebula.org/pipermail/users-opennebula.org/2011-May/date.html#5282> [
> thread ]<http://lists.opennebula.org/pipermail/users-opennebula.org/2011-May/thread.html#5282> [
> subject ]<http://lists.opennebula.org/pipermail/users-opennebula.org/2011-May/subject.html#5282> [
> author ]<http://lists.opennebula.org/pipermail/users-opennebula.org/2011-May/author.html#5282>
>
> ------------------------------
>
> Hi there,
>
> The contextualization offered by OpenNebula is creating that cdrom and
> context.sh script, but it's up to the guest OS to read that file and
> configure itself.
>
> We only provide linux scripts; you would have to create similar ones. I'm
> not sure how difficult that can be since I don't have experience with
> Windows scripting.
>
>
> If you only need to configure the right IP for your VM, then you can try to
> configure a DHCP server in your network (it can be placed in a VM in the
> same VNet). This has been discussed in the list, hopefully these threads
> will help:
>
> [1] http://www.mail-archive.com/users@lists.opennebula.org/msg01143.html
> [2] http://www.mail-archive.com/users@lists.opennebula.org/msg01395.html
>
> Regards
>
> --
> Carlos Martín, MSc
> Project Major Contributor
> OpenNebula - The Open Source Toolkit for Cloud Computingwww.OpenNebula.org <http://www.opennebula.org/> | cmartin at opennebula.org <http://lists.opennebula.org/listinfo.cgi/users-opennebula.org>
>
>
> 2011/5/6 ddd <xrchina2008 at 163.com <http://lists.opennebula.org/listinfo.cgi/users-opennebula.org>>
>
> >* hi,all*>* now,my winxp vm is running.but,config's ip and hostname is not*>* right.*>* now,windows vm's cd-rom is existing context.sh.*>* This is my vm config file:*>* NAME=WinVista*>* CPU=1*>* MEMORY=1024*>* OS=[boot=hd]*>* DISK =[source="/root/images/winxp_test.img", clone=yes,*>* target=hda, readonly=no]*>* NIC=[network ="Small network"]*>* CONTEXT=[*>* hostname = "$NAME$VMID",*>* ip_public = "$NIC[IP, NETWORK=\"Small network\"]",*>* target ="hdb"*>* ]*>* GRAPHICS =[type ="vnc",listen ="127.0.0.1", port = "1"]*>* windows template need config?how?*>* Please help me.*>* ---Rong Xiong*>**>**>**>**>**>**>**>**>**>* _______________________________________________*>* Users mailing list*>* Users at lists.opennebula.org <http://lists.opennebula.org/listinfo.cgi/users-opennebula.org>*>* http://lists.opennebula.org/listinfo.cgi/users-opennebula.org*>**>**
>
>
> _______________________________________________
> Users mailing list
> Users at lists.opennebula.org
> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opennebula.org/pipermail/users-opennebula.org/attachments/20110811/f3eccfd0/attachment-0003.htm>
More information about the Users
mailing list