My Ubuntu Setup

My Ubuntu desktop 🖥 setup using Ansible

My Ubuntu Setup

My Ubuntu desktop 🖥 setup using Ansible

Overview

I keep experimenting with different operating systems and configurations on my personal laptop. While it’s fun, sometimes it becomes daunting to set everything up again after a clean install. Since Ubuntu is the Operating system that I use the most, I thought of setting up an automated way of setting up Ubuntu so that I don’t have to spend so much time on it every time.

Considering the solutions

  1. Bash scripting:
    1. One intuitive solution is using shell scripts to automate the whole setup.
    2. While this is useful for clean installations, it may happen that the script may fail at some time and you will have to run the whole script again, which is just a waste of time.
    3. Of course, you can comment out the part that is done, but that is just too much work.
  2. Ansible:
    1. Ansible is a powerful tool used in DevOps and automation of large software systems on the cloud
    2. We can write modular code in Ansible, which I found to be very helpful
    3. It’s very easy to understand, so is maintainable in case your project expands quickly

My setup

As mentioned earlier, I chose Ansible for this project. The complete code for this project can be found here: my-ubuntu-setup.

How to use

  1. Clone this project: git clone https://github.com/manparvesh/my-ubuntu-setup
  2. Edit the setup.yml file in this repository and un-comment all the items you want to install to your machine.
  3. While running on a fresh Ubuntu machine / VM, it’s better to run ./run-all after cloning this repository. If you have python, python-pip, ansible (>=2.8) and git installed, you can simply run ./run in the terminal.

Manual operations

Things that you can install using this script

  • deeplearning: deep learning setup for machines with GPUs
    • anaconda
    • nvdia GPU driver
    • tensorflow-gpu
    • keras
  • programming languages
    • java
    • Golang
  • Ubuntu aliases
  • text editors:
    • vim
    • atom
    • vscode
    • sublime text
    • notepad++
  • web browsers
    • google chrome
    • brave
  • cloud
    • docker
    • kubectl
    • minikube
    • microk8s
    • aws-cli
  • design
    • gravit-designer
    • darktable
    • gimp
    • inkscape
    • polarr
  • devtools
    • anaconda
    • nodejs
    • latex
    • postman
    • eclipse
    • git
    • jetbrains toolbox
    • jupyter
    • vagrant
  • themes and stuff
    • desktop themes
    • gnome desktop
  • utilities
    • gparted
    • shutter
    • skype
    • slack
    • snap store
    • virtualbox
  • enternainment
    • spotify
    • vlc
  • terminal
    • terminator
    • zsh
Avatar
Man Parvesh Singh Randhawa
MS CS student @ UT Dallas | Ex-Works Applications Singapore | IIT Guwahati

I am a Software Engineer interested in efficient large-scale distributed software systems.

Related

Next
Previous
comments powered by Disqus