docs: def _create_security_groups(self, role):
      """
      Create the security groups for a given role, including a group for the
      cluster if it doesn't exist.
      """
      self._check_role_name(role)
      security_group_names = self._get_all_group_names()
  
      cluster_group_name = self._get_cluster_group_name()
      if not cluster_group_name in security_group_names:
        self.ec2.create_security_group(cluster_group_name,
                                                 "Cluster (%s)" % (self._name))
        self.ec2.authorize_security_group(cluster_group_name,
                                                    cluster_group_name)
        # Allow SSH from anywhere
        self.ec2.authorize_security_group(cluster_group_name,
                                                    ip_protocol="tcp",
                                                    from_port=22, to_port=22,
                                                    cidr_ip="0.0.0.0/0")
  
      role_group_name = self._group_name_for_role(role)
      if not role_group_name in security_group_names:
        self.ec2.create_security_group(role_group_name,
          "Role %s (%s)" % (role, self._name))
      return