
Hi, When i tried the above solution, i face few challanges: 1. I'm able to add VMPayload via CURL, but not via JavaSDK. 2. When i add VMPayload via CURL, sysprep fails with this message "windows could not parse or process the unattend answer file [a:\sysprep.inf] for pass [oobeSystem]. A component or setting specified in the answer file does not exist." On Tue, Apr 8, 2014 at 12:32 PM, Omer Frenkel <ofrenkel@redhat.com> wrote:
----- Original Message -----
From: "Tejesh M" <tejeshmk@gmail.com> To: "Itamar Heim" <iheim@redhat.com> Cc: "users@oVirt.org" <users@ovirt.org> Sent: Monday, April 7, 2014 4:59:16 PM Subject: Re: [Users] Cloud-init for Windows
Hi,
I tried as you suggested, but floppy is not getting attached it seems. below is the code
Steps followed:
I. Create windows VM II. installed host agent III. To seal a Windows virtual machine with sysprep
1. In the Windows virtual machine to be used as a template, open a command line terminal and type regedit . 2. The Registry Editor window displays. On the left pane, expand HKEY_LOCAL_MACHINE → SYSTEM → SETUP . 3. On the main window, right click to add a new string value using New → String Value . Right click on the string value file and select Modify . When the Edit String dialog box displays, fill in the provided text boxes:
* Value name: UnattendFile * Value data: a:\sysprep.xml 4. Launch sysprep from C:\Windows\System32\sysprep\sysprep.exe
* Under System Cleanup Action , select Enter System Out-of-Box-Experience (OOBE) . * Tick the Generalize checkbox if you need to change the computer's system identification number (SID). * Under Shutdown Options , select Shutdown .
Click OK . The virtual machine will now go through the sealing process and shut down automatically.
IV.
org.ovirt.engine.sdk.decorators.VM vm1 = api.getVMs().get(vmName); Payloads payloads = new Payloads(); Payload payload = new Payload(); payload.setType("floppy"); Files payloadFiles = new Files(); File payloadFile = new File(); payloadFile.setName("sysprep.xml"); payloadFile.setContent("<?xml version=\"1.0\" encoding=\"utf-8\"?> <unattend xmlns=\"urn:schemas-microsoft-com:unattend\"> FILE CONTENT "</unattend>"); payloadFiles.getFiles().add(payloadFile); payload.setFiles(payloadFiles); vm1.setPayloads(payloads); Action action = new Action(); vm1.start(action);
i guess you need to use CDATA tags in order to pass xml content. im not sure about CLI, but if you use curl it should look like this: (credit to James W. Mills for providing this info)
1) Create a payload file - Mine looked like this (payload.dat):
<vm> <payloads> <payload type='floppy'> <files> <file> <name>sysprep.inf</name> <content><![CDATA[ <THE RAW SYSPREP XML> ]]> </content> <type>BASE64</type> </file> </files> </payload> </payloads> </vm>
Where I have "<THE RAW SYSPREP XML>", I just dumped a full sysprep XML file. Just make sure it is in between the CDATA tags so it is escaped properly.
2) Upload the payload into the VM:
# curl -X PUT -H "Accept: application/xml" -H "Content-Type: application/xml" -k -u admin@internal:<pass> -d @payload.dat https:// <server>/api/vms/<vm-id>
The URL is simply the full path of the VM, which I obtained by parsing "api/vms"
3) Boot the machine - Assuming the sysprep information is correct, all the sysprep settings will be applied.
On Thu, Mar 27, 2014 at 3:52 PM, Itamar Heim < iheim@redhat.com > wrote:
On 03/27/2014 06:18 AM, Tejesh M wrote:
Can you guide me on sysprep with sample code & sysprep file?
just launch a windows VM, look at the generated sysprep file we pass to
the
VM via the floppy disk. then pass it as a payload as-is. then try to change what you want.
On Thu, Mar 27, 2014 at 3:16 PM, Itamar Heim < iheim@redhat.com <mailto: iheim@redhat.com >> wrote:
On 03/27/2014 05:33 AM, Tejesh M wrote:
Hi All,
I was doing google to see if i can set Hostname,Password & IP details for Windows server from RHEV-M. I got to know that we can create VM Payload & send that to Windows VM (installed with Cloud-init)
Refer this link http://www.cloudbase.it/cloud- __init-for-windows-instances/# __comment-9411 < http://www.cloudbase.it/ cloud-init-for-windows- instances/#comment-9411 >
Cloud-init expects Meta-data & User-Data file to be sent either via Config Drive or via HTTP. I'm trying to achive this via ConfigDrive (created using VM Payload).
note you can also just pass the full sysprep file as a payload yourself via the API, and set all these items in it.
But i'm wondering what should be the format of this two files (Meta-data & User-data). Have any1 tried this? If yes, would request to share sample for both the files with setting Hostname, Password & IP details.
just launch a linux VM and check the file we create?
Java code:
org.ovirt.engine.sdk.__ decorators.VM vm1 = api.getVMs().get(vmName); Payloads payloads = new Payloads(); Payload payload = new Payload(); payload.setType("cdrom");
Files payloadFiles = new Files(); File payloadFile = new File(); payloadFile.setName("meta-__ data.txt"); payloadFile.setContent("__ hostname:"+vmName); payloadFiles.getFiles().add(__ payloadFile); payload.setFiles(payloadFiles) __; vm1.setPayloads(payloads); Action action = new Action(); vm1.start(action);
-- Thanks & Regards Tejesh
-- Thanks & Regards Tejesh
-- Thanks & Regards Tejesh
_______________________________________________ Users mailing list Users@ovirt.org http://lists.ovirt.org/mailman/listinfo/users
-- Thanks & Regards Tejesh