My Development Environment

2020, Jan 01    

Always changing, always adapting

As a Linux Administrator and IT Professional you run into many co workers and people who love talking about the development environment they have at home. Whether its a string of Raspberry Pi’s or old switches used to setup an in house security system, people can be very creative when they have the time and brain power.

Back in the days

Issues like moving, or finances had always gotten into play, hindering my physical space, storage, or dev environment. Those same co-workers would mention how they have their setup’s in closets so their wives or husbands or pets don’t get bothered by it. My bedroom was where the magic happened, at least in the technical perspective of things lol.

Over the years I have found ways to learn more about Linux, common IT trends, and adapt to new techniques that businesses are using to keep their business running. Now that it is a new year I have decided to write about my current setup and keep this a recurring thing to help me timestamp what I used to do back in the day and how things have changed in my life and career.

My environment has gone from a myriad of old laptops re-purposed with different versions of popular linux distro’s of 2012 (ie: Slackware, Ubuntu 12.04, BackTrack Linux). I used to manage 4 different HP or Dell laptops that would have BackTrack (now Kali Linux), Ubuntu (my daily driver), CentOS (for testing new linux software and bash scripting), and Slackware (because I love the challenge of building things from scratch). (2014-2016 had me) switch to managing cloud based environments on Digital Ocean or a cloud hosting provider. The ease of spinning up and managing Instances of Wordpress or custom Linux servers went from cables and shoe boxes of mouse’s keyboards, kvm switches, and small switches, to simple web based interfaces.

After moving and living the young bachelor life I learned that recreating these environments became somewhat of a hassle. I wanted to find an easier way to manage physical or virutal testing setups, code, configuration files, or packages. My curiosity on stack overflow and reddit lead me to git, github, and gitlab. Github became the defacto place to learn about how people created applications and reading code to learn different methods of creating my own web apps.

Evolving the dev environment

Gone are the days of using virtualbox and trying to manage storage space and iso’s for vm’s on working environments. Goodbye to the early saturday mornings at swap shops and flea markets looking for old computers to use for testing purposes.

Today’s day and age of development and testing has lead me to using Linux Academy (which has merged with A Cloud Guru as of 2020) to learn about docker, ansible, puppet, kubernetes, and setting up containerized development environment with different disto’s and platforms to keep my knowledge base sharp.

As a Linux/System administrator by trade I have found that the need to learn to code, or at least learn to read and understand code is equally as important as managing servers and network devices. On a daily basis i’m fingers deep in a terminal and using things like Ansible, Jenkins, and Monitoring Platforms like Nagios or Grafana.

My biggest concerns when creating dev environments is finding a way to get the setup on a new machine started with ease. Since 2010 my daily drivers have either been Debian based or a different variation of CentOS so I’ve created a few scripts to setup My New dev environment which has slimmed down to using specific technologies to stay sharp in my field.

The dev-env.sh script does the following

  • Install ansible
  • adds ansible user to sudo group
  • create Ansible ssh key
  • pull ansible playbooks for the development environment

The dev playground ansible playbook that is pulled from ansible galaxy does the following:

  • installs pyhthon based docker and docker related packages
  • creates a docker file with previously configured ansible ssh key if found
  • setup a docker container that ansible can penetrate.
  • connects to dockerhub
  • checks for docker dev container
  • if not found creates a dev container
  • pushes dev container to dockerhub

The docker_playground ansible playbook that is pulled from ansible galaxy does the following:

  • spins up dockerhub dev containers in dockerhub
  • sets up a docker network on the local host
  • opens firewall ports for containers on the local host
  • spins up monitoring containers that connect to each other

Reflecting on my years working with Linux and in the Sysadmin world I have seen so many changes thus far I’m excited to see what 2021 brings! Until then, feel free to message me via Twitter.