Existing workload generation tools are not flexible enough to generate workloads that vary in three key dimensions relevant for making resource allocation decisions for Cloud Computing applications --- variations in the amount of load, variations in the mix of operations performed by clients (e.g. changes in reads vs. writes or customer usage-patterns) and variations in the popularity of the data accessed, i.e., data hotspots. In this paper we present Rain, a workload generation toolkit designed to address this lack of flexibility. Rain allows for the use of probability distributions as first class elements that describe variations in the three key dimensions of workload Its architecture supports multiple workload generation strategies (open-loop, closed loop and partly-open loop), easy extensibility via user-defined request generators targeting new systems/applications --- we demonstrate targeting the Olio Web 2.0 application. Rain also supports trace generation, which allows it to be used in conjunction with high-performance load-replay systems, e.g., httperf.