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";
}
}
}