Attach Fields to Entity during install? How can I automatically attach/create fields to an entity when I enable a module that provides entities?

For example, I want my Entity to have an Image field, and a handful of text, date, and number fields ready to roll.

I see field_create_field and field_create_instance, do I need to define them or can I use whats already defined as fields in Drupal and just give them labels and default values?
This is a just a follow up to @googletorp's answer, you can use the following code to export an existing field instance definition to PHP code which you can then alter as you need to for your new instance:

$entity_type = 'node';
$field_name = 'field_name';
$bundle_name = 'node_type';

$info_config = field_info_field($field_name);
$info_instance = field_info_instance($entity_type, $field_name, $bundle_name);
unset($info_config['id']);
unset($info_instance['id'], $info_instance['field_id']);
include_once DRUPAL_ROOT . '/includes/utility.inc';
$output = "field_create_field(" . drupal_var_export($info_config) . ");\n";
$output .= "field_create_instance(" . drupal_var_export($info_instance) . ");";
drupal_set_message("&lt;textarea rows=30 style=\"width: 100%;\"&gt;". $output .'&lt;/textarea&gt;');


That will give you both the field_create_field and field_create_instance code for the field.