in source/Tools Integration/CE-Integration/CE-automation-scripts/1-CEAgentInstall.py [0:0]
def main(arguments):
parser = argparse.ArgumentParser(
description=__doc__,
formatter_class=argparse.RawDescriptionHelpFormatter)
parser.add_argument('--Waveid', required=True)
parser.add_argument('--WindowsUser', default="")
args = parser.parse_args(arguments)
UserHOST = endpoints['UserApiUrl']
print("")
print("****************************")
print("*Login to Migration factory*")
print("****************************")
token = mfcommon.Factorylogin()
print("")
print("************************")
print("* Login to CloudEndure *")
print("************************")
r = CElogin(input('CE API Token: '), endpoint)
if r is not None and "ERROR" in r:
print(r)
print("****************************")
print("*** Getting Server List ***")
print("****************************")
Projects = ProjectList(args.Waveid, token, UserHOST, mfcommon.serverendpoint, mfcommon.appendpoint)
linux_machines = False
for project in Projects:
if (len(project['Windows']) + len(project['Linux']) == 0):
print("* CE Project " + project['ProjectName'] + " server list is empty *")
else:
print("* CE Project " + project['ProjectName'] + " *")
if len(project['Windows']) > 0:
print(" # Windows Server List #: ")
for s in project['Windows']:
print(" " + s['server_fqdn'])
if len(project['Linux']) > 0:
linux_machines = True
try:
print(" # Linux Server List #: ")
for s in project['Linux']:
print(" " + s['server_fqdn'])
except Exception as error:
print('ERROR', error)
sys.exit(4)
print("")
print("******************************************")
print("* Enter Linux Sudo username and password *")
print("******************************************")
user_name = ''
pass_key = ''
has_key = ''
if linux_machines:
user_name = input("Linux Username: ")
has_key = input("If you use a private key to login, press [Y] or if use password press [N]: ")
if has_key.lower() in 'y':
pass_key = input('Private Key file name: ')
else:
pass_key_first = getpass.getpass('Linux Password: ')
pass_key_second = getpass.getpass('Re-enter Password: ')
while(pass_key_first != pass_key_second):
print("Password mismatch, please try again!")
pass_key_first = getpass.getpass('Linux Password: ')
pass_key_second = getpass.getpass('Re-enter Password: ')
pass_key = pass_key_second
# Pass parameters to PowerShell
# First Parameter - $reinstall - "Yes" or "No"
# Second Parameter - $API_token - CloudEndure Install token
# Third Parameter - $Servername - Server name that matchs Wave Id and CloudEndure project name
print("")
print("*********************************")
print("* Installing CloudEndure Agents *")
print("*********************************")
print("")
server_status = {}
for project in Projects:
server_string = ""
if len(project['Windows']) > 0:
if args.WindowsUser != "":
windows_password = mfcommon.GetWindowsPassword()
for server in project['Windows']:
server_string = server_string + server['server_fqdn'] + ','
server_string = server_string[:-1]
if args.WindowsUser != "":
p_trustedhosts = subprocess.Popen(["powershell.exe", "Set-Item WSMan:\localhost\Client\TrustedHosts -Value '" + server['server_fqdn'] + "' -Concatenate -Force"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p = subprocess.Popen(["powershell.exe",
".\\1-Install-Windows.ps1", "No", project['InstallToken'], server_string, args.WindowsUser, windows_password],
stdout=sys.stdout)
else:
p = subprocess.Popen(["powershell.exe",
".\\1-Install-Windows.ps1", "No", project['InstallToken'], server_string],
stdout=sys.stdout)
p.communicate()
if len(project['Linux']) > 0:
for server in project['Linux']:
status = linuxpkg.install_cloud_endure(server['server_fqdn'], user_name,
pass_key,
has_key.lower() in 'y', project['InstallToken'])
server_status.update({server['server_fqdn']: status})
print("")
print("")
print("********************************")
print("*Checking Agent install results*")
print("********************************")
print("")
time.sleep(5)
AgentCheck(Projects,token, UserHOST)