/vagrant-for-serverless-apps

Configuration files to set up a customizable Vagrant box to develop Serverless projects.

Primary LanguageShell

Serverless Development Environment on Vagrant

Configuration files to automatically set up a basic and customizable Vagrant box with the required tools to develop serverless projects.

Note: Currently, the provision scripts only install development tools used for AWS Lambda, but it can be customized with your own provision script.

Usage

0.- Install in your computer the software listed the prerequisites section. 1.- Clone the repository into your machine. 2.- Tweak the provider and options in the Vagrantfile. 3.- Run vagrant up and wait for the machine to be built. 4.- When the machine is ready, run vagrant ssh and cd /vagrant. 5.- Start a new project with the option --path ..

Prerequisites

If you use a provider other than Virtualbox, be sure to change the configuration on the Vagrantfile.

If you experience notice that delays on the synchronization of shared folders, a better option is to use SSHF or NFS.

Included Software

  • CentOS (with Development Tools): This Linux distribution is closer to the one used on AWS Lambda has providers for virtualbox, libvirt, hyperv and vmware.

  • Serverless: Framework to develop, provision and deploy serverless projects with support for AWS Lambda, Azure Functions, Google Cloud Functions, and IBM OpenWhisk.

  • Node.js 6.10 (with NVM): This runtime supports the Serverless framework and allows to write functions using just the JavaScript language. NVM manages the Node.js versions groups its packages.

  • Python 3.6 (with Miniconda): This distribution allows to build virtual development environments for Python application. With this, compiled Python dependencies can be easily included for Serverless Python Projects. (Python 2.7 is available on system).

  • AWS CLI: Tool to manage AWS services from the command line.

  • direnv: This environment switcher automatically loads or unloads values as environment variables depending on the current directory.