def provision
      start_time = Time.now

      # Perform the main launch work
      launch_all_nodes()

      # Add metadata tags to each instance
      # tagging early as some nodes take longer
      # to initialize and terminate before it has
      # a chance to provision
      add_tags()

      # adding the correct security groups to the
      # network interface, as during the `launch_all_nodes()`
      # step they never get assigned, although they get created
      modify_network_interface()

      wait_for_status_netdev()

      # Grab the ip addresses and dns from EC2 for each instance to use for ssh
      populate_dns()

      #enable root if user is not root
      enable_root_on_hosts()

      # Set the hostname for each box
      set_hostnames()

      # Configure /etc/hosts on each host
      configure_hosts()

      @logger.notify("aws-sdk: Provisioning complete in #{Time.now - start_time} seconds")

      nil #void
    end
def provision
      start_time = Time.now

      # Perform the main launch work
      launch_all_nodes()

      # Add metadata tags to each instance
      # tagging early as some nodes take longer
      # to initialize and terminate before it has
      # a chance to provision
      add_tags()

      # adding the correct security groups to the
      # network interface, as during the `launch_all_nodes()`
      # step they never get assigned, although they get created
      modify_network_interface()

      wait_for_status_netdev()

      # Grab the ip addresses and dns from EC2 for each instance to use for ssh
      populate_dns()

      #enable root if user is not root
      enable_root_on_hosts()

      # Set the hostname for each box
      set_hostnames()

      # Configure /etc/hosts on each host
      configure_hosts()

      @logger.notify("aws-sdk: Provisioning complete in #{Time.now - start_time} seconds")

      nil #void
    end
Provision all hosts on EC2 using the Aws::EC2 API

 @return [void]