In Cisco UCS there is a concept called a VMedia policy. This policy allows you to designate a bootable ISO image from another server via HTTP protocol and then have it available as a boot device for a Cisco UCS blade in UCSM. The following script is a rough framework in Perl that uses XML calls to configure such a policy. This script could be elaborated on to take inputs for some of the various variables that I pre-populate as an example of how the framework would work.
#!/usr/bin/perl use strict; use LWP::UserAgent; use HTTP::Request::Common; my $ucs = "https:///nuova"; # This is the URL to your UCSM IP my $username = "admin"; # Admin or other user to manager UCSM my $password = "password"; # Password for user above my $server = "ls-servername0001"; # Server name as defined in UCS convention my $server2 = "servername0001"; # Server name from friendly view my $policyname = "$server2"; # Policy name (derived from server name in this example) my $mntename = "$server2"; # Mount name (derived from server name in this example) my $type = "cdd"; # Policy mount type (in this case CD-ROM) my $image = "$server2.iso"; # Name of ISO image my $imagepath = "/"; # Image path within the URL of remote host serving ISO my $mountproto = "http"; # Protocol used to access ISO image my $remotehost = ""; # Remote host IP serving ISO image my $serverdn = "org-root/org-corp/$server"; # Server DN within UCSM ### Everything below remains constant### ### Get Cookie ### my ($xmlout,@xmlout,$cookie); my $login=""; my $userAgent = LWP::UserAgent->new; my $response = $userAgent->request(POST $ucs, Content_Type => 'text/xml', Content => $login); (@xmlout)= split(/\s+/,$response->content); ### Process Cookie ### foreach $xmlout (@xmlout) { if ($xmlout =~ /outCookie/) { $cookie=$xmlout; $cookie =~ s/outCookie=\"|\"//g; print "$cookie\n"; } } ###Setup Vmedia Policy String### my $crpolicy = ""; ###Configure Mount Policy Within Vmedia Policy String### my $mountentry = " "; ###Add Vmedia Policy String### my $addvmedia = " "; ###Execute Setup Vmedia Policy String### $response = $userAgent->request(POST $ucs, Content_Type => 'text/xml', Content => $crpolicy); (@xmlout)= split(/\s+/,$response->content); printxml(); print "\n"; ###Execute Configure Mount Policy Within Vmedia Policy String### $response = $userAgent->request(POST $ucs, Content_Type => 'text/xml', Content => $mountentry); (@xmlout)= split(/\s+/,$response->content); printxml(); print "\n"; ###Execute Add Vmedia Policy String### $response = $userAgent->request(POST $ucs, Content_Type => 'text/xml', Content => $addvmedia); (@xmlout)= split(/\s+/,$response->content); printxml(); print "\n"; exit; ###Parse XML response### sub printxml { foreach $xmlout (@xmlout) { if ($xmlout =~ /=/) { $xmlout =~ s/\'|\"|\/|\>//g; $xmlout =~ s/=/ = /g; print "$xmlout\n"; } } }