Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.91 KB | None | 0 0
  1. import boto3
  2.  
  3. # Config boto3
  4. region = ""
  5. aws_key_id = ""
  6. aws_secret_key = ""
  7.  
  8. # Connect AWS
  9. client = boto3.client('ec2', region_name=region, aws_access_key_id=aws_key_id, aws_secret_access_key=aws_secret_key)
  10. client_res = boto3.resource('ec2', region_name=region, aws_access_key_id=aws_key_id, aws_secret_access_key=aws_secret_key)
  11. running_instances = client_res.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
  12.  
  13.  
  14. class CPB:
  15. """ Crea para y borra instancias de AWS """
  16.  
  17. def __init__(self):
  18. self.menu()
  19.  
  20.  
  21. def create_info(self):
  22. """ Pide la informacion necesaria para crear una nueva instancia """
  23. image_id = raw_input("Introduce Windows, Ubuntu o una ami personalizada: ")
  24. if image_id.title() == "Windows":
  25. image_id = "ami-03a92a323b7e73da1"
  26.  
  27. elif image_id.title() == "Ubuntu":
  28. image_id = "ami-03746875d916becc0"
  29.  
  30. instancetype = raw_input("Introduce el tipo de instancia: ")
  31. if instancetype in ['t1.micro', 't2.nano', 't2.micro', 't2.small', 't2.medium', 't2.large', 't2.xlarge', 't2.2xlarge', 't3.nano', 't3.micro', 't3.small', 't3.medium', 't3.large', 't3.xlarge', 't3.2xlarge', 't3a.nano', 't3a.micro', 't3a.small', 't3a.medium', 't3a.large', 't3a.xlarge', 't3a.2xlarge', 'm1.small', 'm1.medium', 'm1.large', 'm1.xlarge', 'm3.medium', 'm3.large', 'm3.xlarge', 'm3.2xlarge', 'm4.large', 'm4.xlarge', 'm4.2xlarge', 'm4.4xlarge', 'm4.10xlarge', 'm4.16xlarge', 'm2.xlarge', 'm2.2xlarge', 'm2.4xlarge', 'cr1.8xlarge', 'r3.large', 'r3.xlarge', 'r3.2xlarge', 'r3.4xlarge', 'r3.8xlarge', 'r4.large', 'r4.xlarge', 'r4.2xlarge', 'r4.4xlarge', 'r4.8xlarge' , 'r4.16xlarge' , 'r5.large' , 'r5.xlarge' , 'r5.2xlarge' , 'r5.4xlarge' , 'r5.8xlarge' , 'r5.12xlarge' , 'r5.16xlarge' , 'r5.24xlarge' , 'r5.metal' , 'r5a.large' , 'r5a.xlarge' , 'r5a.2xlarge' , 'r5a.4xlarge' , 'r5a.8xlarge' , 'r5a.12xlarge' , 'r5a.16xlarge' , 'r5a.24xlarge' , 'r5d.large' , 'r5d.xlarge' , 'r5d.2xlarge' , 'r5d.4xlarge' , 'r5d.8xlarge' , 'r5d.12xlarge' , 'r5d.16xlarge' , 'r5d.24xlarge' , 'r5d.metal' , 'r5ad.large' , 'r5ad.xlarge' , 'r5ad.2xlarge' , 'r5ad.4xlarge' , 'r5ad.8xlarge' , 'r5ad.12xlarge' , 'r5ad.16xlarge' , 'r5ad.24xlarge' , 'x1.16xlarge' , 'x1.32xlarge' , 'x1e.xlarge' , 'x1e.2xlarge' , 'x1e.4xlarge' , 'x1e.8xlarge' , 'x1e.16xlarge' , 'x1e.32xlarge' , 'i2.xlarge' , 'i2.2xlarge' , 'i2.4xlarge' , 'i2.8xlarge' , 'i3.large' , 'i3.xlarge' , 'i3.2xlarge' , 'i3.4xlarge' , 'i3.8xlarge' , 'i3.16xlarge' , 'i3.metal' , 'i3en.large' , 'i3en.xlarge' , 'i3en.2xlarge' , 'i3en.3xlarge' , 'i3en.6xlarge' , 'i3en.12xlarge' , 'i3en.24xlarge' , 'hi1.4xlarge' , 'hs1.8xlarge' , 'c1.medium' , 'c1.xlarge' , 'c3.large' , 'c3.xlarge' , 'c3.2xlarge' , 'c3.4xlarge' , 'c3.8xlarge' , 'c4.large' , 'c4.xlarge' , 'c4.2xlarge' , 'c4.4xlarge' , 'c4.8xlarge' , 'c5.large' , 'c5.xlarge' , 'c5.2xlarge' , 'c5.4xlarge' , 'c5.9xlarge' , 'c5.12xlarge' , 'c5.18xlarge' , 'c5.24xlarge' , 'c5.metal' , 'c5d.large' , 'c5d.xlarge' , 'c5d.2xlarge' , 'c5d.4xlarge' , 'c5d.9xlarge' , 'c5d.18xlarge' , 'c5n.large' , 'c5n.xlarge' , 'c5n.2xlarge' , 'c5n.4xlarge' , 'c5n.9xlarge' , 'c5n.18xlarge' , 'cc1.4xlarge' , 'cc2.8xlarge' , 'g2.2xlarge' , 'g2.8xlarge' , 'g3.4xlarge' , 'g3.8xlarge' , 'g3.16xlarge' , 'g3s.xlarge' , 'cg1.4xlarge' , 'p2.xlarge' , 'p2.8xlarge' , 'p2.16xlarge' , 'p3.2xlarge' , 'p3.8xlarge' , 'p3.16xlarge' , 'p3dn.24xlarge' , 'd2.xlarge' , 'd2.2xlarge' , 'd2.4xlarge' , 'd2.8xlarge' , 'f1.2xlarge' , 'f1.4xlarge' , 'f1.16xlarge' , 'm5.large' , 'm5.xlarge' , 'm5.2xlarge' , 'm5.4xlarge' , 'm5.8xlarge' , 'm5.12xlarge' , 'm5.16xlarge' , 'm5.24xlarge' , 'm5.metal' , 'm5a.large' , 'm5a.xlarge' , 'm5a.2xlarge' , 'm5a.4xlarge' , 'm5a.8xlarge', 'm5a.12xlarge', 'm5a.16xlarge', 'm5a.24xlarge', 'm5d.large', 'm5d.xlarge', 'm5d.2xlarge', 'm5d.4xlarge', 'm5d.8xlarge', 'm5d.12xlarge', 'm5d.16xlarge', 'm5d.24xlarge', 'm5d.metal', 'm5ad.large', 'm5ad.xlarge', 'm5ad.2xlarge', 'm5ad.4xlarge', 'm5ad.8xlarge', 'm5ad.12xlarge', 'm5ad.16xlarge', 'm5ad.24xlarge', 'h1.2xlarge', 'h1.4xlarge', 'h1.8xlarge', 'h1.16xlarge', 'z1d.large', 'z1d.xlarge', 'z1d.2xlarge', 'z1d.3xlarge', 'z1d.6xlarge', 'z1d.12xlarge', 'z1d.metal', 'u-6tb1.metal', 'u-9tb1.metal', 'u-12tb1.metal', 'a1.medium', 'a1.large', 'a1.xlarge', 'a1.2xlarge', 'a1.4xlarge']:
  32. pass
  33. else:
  34. print "El tipo de instancia seleccionado es incorrecta"
  35. exit()
  36.  
  37. keyname = raw_input("Introduce el nombre de la key: ")
  38. maxcount = int(input("Introduce el numero maximo de instancias: "))
  39. mincount = int(input("Introduce el numero minimo de instancias: "))
  40.  
  41. self.crear(image_id, instancetype, keyname, maxcount, mincount)
  42.  
  43.  
  44. def crear(self, image_id, instancetype, keyname, maxcount, mincount):
  45. """ Crea una nueva instancia """
  46. client_res.create_instances(
  47. ImageId=image_id,
  48. MinCount=mincount,
  49. MaxCount=maxcount,
  50. InstanceType=instancetype,
  51. KeyName=keyname
  52. )
  53. self.ok = True
  54.  
  55.  
  56. def parar(self, id):
  57. """ Para una instancia mediante su id """
  58. client.stop_instances(InstanceIds=[id])
  59.  
  60.  
  61. def borrar(self, id):
  62. """ Borra una instancia mediante su id """
  63. try:
  64. client.terminate_instances(InstanceIds=[id])
  65. except:
  66. print "La instancia no se ha podido borrar"
  67.  
  68.  
  69. def menu(self):
  70. print "Introduce una opcion de las siguientes: "
  71. opcion = raw_input("Crear, parar o borrar\n> ")
  72.  
  73. if opcion.title() == "Crear":
  74. self.create_info()
  75.  
  76. if opcion.title() in ["Parar", "Borrar"]:
  77. id = raw_input("Introduce la id de la instancia a {}\n> ".format(opcion))
  78.  
  79. if opcion.title() == "Parar":
  80. self.parar(id)
  81.  
  82. elif opcion.title() == "Borrar":
  83. self.borrar(id)
  84. elif self.ok == True:
  85. pass
  86.  
  87. else:
  88. print "La opcion introducida es incorrecta"
  89.  
  90. if __name__ == "__main__":
  91. CPB()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement