add support for online mirrors during provision
This commit is contained in:
parent
8a4647387a
commit
e941049b9b
@ -136,7 +136,7 @@ sub subvars {
|
||||
# append preseed directive lines
|
||||
while (<PKGLISTFILE>) {
|
||||
chomp $_;
|
||||
if ((/^\s*#.*/ ) || ( $_ =~ /^-/ )){
|
||||
if ((/^\s*#.*/ ) || ( $_ =~ /^-/ )){
|
||||
next;
|
||||
}
|
||||
$pkglist .= " " . $_;
|
||||
@ -248,6 +248,7 @@ sub subvars {
|
||||
$inc =~ s/#CRYPT:([^:]+):([^:]+):([^#]+)#/crydb($1,$2,$3)/eg;
|
||||
$inc =~ s/#COMMAND:([^#]+)#/command($1)/eg;
|
||||
$inc =~ s/#KICKSTARTNET#/kickstartnetwork()/eg;
|
||||
$inc =~ s/#MIRRORSPEC#/mirrorspec()/eg;
|
||||
$inc =~ s/#YAST2NET#/yast2network()/eg;
|
||||
$inc =~ s/#ESXIPV6SETUP#/esxipv6setup()/eg;
|
||||
$inc =~ s/#WINTIMEZONE#/xCAT::TZUtils::get_wintimezone()/eg;
|
||||
@ -741,6 +742,60 @@ sub kickstartnetwork {
|
||||
return $line;
|
||||
}
|
||||
|
||||
sub mirrorspec{
|
||||
my $line;
|
||||
my $ostab = xCAT::Table->new('nodetype');
|
||||
my %oents = %{$ostab->getNodesAttribs([$node],[qw(os arch profile provmethod)])};
|
||||
my $ent = $oents{$node}->[0];
|
||||
my $imagename;
|
||||
if ($ent and $ent->{provmethod} and ($ent->{provmethod} ne 'install') and ($ent->{provmethod} ne 'netboot') and ($ent->{provmethod} ne 'statelite')) {
|
||||
$imagename=$ent->{provmethod};
|
||||
}
|
||||
unless($imagename){
|
||||
$tmplerr ="cannot determine the osimage for $node";
|
||||
return;
|
||||
}
|
||||
|
||||
my $pkgdirval;
|
||||
my $linuximagetab=xCAT::Table->new('linuximage', -create=>1);
|
||||
my $ref = $linuximagetab->getAttribs({imagename => $imagename}, 'pkgdir');
|
||||
if (($ref) && ($ref->{'pkgdir'})) {
|
||||
$pkgdirval=$ref->{'pkgdir'};
|
||||
}
|
||||
|
||||
my $pkgdir;
|
||||
my @mirrors;
|
||||
my @pkgdirlist=split(/,/,$pkgdirval);
|
||||
foreach (@pkgdirlist){
|
||||
if($_ =~ /^http|ssh/){
|
||||
push @mirrors,$_;
|
||||
}else{
|
||||
$pkgdir=$_;
|
||||
}
|
||||
}
|
||||
|
||||
if($pkgdir){
|
||||
$line .="
|
||||
d-i mirror/country string manual\n
|
||||
d-i mirror/protocol string http\n
|
||||
d-i mirror/http/directory string $pkgdir\n
|
||||
d-i mirror/http/proxy string\n";
|
||||
}
|
||||
|
||||
if(scalar @mirrors){
|
||||
my $index=0;
|
||||
foreach(@mirrors){
|
||||
$line .= "
|
||||
d-i apt-setup/local$index/repository string deb $_\n
|
||||
d-i apt-setup/local$index/comment string online mirror $index\n";
|
||||
$index=$index+1;
|
||||
}
|
||||
}
|
||||
|
||||
return $line;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub yast2network {
|
||||
my $line;
|
||||
|
@ -16,10 +16,7 @@ d-i netcfg/dhcp_timeout string 120
|
||||
### Mirror settings
|
||||
# If you select ftp, the mirror/country string does not need to be set.
|
||||
|
||||
d-i mirror/country string manual
|
||||
d-i mirror/protocol string http
|
||||
d-i mirror/http/directory string #INCLUDE_OSIMAGE_PKGDIR#
|
||||
d-i mirror/http/proxy string
|
||||
#MIRRORSPEC#
|
||||
|
||||
# Suite to install.
|
||||
#d-i mirror/suite string testing
|
||||
|
@ -16,10 +16,7 @@ d-i netcfg/dhcp_timeout string 120
|
||||
### Mirror settings
|
||||
# If you select ftp, the mirror/country string does not need to be set.
|
||||
|
||||
d-i mirror/country string manual
|
||||
d-i mirror/protocol string http
|
||||
d-i mirror/http/directory string #INCLUDE_OSIMAGE_PKGDIR#
|
||||
d-i mirror/http/proxy string
|
||||
#MIRRORSPEC#
|
||||
|
||||
# Suite to install.
|
||||
#d-i mirror/suite string testing
|
||||
|
Loading…
Reference in New Issue
Block a user