def main():
  connection = common.connect()
  region = common.prompt_region(connection)
  connection = common.connect(region)
  zone = common.prompt_zone(connection)
  security_group = common.prompt_security_group(connection)
  prefix = "{}-{}-".format(security_group, zone.split("-")[-1])
  name = _prompt_name(connection, prefix)
  instance_type = _prompt_instance_type()
  key_path = common.prompt_key_path()
  key_name = os.path.basename(key_path).split(".")[0]

  arguments = _LaunchArguments(instance_type=instance_type,
                               key_name=key_name,
                               name=name,
                               security_group=security_group,
                               zone=zone)

  env.host_string = _launch(connection, arguments, region)
  env.key_filename = key_path
  env.user = _USERNAME
  common.wait_until_remote_reachable()
  sudo("hostname {}".format(name))
  _update_system_files(name)
  _install()
  _update_installed_files()
  reboot()

  if instance_type.ephemeral_disk_count > 1:
    _create_ephemeral_raid(instance_type.ephemeral_disk_count)
  
  if _GIT_REPO:
    _clone()
Esempio n. 2
0
def main():
  connection = common.connect()

  instance = common.prompt_instance(connection,
    "Which instance to create a RAID for")
  if not instance:
    sys.exit("Instance not found.")

  key_path = common.get_pem(instance)
  print("Using key: {}".format(key_path))

  env.host_string = instance.public_dns_name
  env.key_filename = key_path
  env.user = _USERNAME

  number_of_disks = common.prompt_choice(
    "How many EBS volumes should be in the RAID array", range(1, 11), 4)
  size_of_disks = _prompt_size()
  level = common.prompt_choice("Level", _LEVELS, _DEFAULT_LEVEL)

  common.wait_until_remote_reachable()

  possible_device_paths = ["/dev/sd" + chr(letter)
    for letter in range(ord("f"), ord("z") + 1)]

  # Remove used device paths from the list
  used_devices = _get_existing_device_paths()

  for used_device in used_devices:
    used_device_no_trailing_digits = re.sub("\d+$", "", used_device)
    if used_device_no_trailing_digits in possible_device_paths:
      possible_device_paths.remove(used_device_no_trailing_digits)

  # Offer the user a prompt of which device path to beginning with
  prefix_device_path = common.prompt_choice(
    "Volumes should be attached with numbers appended to which device path",
    possible_device_paths[:9], 1)

  # Create the disks
  new_volume_device_strings = []
  for index in range(number_of_disks):
    device_string = prefix_device_path + str(index + 1)  # example: /dev/sdf2
    new_volume_device_strings.append(device_string)
    _create_ebs_volume(connection, instance, size_of_disks, device_string)

  # Figure out where to attach the new RAID
  possible_devices_for_raid = ["/dev/md" + str(index) for index in range(10)]
  for used_device in used_devices:
    if used_device in possible_devices_for_raid:
      possible_devices_for_raid.remove(used_device)
  raid_device_path = common.prompt_choice(
      "The RAID should be built at which device path",
        possible_devices_for_raid[:5], 1)

  print("Where do you want the RAID directory to be? [Default: /mnt/raid]")
  raid_directory_path = raw_input()
  if raid_directory_path == "":
    raid_directory_path = "/mnt/raid"

  _create_raid(new_volume_device_strings, level, raid_device_path,
               raid_directory_path)