To use this function add it to the class library file named ChefService.ts
GitHub Repository: https://github.com/SimonSparksUK/Orchestrator
Filename: ChefService.ts
Description: Orchestrator Function to remove a virtual machines from Chef using Knife via SSH
Function ChefDecomission
publicChefDecomission(arrHostName:string[],strUsername:string,strPassword:string):void{
letstrChefFQDN:string="chef.cloudbuildtools.com";
try{
letobjSSHSession:SSHSession=newSSHSession(strChefFQDN,strUsername);
objSSHSession.connectWithPassword(strPassword)
arrHostName.forEach((strHostName:string)=>{
objSSHSession.executeCommand("knife node delete"+strHostName.toLowerCase()+".cloudbuildtools.com -y -c /home/cloudbuildtools/client.rb -u vcoflow -k /home/cloudbuildtools/client.pem",true);
this.objLogger.info("SSH Executing: knife node delete '"+strHostName.toLowerCase()+".cloudbuildtools.com'");
letstrErrorText:string=objSSHSession.error;
letintExitCode:number=objSSHSession.exitCode;
letstrOutputText:string=objSSHSession.output;
strOutputText=strOutputText.replace(/\n/,"");
if (intExitCode==0){
this.objLogger.info("SSH Output:"+strOutputText);
}
else{
if (strErrorText.search(/404 \"Not Found\"/)>-1){
this.objLogger.info("SSH Error: Node"+strHostName.toLowerCase()+".cloudbuildtools.com not found on Chef Server");
}
else{
this.objLogger.info(strErrorText);
}
}
objSSHSession.executeCommand("knife client delete"+strHostName.toLowerCase()+".cloudbuildtools.com -y -c /home/cloudbuildtools/client.rb -u vcoflow -k /home/cloudbuildtools/client.pem",true);
this.objLogger.info("SSH Executing: knife client delete '"+strHostName.toLowerCase()+".cloudbuildtools.com'");
strErrorText=objSSHSession.error;
intExitCode=objSSHSession.exitCode;
strOutputText=objSSHSession.output;
strOutputText=strOutputText.replace(/\n/,"");
if (intExitCode==0){
this.objLogger.info("SSH Output:"+strOutputText);
}
else{
if (strErrorText.search(/404 \"Not Found\"/)>-1){
this.objLogger.info("SSH Error: Client"+strHostName.toLowerCase()+".cloudbuildtools.com not found on Chef Server");
}
else{
this.objLogger.info(strErrorText);
}
}
});
objSSHSession.disconnect();
objSSHSession=null;
}
catch (strException){
this.objLogger.info("Exception:"+strException);
this.objLogger.info("Unable to SSH to"+strChefFQDN+" to run the 'knife' commands to clean up Chef");
}
}Discover more from Cloud Build Tools
Subscribe to get the latest posts sent to your email.
