Ubuntu DevOps Toolkit (UDOT) is a highly opinionated Ubuntu all-purpose DevOps environment setup that can run bare-metal or in a virtual machine. From general code development, IaC, containerization, virtualization and testing tools, I've got you covered.
Why? Read about the motivation for this project.
In this document:
Ubuntu DevOps Toolkit is currently tested with bare-metal or virtualized using VMware Workstation Pro and VMware Fusion Pro, so Linux, macOS and Windows hosts can be used. I do plan to expand to and cover VirtualBox, VWware Workstation Pro and VMware Fusion Player.
Feature | Bare-metal | VMware Workstation Pro | VMware Fusion Pro | VWware Workstation Player | VMware Fusion Player | VirtualBox |
---|---|---|---|---|---|---|
Guest OS | N/A | Linux or Windows | macOS | Linux or Windows | macOS | Linux, macOS* or Windows |
Performance | best | very good | very good | TBC | TBC | good, for most things |
Snapshots | N/A | ✓ | ✓ | N/A | N/A | ✓ |
Limitations** | none | none | none | TBC | TBC | TBC |
(*) Apple M1 chips not supported. (**) UDOT offers a best-effort when it comes to testing, document and automation installation of the various tools but in some cases licensing or environment constraints may limit some functionality. I'll do my best to capture those here.
-
Create new virtual machine. Skip if using bare-metal.
Note Refer to Current Status to see what options currently covered.
Note From this point you have a standard Ubuntu 64-bit VM that is up-to-date and that tou can now install any (if not all) common DevOps utilities and toolchains that can run on Ubuntu. Take a snapshot at every stage (or at any time for that matter) and you have a stable and predictable environment to use.
Note All instructed
ansible-playbook
commands in this document assume that the minimal setup is complete and you run the commands inside your VM.
- Visual Studio Code or simply run
(cd playbooks && ansible-playbook -K -i hosts vscode.yml)
- MockServer
WIP
- Newman
WIP
(CLI runner for Postman collections) - newman-reporter-htmlextra (HTML reporter for Newman)
- Postman or simply run
(cd playbooks && ansible-playbook -K -i hosts postman.yml)
- .NET (pre-installed)
- Go
WIP
- Java
WIP
- Node.js (using nvm) or simply run
(cd playbooks && ansible-playbook -K -i hosts node.yml)
- Python
WIP
- Ruby (using rbenv)
WIP
- Rust or simply run
(cd playbooks && ansible-playbook -K -i hosts rust.yml)
- Docker and Docker Compose or simply run
(cd playbooks && ansible-playbook -K -i hosts docker.yml)
- VirtualBox or simply run
(cd playbooks && ansible-playbook -K -i hosts virtualbox.yml)
- Vagrant or simply run
(cd playbooks && ansible-playbook -K -i hosts vagrant.yml)
- Ansible is part of our minimal setup. Read Using Ansible for some crude usage/troubleshooting notes
- Chef.
WIP
- Terraform (bare).
WIP
- Terraform (using tfenv).
WIP
- Terragrunt (bare).
WIP
- Terragrunt (using tgenv).
WIP
Note I'm not affiliated with or sponsored by VMware.
As an engineer focused on building and maintaining tools that help engineers to be effective on their daily work I found that one of the biggest challenges is the amount of variation that exists across the various platforms. I've found Ubuntu to be a very well-round desktop solution that can replace most of my needs in a consistent manner.
I wanted a repeatable approach to work that can run on any host OS. Key aspects:
- A single thing/process to maintain and evolve
- Easy to automate using Ansible (or Bash or whatever you fancy)
- Checkout a single repo and use provided docs, scripts and playbooks and have peace of mind that I can get into a working state quickly
- Something that works for personal and corporate situations
- When using virtualization having the ability to snapshot at any moment and to enable to rollback in case I get in trouble - I want to be productive
Why I use VMware?
I've simply burned too many cycles with VirtualBox and other free solutions. Don't take me wrong there are many good options around there but I favour, for productivity, easy to use and adopt. I've learned over the years to appreciate VMware stability and I don't mind paying for a license of a software that just works and is predictable.
This work is licensed under Apache-2.0. See the LICENSE.txt file for more information.