Enterprise Linux DevOps Workstation Setup Check List

From Bonus Bits
Jump to: navigation, search

Description

This article is my own personal checklist for setting up an Amazon Linux v2 Amazon Workspaces as a DevOps workstation.


Environment

  • Amazon Workspace
    • Amazon Linux v2 (Like CentOS, RHEL, Fedora)
      • MATE Desktop (Default)


Desktop Applications

Configuration Management

  1. ChefDK (Download)

Cloud

  1. AWS CLI (Yum)
  2. Terraform (Snap)

Collaboration

  1. Slack

Code Editors

  1. Atom (Snap)
  2. IntelliJ IDEA Ultimate (Snap)
    1. Add Plugins
      1. AWS CloudFormation
      2. .ignore
      3. Chef
      4. Kubernetes
      5. HashiCorp Terraform
    2. Recommended Settings
      1. View > Appearance > Toolbar
      2. Settings > Appearance & Behavior > Appearance > Use custom font > Noto Sans - 13
      3. Settings > Editor > Font > Fira Code Medium
        1. Or figure out how to get Menlo font installed
      4. Settings > Editor > General > Soft-wrap files *
      5. Settings > Editor > General > Editor Tabs > Mark modified (*)
  3. VIM (Yum)

File Share

  1. Filezilla (Snap)

Fonts

  1. Jetbrains Mono

Software Development Kits (SDKs)

  1. Gradle (SDKMan)
  2. Groovy (SDKMan OR Snap)
  3. Java
  4. Maven (SDKMan)
  5. Ruby (Installed with ChefDK)

Source Control

  1. Git (Yum)
  2. Git LFS (Yum)

Terminal

  1. Tilix (Download)

Virtual Machine

  1. Docker (Yum)
  2. Kubernetes (Snap)

Web

  1. Chrome (Download)
    wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm -P $HOME/Downloads &&
    sudo yum install $HOME/Downloads/google-chrome-stable_current_x86_64.rpm
    


Setup Custom Bash Configurations


Setup Script (Example)

# TODO: figure out sudo script or in script

# User Variables
echo 'INFO: Setting Script Variables'
#idea_version=2019.3
chefdk_version=4.7.113
tilix_version=1.9.3
groovy_version=2.5.8
gradle_version=5.6.4

#echo "INFO: Jetbrains Idea Version    (${idea_version})"
echo "INFO: ChefDK Version            (${chefdk_version})"
echo "INFO: Tilix Version             (${tilix_version})"
echo "INFO: Groovy Version            (${groovy_version})"
echo "INFO: Gradle Version            (${gradle_version})"

# EPEL
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# set /etc/repo.d/epel.repo - priority = 15

# Snap
https://github.com/albuild/snap
wget https://github.com/albuild/snap/releases/download/v0.1.0/snap-confine-2.36.3-0.amzn2.x86_64.rpm -P $HOME/Downloads/snap
wget https://github.com/albuild/snap/releases/download/v0.1.0/snapd-2.36.3-0.amzn2.x86_64.rpm -P $HOME/Downloads/snap
sudo yum -y install $HOME/Downloads/snap/*.rpm
sudo systemctl enable --now snapd.socket
# System
# sudo ln -s /var/lib/snapd/desktop/applications/ /usr/share/applications/snap 
# User
ln -s /var/lib/snapd/desktop/applications/ ~/.local/share/applications/snap

# Jetbrains IntelliJ Idea
#echo 'INFO: Downloading Jetbrains IntelliJ'
#wget https://download.jetbrains.com/idea/ideaIU-${idea_version}.tar.gz -P $HOME/Downloads
#mkdir -p $HOME/Applications/idea
#tar -xzvf $HOME/Downloads/ideaIU-${idea_version}.tar.gz --strip-components 1 -C $HOME/Applications/idea
sudo snap install intellij-idea-ultimate --classic

# Packages
echo 'INFO: Installing Favorite Packages'
sudo yum update -y
sudo yum install htop nmap tree -y

# Tilix
wget https://github.com/gnunn1/tilix/releases/download/${tilix_version}/tilix.zip -P $HOME/Downloads
sudo unzip $HOME/Downloads/tilix.zip -d /
sudo glib-compile-schemas /usr/share/glib-2.0/schemas/

# Fonts
sudo mkdir -p /usr/share/fonts/truetype/ttf-monaco
sudo wget http://www.gringod.com/wp-upload/software/Fonts/Monaco_Linux.ttf -O - > \
/usr/share/fonts/truetype/ttf-monaco/Monaco_Linux.ttf
sudo fc-cache

# Git
echo 'INFO: Setting up Git configuration'
read -p "Enter Git Username Name: " git_username
git config --global user.name "$git_username"
read -p "Enter Git Email: " git_email
git config --global user.email "$git_email"
#git config --global credential.helper cache
git config --global credential.helper store
git config --global fetch.recurseSubmodules yes
git config --global core.editor vim
git config --global --list

# Git-LFS
sudo yum install git-lfs -y

# ChefDK
echo 'INFO: Installing ChefDK'
sudo curl -L https://omnitruck.chef.io/install.sh | sudo bash -s -- -P chefdk -v ${chefdk_version}
echo 'eval "$(chef shell-init bash)"' >> $HOME/.bash

# BASH Profiles
echo 'INFO: Setting up BASH profile'
mkdir -p $HOME/Development/bonusbits
mkdir -p $HOME/bin
git clone https://github.com/bonusbits/devops_bash_configs.git $HOME/Development/bonusbits/devops_bash_configs
git -C $HOME/Development/bonusbits/devops_bash_configs pull --recurse-submodules
git submodule foreach git -C $HOME/Development/bonusbits/devops_bash_configs pull origin master
cp -R $HOME/Development/bonusbits/devops_bash_configs/profile.d/ $HOME/profile.d
mv $HOME/profile.d/.bash_profile $HOME/.bash_profile
echo 'if [ -f "$HOME/.bash_profile" ]; then . $HOME/.bash_profile; fi' >> $HOME/.bashrc
rm -f $HOME/profile.d/clients/client1.sh

# AWS CLI
# cp -R $HOME/Development/bonusbits/devops_bash_configs/aws/.aws $HOME/.aws
aws configure

# VIM
cp -R $HOME/Development/bonusbits/devops_bash_configs/vim/.vimrc $HOME

# Jetbrains IntelliJ Idea
#echo 'INFO: Downloading Jetbrains IntelliJ'
#wget https://download.jetbrains.com/idea/ideaIU-${idea_version}.tar.gz -P $HOME/Downloads
#mkdir -p $HOME/Applications/idea
#tar -xzvf $HOME/Downloads/ideaIU-${idea_version}.tar.gz --strip-components 1 -C $HOME/Applications/idea
sudo snap install intellij-idea-ultimate --classic

# Atom
#wget https://atom.io/download/rpm -C $HOME/Downloads
sudo snap install atom --classic

# Terraform
# wget https://www.terraform.io/downloads.html -C $HOME/Downloads
# unzip $HOME/Downloads/terraform_0.12.18_linux_amd64.zip -d $HOME/Downloads/terraform
# sudo cp -f $HOME/Downloads/terraform /var/lib/snapd/snap/bin/terraform
sudo snap install terraform

# Docker
# sudo snap install docker (snapd not new enough)
sudo yum install docker -y

# Kubernetes
sudo snap install kubectl --classic

# SDKMan
curl -s "https://get.sdkman.io" | bash
#sdk install gradle ${gradle_version}

# Groovy
sdk install groovy ${groovy_version}
#sudo snap install groovy --classic

# Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm -P $HOME/Downloads
sudo yum install $HOME/Downloads/google-chrome-stable_current_x86_64.rpm

# Filezilla
sudo snap install filezilla --edge


Related Articles

Configure AWS CLI on Linux


Sources