The following is the common integrated software engineering stack I use for my own projects. The following are some of its components:
- Virtual Machine Automation (Vagrant)
- Configuration Management (Ansible)
- Security Components and Settings
- Containerization (Docker)
- PerlBrew
- local::lib and cpanfile
- Deployment State Management (dest)
Install Vagrant and VirtualBox. Then clone or copy this repository. From the root of this repository, do the following:
cd vagrant/configs/tauntaun # or select a different configuration from the "configs" directory
vagrant up
This will run through the virtual machine build, installing Ansible, and executing the appropriate playbook/roles. As part of this, Docker will may be installed, and then possibly some number of containers will be built.
The Vagrantfile
s located within the configuration directories
~/vagrant/configs
are automatically generated via:
~/vagrant/build/build.pl
To make permanent changes to these Vagrantfile
s, edit either:
~/vagrant/build/settings.yml
~/vagrant/build/Vagrantfile.tt
Assuming you've selected the "tauntaun" configuration, once the virtual machine is built, you can rerun Ansible with the following:
sudo su -l ansible
cd /host/ansible
PYTHONUNBUFFERED=1 ANSIBLE_CONFIG=ansible.cfg LOCAL_DIR=/host/local SRC_DIR=/host \
ansible-playbook -l tauntaun -i inventories/all.ini playbooks/all.yml'
Assuming you've selected the "tauntaun" configuration, you can manually build Docker images with the following:
sudo su -
cd /host/docker/perl
docker build -t perl:1.0 .
To run an image manually:
docker run -it --name cperl perl:1.0 bash
To restart the container:
docker start -ai cperl