Howdy folks. I thought I’d share something I’ve put together and have been using for spinning up Ignition development VMs on my workstation. It uses the Vagrant product (which utilizes an underlying VM provider, such as VirtualBox).
I’ve setup the
Vagrantfile (which is the initialization and definition file for it) to automatically install Java, MySQL, and Ignition. It can make for a pretty awesome way to quickly spool up an independent image.
Also feel free to check out the Getting Started guide for Vagrant (from the link above) as well. By leveraging the Vagrant Share functionality, it can also be a quick way to share a Dev VM with someone to connect externally. Pretty neat technology!
Let me know what you think and if you have any feedback!
I tried this out and it worked. Cool. Would you consider adding the Database Module to it? It is great for development.
Yes, I think also adding a customized initial gateway would be helpful. For example, I could configure it to perform auto-backups to the shared
/vagrant folder so that gateway backups go back out to the host. Also, the base gateway could be configured with database connections and so forth that are pre-configured.
I’m also planning to add some branches to the repository for alternate Ignition versions so you can just clone a different branch and
vagrant up to have different instances of different versions (perhaps also different database combinations).
Thanks for the feedback, I think it works really well as well… The
vagrant share (which utilizes ngrok, another great thing for Ignition developers) feature really brings it together for collaboration as well. Super neat stuff…
ignition-vagrant updated for 7.9.4 with some additional features as well:
- Package Caching Integrated to reduce bandwidth after initial provisioning. When you
vagrant destroy and
vagrant up, it will now restore the package cache and no longer re-download things like Java8, MySQL, and Ignition.
- Ignition 7.9.4 now in the
master branch of the repository. Additional branches for 7.9.3 and 7.9.2 exist.
I’m going to explore some additional provisioning mechanisms (I need to determine if there are advantages of Chef/Puppet over the Shell-based provisioner) in future versions.
Let me know if anyone has any additional feedback, and feel free to report any issues to the GitHub page. Thanks and Happy Coding!
I am currently looking for Ansible/Puppet/Chef/Powershell solution or even Kubernetes solution.
If you need help, please ping me!
@mario.pereira, I’d definitely be interested in any collaboration efforts! At the moment, the Vagrant solution (which was my first venture into some more efficient [dev-centered] deployment mechanisms probably could use some refactoring. At the very least, the shell-based provisioner should probably be broken out into a separate file that is called from the
I do also maintain a Docker-based implementation here as well:
… which is auto-built to Docker Hub:
The Docker solution is where I’m focusing efforts more nowadays. I hope to provide some example Docker Compose setups as we get into the holidays to help folks create more complex dev deployments (with a database sidecar container as a simple example). Hopefully you can take a peek at things and turn on some light bulbs.
I am looking at docker part too. I am not even looking at it as Dev, but as production. There are companies doing edge/IoT computing with Kubernetes.
Example: https://medium.com/@cfatechblog/bare-metal-k8s-clustering-at-chick-fil-a-scale-7b0607bd3541 and https://medium.com/@cfatechblog/edge-computing-at-chick-fil-a-7d67242675e2
For those tracking this, I finally have gone back and given the Vagrant solution a bit of love. Here is the list of recent improvements:
- Broke out provisioning inline script to separate shell script files.
- Changed Java install to be OpenJDK 8 JRE.
- Corrected gateway restore behavior.
- Added environment variable driven configuration.
- Added separate supplemental MySQL provisioning script.
- Updated base gateway to version 7.9.9 with
Ignition-vagrant gateway name.
- Changed default CPU allocation to 2 from 1.
I like the current setup much more now. I’ve learned quite a bit since the first implementation of this solution in early 2017 (before the Docker stuff). I’ve been toying with multi-machine Vagrant solutions as well (to bring up multiple VM’s). It is more resource intensive than the multi-container solutions w/ Docker but it might still be useful to some folks.
Updated for Ignition 8.0.0!