[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH OSSTEST v3 07/19] Debian: refactor preseeding of .ssh directories
Causes known_hosts to be consistently created as well as ~osstest/.ssh to be consistently populated (it previsouly wasn't for HVM guests). Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> --- v3: New patch --- Osstest/Debian.pm | 99 +++++++++++++++++++++++++++++---------------------- ts-debian-hvm-install | 5 ++- 2 files changed, 59 insertions(+), 45 deletions(-) diff --git a/Osstest/Debian.pm b/Osstest/Debian.pm index d1adb02..bdbe2f3 100644 --- a/Osstest/Debian.pm +++ b/Osstest/Debian.pm @@ -35,6 +35,7 @@ BEGIN { %preseed_cmds preseed_base preseed_create + preseed_ssh preseed_hook_command preseed_hook_installscript preseed_hook_cmds di_installcmdline_core ); @@ -427,6 +428,60 @@ sub di_installcmdline_core ($$;@) { return @cl; } +sub preseed_ssh ($$) { + my ($ho,$sfx) = @_; + + my $authkeys_url= create_webfile($ho, "authkeys$sfx", authorized_keys()); + + my $hostkeyfile= "$c{OverlayLocal}/etc/ssh/ssh_host_rsa_key.pub"; + my $hostkey= get_filecontents($hostkeyfile); + chomp($hostkey); $hostkey.="\n"; + my $knownhosts= ''; + + my $hostsq= $dbh_tests->prepare(<<END); + SELECT val FROM runvars + WHERE flight=? AND name LIKE '%host' + GROUP BY val +END + $hostsq->execute($flight); + while (my ($node) = $hostsq->fetchrow_array()) { + my $longname= "$node.$c{TestHostDomain}"; + my (@hostent)= gethostbyname($longname); + if (!@hostent) { + logm("skipping host key for nonexistent host $longname"); + next; + } + my $specs= join ',', $longname, $node, map { + join '.', unpack 'W4', $_; + } @hostent[4..$#hostent]; + logm("adding host key for $specs"); + $knownhosts.= "$specs ".$hostkey; + } + $hostsq->finish(); + + $knownhosts.= "localhost,127.0.0.1 ".$hostkey; + my $knownhosts_url= create_webfile($ho, "known_hosts$sfx", $knownhosts); + + preseed_hook_command($ho, 'late_command', $sfx, <<END); +#!/bin/sh +set -ex + +r=/target/root +cd \$r + +umask 022 +mkdir .ssh +wget -O .ssh/authorized_keys '$authkeys_url' +wget -O .ssh/known_hosts '$knownhosts_url' + +u=osstest +h=/home/\$u +mkdir /target\$h/.ssh +cp .ssh/authorized_keys /target\$h/.ssh +chroot /target chown -R \$u.\$u \$h/.ssh +END +} + sub preseed_base ($$;@) { my ($suite,$extra_packages,%xopts) = @_; @@ -504,40 +559,9 @@ END sub preseed_create ($$;@) { my ($ho, $sfx, %xopts) = @_; - my $authkeys_url= create_webfile($ho, "authkeys$sfx", authorized_keys()); - - my $hostkeyfile= "$c{OverlayLocal}/etc/ssh/ssh_host_rsa_key.pub"; - my $hostkey= get_filecontents($hostkeyfile); - chomp($hostkey); $hostkey.="\n"; - my $knownhosts= ''; - my $disk= $xopts{DiskDevice} || '/dev/sda'; my $suite= $xopts{Suite} || $c{DebianSuite}; - my $hostsq= $dbh_tests->prepare(<<END); - SELECT val FROM runvars - WHERE flight=? AND name LIKE '%host' - GROUP BY val -END - $hostsq->execute($flight); - while (my ($node) = $hostsq->fetchrow_array()) { - my $longname= "$node.$c{TestHostDomain}"; - my (@hostent)= gethostbyname($longname); - if (!@hostent) { - logm("skipping host key for nonexistent host $longname"); - next; - } - my $specs= join ',', $longname, $node, map { - join '.', unpack 'W4', $_; - } @hostent[4..$#hostent]; - logm("adding host key for $specs"); - $knownhosts.= "$specs ".$hostkey; - } - $hostsq->finish(); - - $knownhosts.= "localhost,127.0.0.1 ".$hostkey; - my $knownhosts_url= create_webfile($ho, "known_hosts$sfx", $knownhosts); - my $overlays= ''; my $create_overlay= sub { my ($srcdir, $tfilename) = @_; @@ -602,6 +626,8 @@ ls -l /dev/sd* true END + preseed_ssh($ho, $sfx); + preseed_hook_command($ho, 'late_command', $sfx, <<END); #!/bin/sh set -ex @@ -609,17 +635,6 @@ set -ex r=/target/root cd \$r -umask 022 -mkdir .ssh -wget -O .ssh/authorized_keys '$authkeys_url' -wget -O .ssh/known_hosts '$knownhosts_url' - -u=osstest -h=/home/\$u -mkdir /target\$h/.ssh -cp .ssh/authorized_keys /target\$h/.ssh -chroot /target chown -R \$u.\$u \$h/.ssh - echo FANCYTTY=0 >> /target/etc/lsb-base-logging.sh $overlays diff --git a/ts-debian-hvm-install b/ts-debian-hvm-install index 878083f..d2bb6f8 100755 --- a/ts-debian-hvm-install +++ b/ts-debian-hvm-install @@ -47,7 +47,6 @@ our $toolstack= toolstack()->{Command}; sub preseed () { my $preseed_file = preseed_base('wheezy','',()); - my $authkeys = join('\\n', split(/\n/, authorized_keys())); $preseed_file .= (<<END); d-i netcfg/get_hostname string $gn @@ -77,10 +76,10 @@ d-i apt-setup/cdrom/set-first boolean false d-i preseed/late_command string \\ in-target mkdir -p /boot/efi/EFI/boot; \\ in-target cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi ;\\ - in-target mkdir -p /root/.ssh; \\ - in-target sh -c "echo -e '$authkeys'> /root/.ssh/authorized_keys"; END + preseed_ssh($ho,''); + $preseed_file .= preseed_hook_cmds(); return $preseed_file; -- 2.1.1 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |