xcat-core/xCAT-server/sbin/copycerts

114 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 and mysql 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/_xcat/* /etc/xcat/cert`;
`chmod 0600 /etc/xcat/cert/*`;
}
else
{
xCAT::MsgUtils->message('S', "/xcatpost/cert directory does not exist\n");
}
}
return $rc;
}