file::append "$export/etc/rc.local", $_;
} ( '/srv/sysadmin-cookbook/recepies/amt/serial-console.sh' );
- pxelinux::config_for_ip( $ip, qq{
-
-default nfsroot
-label nfsroot
- kernel $ip/vmlinuz
- append initrd=$ip/initrd.img root=/dev/nfs nfsroot=$server->{ip}:$export ro ip=dhcp
+ pxelinux::config_ip_boot( $ip, "$export/boot", "root=/dev/nfs nfsroot=$server->{ip}:$export ro ip=dhcp" );
-label old
- kernel $ip/vmlinuz.old
- append initrd=$ip/initrd.img.old root=/dev/nfs nfsroot=$server->{ip}:$export ro ip=dhcp
-
- });
}
sub openvz {
confess "$ip not IP" unless $ip =~ m{^\d+\.\d+\.\d+\.\d+$};
$path_prefix = (caller(1))[3];
- $path_prefix =~ s{config::}{} || die "caller isn't package config !";
+ $path_prefix = (caller(2))[3] unless $path_prefix =~ m{config::};
+ $path_prefix =~ s{config::}{} || warn "# caller isn't package config !";
$path_prefix .= '/';
warn "# $ip $path_prefix";
return $config;
}
+sub config_ip_boot {
+ my ( $ip, $boot, $append ) = @_;
+
+ my $default;
+ my $config;
+
+ foreach my $kernel ( glob "$boot/vmlinuz*" ) {
+ my $ver = $1 if $kernel =~ m{vmlinuz(.+)};
+ $default ||= $ver;
+
+ $config .= qq{
+
+label boot$ver
+ kernel $ip/boot/vmlinuz$ver
+ append initrd=$ip/boot/initrd.img$ver $append
+
+ };
+ }
+
+ config_for_ip( $ip, qq{
+
+default boot$default
+prompt 5
+
+$config
+
+ });
+
+}
+
1;
--- /dev/null
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+use autodie;
+
+use Test::More tests => 2;
+
+use_ok 'pxelinux';
+
+ok( my $config = pxelinux::config_ip_boot( '127.0.0.1', '/boot', 'fake' ), 'file' );
+diag $config;