in scripts/cp4s_install.py [0:0]
def installOCP(self, icp4sInstallLogFile):
methodName = "installOCP"
TR.info(methodName," Start installation of Openshift Container Platform")
installConfigFile = "/ibm/installDir/install-config.yaml"
autoScalerFile = "/ibm/templates/cp4s/machine-autoscaler.yaml"
healthcheckFile = "/ibm/templates/cp4s/health-check.yaml"
icf_1az = "/ibm/installDir/install-config-1AZ.yaml"
icf_3az = "/ibm/installDir/install-config-3AZ.yaml"
asf_1az = "/ibm/templates/cp4s/machine-autoscaler-1AZ.yaml"
asf_3az = "/ibm/templates/cp4s/machine-autoscaler-3AZ.yaml"
hc_1az = "/ibm/templates/cp4s/health-check-1AZ.yaml"
hc_3az = "/ibm/templates/cp4s/health-check-3AZ.yaml"
if(len(self.zones)==1):
shutil.copyfile(icf_1az,installConfigFile)
shutil.copyfile(asf_1az,autoScalerFile)
shutil.copyfile(hc_1az, healthcheckFile)
else:
shutil.copyfile(icf_3az,installConfigFile)
shutil.copyfile(asf_3az,autoScalerFile)
shutil.copyfile(hc_3az, healthcheckFile)
self.updateTemplateFile(installConfigFile,'${az1}',self.zones[0])
self.updateTemplateFile(installConfigFile,'${baseDomain}',self.DomainName)
self.updateTemplateFile(installConfigFile,'${master-instance-type}',self.MasterInstanceType)
self.updateTemplateFile(installConfigFile,'${worker-instance-type}',self.ComputeInstanceType)
self.updateTemplateFile(installConfigFile,'${worker-instance-count}',self.NumberOfCompute)
self.updateTemplateFile(installConfigFile,'${master-instance-count}',self.NumberOfMaster)
self.updateTemplateFile(installConfigFile,'${region}',self.region)
self.updateTemplateFile(installConfigFile,'${subnet-1}',self.PrivateSubnet1ID)
self.updateTemplateFile(installConfigFile,'${subnet-2}',self.PublicSubnet1ID)
self.updateTemplateFile(installConfigFile,'${pullSecret}',self.readFileContent(self.pullSecret))
self.updateTemplateFile(installConfigFile,'${sshKey}',self.readFileContent("/root/.ssh/id_rsa.pub"))
self.updateTemplateFile(installConfigFile,'${clustername}',self.ClusterName)
self.updateTemplateFile(installConfigFile, '${FIPS}',self.EnableFips)
self.updateTemplateFile(installConfigFile, '${machine-cidr}', self.VPCCIDR)
self.updateTemplateFile(autoScalerFile, '${az1}', self.zones[0])
self.updateTemplateFile(healthcheckFile, '${az1}', self.zones[0])
if(len(self.zones)>1):
self.updateTemplateFile(installConfigFile,'${az2}',self.zones[1])
self.updateTemplateFile(installConfigFile,'${az3}',self.zones[2])
self.updateTemplateFile(installConfigFile,'${subnet-3}',self.PrivateSubnet2ID)
self.updateTemplateFile(installConfigFile,'${subnet-4}',self.PrivateSubnet3ID)
self.updateTemplateFile(installConfigFile,'${subnet-5}',self.PublicSubnet2ID)
self.updateTemplateFile(installConfigFile,'${subnet-6}',self.PublicSubnet3ID)
self.updateTemplateFile(autoScalerFile, '${az2}', self.zones[1])
self.updateTemplateFile(autoScalerFile, '${az3}', self.zones[2])
self.updateTemplateFile(healthcheckFile, '${az2}', self.zones[1])
self.updateTemplateFile(healthcheckFile, '${az3}', self.zones[2])
TR.info(methodName,"Initiating installation of Openshift Container Platform")
os.chmod("/ibm/openshift-install", stat.S_IEXEC)
install_ocp = "sudo ./openshift-install create cluster --dir=/ibm/installDir --log-level=debug"
TR.info(methodName,"Output File name: %s"%icp4sInstallLogFile)
try:
process = Popen(install_ocp,shell=True,stdout=icp4sInstallLogFile,stderr=icp4sInstallLogFile,close_fds=True)
stdoutdata,stderrdata=process.communicate()
except CalledProcessError as e:
TR.error(methodName, "ERROR return code: %s, Exception: %s" % (e.returncode, e), e)
raise e
TR.info(methodName,"Installation of Openshift Container Platform %s %s" %(stdoutdata,stderrdata))
time.sleep(30)
destDir = "/root/.kube"
if (not os.path.exists(destDir)):
os.makedirs(destDir)
shutil.copyfile("/ibm/installDir/auth/kubeconfig","/root/.kube/config")
self.ocpassword = self.readFileContent("/ibm/installDir/auth/kubeadmin-password").rstrip("\n\r")
self.logincmd = "oc login -u kubeadmin -p "+self.ocpassword
try:
call(self.logincmd, shell=True,stdout=icp4sInstallLogFile)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
get_clusterId = r"oc get machineset -n openshift-machine-api -o jsonpath='{.items[0].metadata.labels.machine\.openshift\.io/cluster-api-cluster}'"
TR.info(methodName,"get_clusterId %s"%get_clusterId)
try:
self.clusterID = check_output(['bash','-c',get_clusterId])
TR.info(methodName,"self.clusterID %s"%self.clusterID)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
self.updateTemplateFile(autoScalerFile, 'CLUSTERID', self.clusterID)
create_machine_as_cmd = "oc create -f "+autoScalerFile
TR.info(methodName,"Create of Machine auto scaler")
try:
retcode = check_output(['bash','-c', create_machine_as_cmd])
TR.info(methodName,"Created Machine auto scaler %s" %retcode)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
self.updateTemplateFile(healthcheckFile, 'CLUSTERID', self.clusterID)
create_healthcheck_cmd = "oc create -f "+healthcheckFile
TR.info(methodName,"Create of Health check")
try:
retcode = check_output(['bash','-c', create_healthcheck_cmd])
TR.info(methodName,"Created Health check %s" %retcode)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
TR.info(methodName,"Create OCP registry")
registry_mc = "/ibm/templates/cp4s/insecure-registry.yaml"
registries = "/ibm/templates/cp4s/registries.conf"
crio_conf = "/ibm/templates/cp4s/crio.conf"
crio_mc = "/ibm/templates/cp4s/crio-mc.yaml"
route = "default-route-openshift-image-registry.apps."+self.ClusterName+"."+self.DomainName
self.updateTemplateFile(registries, '${registry-route}', route)
config_data = base64.b64encode(self.readFileContent(registries))
self.updateTemplateFile(registry_mc, '${config-data}', config_data)
crio_config_data = base64.b64encode(self.readFileContent(crio_conf))
self.updateTemplateFile(crio_mc, '${crio-config-data}', crio_config_data)
route_cmd = "oc patch configs.imageregistry.operator.openshift.io/cluster --type merge -p '{\"spec\":{\"defaultRoute\":true,\"replicas\":"+self.NumberOfAZs+"}}'"
TR.info(methodName,"Creating route with command %s"%route_cmd)
try:
retcode = check_output(['bash','-c', route_cmd])
TR.info(methodName,"Created route with command %s returned %s"%(route_cmd,retcode))
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
destDir = "/etc/containers/"
if (not os.path.exists(destDir)):
os.makedirs(destDir)
shutil.copyfile(registries,"/etc/containers/registries.conf")
create_registry = "oc create -f "+registry_mc
create_crio_mc = "oc create -f "+crio_mc
TR.info(methodName,"Creating registry mc with command %s"%create_registry)
try:
reg_retcode = check_output(['bash','-c', create_registry])
TR.info(methodName,"Creating crio mc with command %s"%create_crio_mc)
crio_retcode = check_output(['bash','-c', create_crio_mc])
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
TR.info(methodName,"Created regsitry with command %s returned %s"%(create_registry,reg_retcode))
TR.info(methodName,"Created Crio mc with command %s returned %s"%(create_crio_mc,crio_retcode))
create_cluster_as_cmd = "oc create -f /ibm/templates/cp4s/cluster-autoscaler.yaml"
TR.info(methodName,"Create of Cluster auto scaler")
try:
retcode = check_output(['bash','-c', create_cluster_as_cmd])
TR.info(methodName,"Created Cluster auto scaler %s" %retcode)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
"""
"oc create -f ${local.ocptemplates}/wkc-sysctl-mc.yaml",
"oc create -f ${local.ocptemplates}/security-limits-mc.yaml",
"""
sysctl_cmd = "oc create -f /ibm/templates/cp4s/wkc-sysctl-mc.yaml"
TR.info(methodName,"Create SystemCtl Machine config")
try:
retcode = check_output(['bash','-c', sysctl_cmd])
TR.info(methodName,"Created SystemCtl Machine config %s" %retcode)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
secLimits_cmd = "oc create -f /ibm/templates/cp4s/security-limits-mc.yaml"
TR.info(methodName,"Create Security Limits Machine config")
try:
retcode = check_output(['bash','-c', secLimits_cmd])
TR.info(methodName,"Created Security Limits Machine config %s" %retcode)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
time.sleep(600)
oc_route_cmd = "oc get route console -n openshift-console | grep 'console' | awk '{print $2}'"
TR.info(methodName, "Get OC URL")
try:
self.openshiftURL = check_output(['bash','-c', oc_route_cmd])
TR.info(methodName, "OC URL retrieved %s"%self.openshiftURL)
except CalledProcessError as e:
TR.error(methodName,"command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
TR.info(methodName," Completed installation of Openshift Container Platform")