Setting up rule to link CiviCRM contact with Drupal 7 account
First, make sure you have Drupal Rules module and CiviCRM Entity module installed and enabled.

Next, you must name your rule and select an event first and click save, then the condition and action options will be opened up to you.

When you get to the action part, you will see options for how to assign the username (such as "use email address" or "first name.last name", etc. and you can chose if the contact is emailed or not. If you chose for the contact to be emailed, they will be emailed a one-time link to log in and set a password.

Alternatively, you can import the rule instead, using this code: 

Go to Administration » Configuration » Workflow » Rules and click "+ Import Rule". Then, paste the following code in and click import:

{ "rules_create_drupal_account_from_civicrm_contact" : {
    "LABEL" : "Create Drupal Account from CiviCRM contact",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "civicrm" ],
    "ON" : { "civicrm_contact_edit" : [], "civicrm_contact_create" : [] },
    "IF" : [
      { "NOT civicrm_entity_user_exists" : { "civicrm_contact" : [ "civicrm_contact" ] } }
    ],
    "DO" : [
      { "civicrm_entity_action_create_user" : {
          "USING" : {
            "civicrm_contact" : [ "civicrm_contact" ],
            "is_active" : "1",
            "notify" : "1",
            "signin" : "0",
            "username_format" : "email"
          },
          "PROVIDE" : { "civicrm_user" : { "civicrm_user" : "Created Drupal User" } }
        }
      }
    ]
  }
}


Note: this code will do the following: Upon updating a contact record in the CiviCRM, it will check to see if the user has a Drupal account and if not, it will make one using the contacts email address. Then it will email them a one-time link to set their password. You can use this code and then edit the rule to tweak the activity.