Resource provisioning is allocating resources to clients over the Internet and plays a prominent role in cloud computing infrastructure-as-a-service (IaaS).The main issues of resource provisioning are meeting user demands like bandwidth, response time, throughput, availability, and so on. The cloud computing framework uses virtualization technology to provide on-demand access to computer system resources, specifically computation and storage. In cloud computing, computing resources are shared across another communication network using virtualization. However, the cloud computing mechanism cannot meet the needs of a large number of Internet of Things (IoT) services. To consider this, fog computing was introduced as a modified mechanism of the cloud paradigm by providing cloud services for the end devices. Fog computing is a decentralized computing model placed between devices, edges, data centers or the cloud. In this way, it helps to meet the demands initiated by IoT services, such as reduced latency, wide mobility coverage, and so on. Several solutions regarding resource allocation in fog computing are available in the research field, but such solutions have not achieved satisfactory results. Therefore, finding a solution by analyzing recent problems is open research. Therefore, this paper reviews different methods established for resource provisioning in fog computing using different parameters from 2015 to 2021 and introduces the limitations, advantages and future directions related to different resource provisioning techniques.