diff --git a/server/deploy.py b/server/deploy.py index 54be87ec4fad39590aebc82ad66591abded04517..f9598fa40b9bf20db97e64bc13512f9cb0504a2d 100644 --- a/server/deploy.py +++ b/server/deploy.py @@ -3,15 +3,30 @@ from pexpect import pxssh from time import sleep import re -EXOSCALE_API_KEY = 'EXO7945e92f25a038a400b488aa' -EXOSCALE_API_SECRET = 'smRDVh7H0QO3w9068WlSq_JqBuPPdR7uaps6bSkLEWw' +EXOSCALE_API_KEY = 'EXO37ac257070da225b758e0f76' +EXOSCALE_API_SECRET = 'R7yBJ-XChI2rdkJ_1dOAeJJ1GK4N-jMsuhep4qEx16Q' # Initialise exoscale API exo = exoscale.Exoscale(api_key=EXOSCALE_API_KEY, api_secret=EXOSCALE_API_SECRET) -zone_decix = exo.compute.get_zone("de-fra-1") - +zone_gva2 = exo.compute.get_zone("ch-gva-2") security_group_default_ssh = exo.compute.get_security_group(name='default') +try: + security_group_ssh = exo.compute.create_security_group("ssh") + for rule in [ + exoscale.api.compute.SecurityGroupRule.ingress( + description="HTTP", + network_cidr="0.0.0.0/0", + port="22", + protocol="tcp", + ) + ]: + security_group_web.add_rule(rule) + +except Exoscale.api.APIException as err: + print(err) + + ### # Create instances ### @@ -19,16 +34,17 @@ security_group_default_ssh = exo.compute.get_security_group(name='default') nodes = [] for i in range(6): + instance_name = "freenet-" + str(i) new_instance = exo.compute.create_instance( - name="freenet-1" - zone=zone_decix, + name=instance_name, + zone=zone_gva2, type=exo.compute.get_instance_type("tiny"), template=list(exo.compute.list_instance_templates( - zone_decix, + zone_gva2, "Linux Ubuntu 18.04 LTS 64-bit"))[0], volume_size=10, security_groups=[security_group_default_ssh], - ssh_key=exo.compute.get_ssh_key("SWARM-cluster-key"), + ssh_key=exo.compute.get_ssh_key("exoscale.key"), user_data= """#cloud-config package_upgrade: true @@ -41,40 +57,25 @@ for i in range(6): """ ) nodes.append(new_instance) + print("Instance : " + instance_name + " created !") -print("SWARM master hosted at {}".format(swarm_master.ipv4_address)) -print("SWARM http hosted at {}".format(swarm_http_slave.ipv4_address)) -print("Swarm slave at {}".format(swarm_slave.ipv4_address)) - -print("Waiting 60 seconds for cloud-init completion..."); +print("Waiting 60 seconds for cloud-init completion...") sleep(60) -print("Setting up docker SWARM...") -try: - s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"}) - - s.login(swarm_master.ipv4_address, username='ubuntu', ssh_key='swarm_key') - s.sendline('docker swarm init') - s.prompt() +for instance in nodes: + try: + print("Connexion a l'instance: " + instance.name) + s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"}) + s.login(instance.ipv4_address, username='ubuntu', ssh_key='exoscale.key') + s.sendline('git clone ssh://git@ssh.hesge.ch:10572/jeremy.martinot/tp2_freenet_go_socket.git') + print("git cloned") + s.prompt() - haystack = s.before.decode('utf-8', 'ignore') - join_cmd = re.findall('docker swarm join --token.*$', haystack, re.MULTILINE)[0].strip() - - s.logout() - - s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"}) - s.login(swarm_slave.ipv4_address, username='ubuntu', ssh_key='swarm_key') - s.sendline(join_cmd) - s.prompt() - s.logout() - - s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"}) - s.login(swarm_http_slave.ipv4_address, username='ubuntu', ssh_key='swarm_key') - s.sendline(join_cmd) - s.prompt() - s.logout() - - print("Swarm created on all nodes.") -except pxssh.ExceptionPxssh as e: - print("pxssh failed on login.") - print(e) + haystack = s.before.decode('utf-8', 'ignore') + join_cmd = re.findall('docker swarm join --token.*$', haystack, re.MULTILINE)[0].strip() + + s.logout() + + except pxssh.ExceptionPxssh as e: + print("pxssh failed on login.") + print(e) \ No newline at end of file diff --git a/server/exoscale.key b/server/exoscale.key new file mode 100644 index 0000000000000000000000000000000000000000..85e8f947e6acb5da2641536e2f68af02d1c2e689 --- /dev/null +++ b/server/exoscale.key @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn +NhAAAAAwEAAQAAAgEAz/zpVHbxXm83EFOfqLVAteZmu1RdR1CxsOcAjI5+ea5iBe4lVvRk +4PszrR/hj9kwLWeomxFEuF7BRfpBUuwp43+Zv58PRrx6r9/W6ESwz7xhtNXt2+6K6kwViw +HPrRwfiZj7YnCA5l4G/D3wxAyiqxxOlHxVT9o1hxR7F7eayOEwIXEuT5ohI7m1p5dVv6xM +e69lPpk+0F29M3Axr0bLRw+dwLmEkhGeqBWjlEsoDtPQJTPCYpZNgg4H5JeJW+yrhOwQXU +m36myIfnvpy1sJ9JkCUfSToE6O63ppcg1zaMjnmGwihhnL6qgZ2vMjpEKt77gSWAZoBHIK +jhPqa+O4wq8gcnzddqfDM3Gq04csFZiCNXvZUzuDlaWWHcgETpi45yQOu2oOtipC589LT0 +jdwyLE+u8qqSE4rheRppkEEt8LLIch7TYXLnT8Mo2tvx1xJzarcenLJqCB/eVX2G0EhnPk +y5aXSQKaQFM6sLRDKc4dwUv5chsC9HUd7tRzJ9NCgdu860AV1iZcu7cnZnB6ILfdsejMxZ +CGfj1aMzMyEKILqoIXPrU4nTiHZZ2EiQXR6qm2/fl5ltIcsDxnvsASBoH/IcGPBa9brsk8 +2qAyUCCbWob8BufB8unroNaeXqTTrJs4ad70SUwU4QI3HYQKjNzqbFlvN4XuWJc8xV+8nY +8AAAdAyTR5Jsk0eSYAAAAHc3NoLXJzYQAAAgEAz/zpVHbxXm83EFOfqLVAteZmu1RdR1Cx +sOcAjI5+ea5iBe4lVvRk4PszrR/hj9kwLWeomxFEuF7BRfpBUuwp43+Zv58PRrx6r9/W6E +Swz7xhtNXt2+6K6kwViwHPrRwfiZj7YnCA5l4G/D3wxAyiqxxOlHxVT9o1hxR7F7eayOEw +IXEuT5ohI7m1p5dVv6xMe69lPpk+0F29M3Axr0bLRw+dwLmEkhGeqBWjlEsoDtPQJTPCYp +ZNgg4H5JeJW+yrhOwQXUm36myIfnvpy1sJ9JkCUfSToE6O63ppcg1zaMjnmGwihhnL6qgZ +2vMjpEKt77gSWAZoBHIKjhPqa+O4wq8gcnzddqfDM3Gq04csFZiCNXvZUzuDlaWWHcgETp +i45yQOu2oOtipC589LT0jdwyLE+u8qqSE4rheRppkEEt8LLIch7TYXLnT8Mo2tvx1xJzar +cenLJqCB/eVX2G0EhnPky5aXSQKaQFM6sLRDKc4dwUv5chsC9HUd7tRzJ9NCgdu860AV1i +Zcu7cnZnB6ILfdsejMxZCGfj1aMzMyEKILqoIXPrU4nTiHZZ2EiQXR6qm2/fl5ltIcsDxn +vsASBoH/IcGPBa9brsk82qAyUCCbWob8BufB8unroNaeXqTTrJs4ad70SUwU4QI3HYQKjN +zqbFlvN4XuWJc8xV+8nY8AAAADAQABAAACAFOWDqeVTZdoFrcHBGkmvqTbvXmXhA0/DspL +a9sRAR8hx98eP/9cJJaOHcx7vYiz/jqhKA95tyZpXj8jPdF3e7Yj98QcxmTlJmE8EgAyau +RxjsrAFuGGUmmqvhWpWq71WG9R/eUn1YW/UAtbUUFY2p7tt17RQO/ggBaTUozLivckGNW3 +yKbRCHR1E94QYbOwKOSkLoojyCyxH3JmqnEIgHVEf1+OrwqM7jgayiy0r5qV4VayIHLCeM +/Fl8J0bA13Zc77l/AFylX53DkIz4KcSbn1LAuHwTRxndpgzbO6WCFKbFjDTHScNWlOuWVW +xYIkEgb+8NBTcsYmlrtWoaVOVVee0J9XqArXUzebrVqMwUM4AgsWP3mu18LnwuG5xpvptw +oi3f8sAUCmnmV8sgQ8vXvTC0Q+cpT+BbKok1aVeGgVfdDH5HjRtbtCwfgsQjuC9BdjYvjQ +lAEo1uUooyiKynRIiO7dhQwg1GskQwaltDSCtP/xcuAu5GC7+0kAN7MJJDcVKCVmn2xtmQ +1pG3rJe+gpU9rLTP1SNw84PDhshrllUHUaqjtL/bJtFXYcKIRq+8zE9w8Aj7I3GHf+91oW +NBnXlWf1un/rkhsMdRMfcX01DN/l3m0HyixOj2nt0+peOJwceAvOF3UOPWLBelhL8dI9UY +iGK70cccKjvnLBOI4RAAABAF+y6qPbUqrWcVNnZlpcs+BGA+xIV09I3WK3JMFUSxkCOsji +jLIeaTLHtTEy0xx7hq7CYJScRFKGFsn1/ObGxy35TczClFb8NVDlfAY9jKSu5MHFe2HVqx +USjwuDgSCIpZ2g4VpuGEAhBUJRWAGwFSGhkjLMnutcsORCogA4mqtEoP2iGVzAQUdRA+ph +ECm9dDez8WDDDla4N48IAIh014dWNz+toaAw8mUbIMZcwmChXY1PFCRtwE3Ra2Mp5BMgd+ +WGmsiLWAEAUQ1bn/xqaRiQA3iCI13Tk/tC3Pp2D2w8JboeSbsCi+JTmh8Ifb2+YN/x/k88 +DXoV/hbs2Ft0ai0AAAEBAOotH705EmdQwNKR88r3KSYoYTndh9kflVj+lthVPhlvFQCbhu +W8wqDv0FJAcxE8MkZM1t6GLRZ6a8D4r6wit0cMVJhcduzZhsU94Iv/K9HDHP++3E0NWbFZ +ADhgKes9XNUQppxMKhCBCZy3ybwDItwfVjCrVbopUUX59dCcJwW7TaG9mPhfTW8PWTpZBR +4SBfe+tx7c6irISLtMeY2UEdQ3Xwu8M8PSzi9iF0/EC+S9FXylsgZGqdhhuquwq3LjKIVh +UiXbY+j4au9qJd/278PAtNB56uCP6565pBSNAMmvgNyf44SP7TEHIEWNPJEAnIQXYCAwPV +PMkwrCTmjUX8MAAAEBAONe/2OQEoiqIhMVeEbQFziLcqEYlc5ELlY3cTJH193VUiExmJx/ +tKuHMFdQo6kBasElZLlP1J9QNHmlqrHfG2y0WSuCBOmhroZETvPMUfeRjr1EhvWNjdM5kq +pNG3JpOFOa5pJ8ow7xCEjZ2MCWFYkaP+NZmm1JOW3kLo508AmpfkcvVO+V2Itkrtg9yhyD +a6peMi4wY/Lo3W8f+PlQGgTiNZ7pv8mOafsrdOUfNlrBrCumcAOeXFtPd5UxTSN7uxiFAq +827iv/jahUI5IscMO1S22gRV/AIYexqW2Lxp1aTpHdH93ApdfO0Tad7PDXTANUzv3k9aUq +vgLQ6GDXGkUAAAAIZXhvc2NhbGUBAgM= +-----END OPENSSH PRIVATE KEY----- diff --git a/server/exoscalekey.pub b/server/exoscalekey.pub new file mode 100644 index 0000000000000000000000000000000000000000..9612864196d3d7c3b68ccd6b4bf72d809c04f678 --- /dev/null +++ b/server/exoscalekey.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP/OlUdvFebzcQU5+otUC15ma7VF1HULGw5wCMjn55rmIF7iVW9GTg+zOtH+GP2TAtZ6ibEUS4XsFF+kFS7Cnjf5m/nw9GvHqv39boRLDPvGG01e3b7orqTBWLAc+tHB+JmPticIDmXgb8PfDEDKKrHE6UfFVP2jWHFHsXt5rI4TAhcS5PmiEjubWnl1W/rEx7r2U+mT7QXb0zcDGvRstHD53AuYSSEZ6oFaOUSygO09AlM8Jilk2CDgfkl4lb7KuE7BBdSbfqbIh+e+nLWwn0mQJR9JOgTo7remlyDXNoyOeYbCKGGcvqqBna8yOkQq3vuBJYBmgEcgqOE+pr47jCryByfN12p8MzcarThywVmII1e9lTO4OVpZYdyAROmLjnJA67ag62KkLnz0tPSN3DIsT67yqpITiuF5GmmQQS3wsshyHtNhcudPwyja2/HXEnNqtx6csmoIH95VfYbQSGc+TLlpdJAppAUzqwtEMpzh3BS/lyGwL0dR3u1HMn00KB27zrQBXWJly7tydmcHogt92x6MzFkIZ+PVozMzIQoguqghc+tTidOIdlnYSJBdHqqbb9+XmW0hywPGe+wBIGgf8hwY8Fr1uuyTzaoDJQIJtahvwG58Hy6eug1p5epNOsmzhp3vRJTBThAjcdhAqM3OpsWW83he5YlzzFX7ydjw== exoscale