xcat-core/xCAT-server/sbin/copycerts

113 lines
2.8 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env perl
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
BEGIN
{
$::XCATROOT =
$ENV{'XCATROOT'} ? $ENV{'XCATROOT'}
: -d '/opt/xcat' ? '/opt/xcat'
: '/usr';
}
use lib "$::XCATROOT/lib/perl";
use File::Basename;
use Getopt::Long;
use xCAT::MsgUtils;
use xCAT::Utils;
my $bname = basename($0);
#-----------------------------------------------------------------------------
=head1 copycerts
This updates the service node with files necessary to access the
database on the MasterNode and restarts the xcat daemon
run from servicenode postinstall script
=cut
#-----------------------------------------------------------------------------
&copyCertstoSN;
exit 0;
#-----------------------------------------------------------------------------
=head3 copyCertstoSN
Copy from the mounted /xcatpost/ directory to the MS /install/postscripts
directory the /install/postscripts/ca install/postscripts/cert and
/install/postscripts/_xcat into the local file system. These certificate are
needed for the postresql db setup for the service node to be able to access
the DB from the service node.
=cut
#-----------------------------------------------------------------------------
sub copyCertstoSN
{
my $rc = 0;
`touch /etc/xCATSN`;
# get roots home directory
my $homedir=xCAT::Utils->getHomeDir();
if (-d "/xcatpost/_xcat")
{
if (!(-d "$homedir/.xcat"))
{
`mkdir -p $homedir/.xcat`;
`chmod 0600 $homedir/.xcat`;
}
`cp -f -rp /xcatpost/_xcat/* $homedir/.xcat`;
`chmod 0600 $homedir/.xcat/*`;
}
else
{
xCAT::MsgUtils->message('S',
"/xcatpost/_xcat directory does not exist\n");
}
if (-d "/xcatpost/ca")
{
if (!(-d "/etc/xcat"))
{
mkdir("/etc/xcat", 0755);
}
if (!(-d "/etc/xcat/ca"))
{
mkdir("/etc/xcat/ca", 0755);
}
if (!(-d "/etc/xcat/ca/certs"))
{
mkdir("/etc/xcat/ca/certs", 0755);
}
`cp -f -rp /xcatpost/ca/* /etc/xcat/ca`;
`chmod 0600 /etc/xcat/ca/*`;
`chmod 0600 /etc/xcat/ca/certs/*`;
}
else
{
xCAT::MsgUtils->message('S', "/xcatpost/ca directory does not exist\n");
}
if (xCAT::Utils->isAIX()) {
if (-d "/xcatpost/cert")
{
if (!(-d "/etc/xcat"))
{
mkdir("/etc/xcat", 0755);
}
if (!(-d "/etc/xcat/cert"))
{
mkdir("/etc/xcat/cert", 0755);
}
`cp -f -rp /xcatpost/cert/* /etc/xcat/cert`;
`chmod 0600 /etc/xcat/cert/*`;
}
else
{
xCAT::MsgUtils->message('S', "/xcatpost/cert directory does not exist\n");
}
}
return $rc;
}