Quem não trocou de notebook antes e teve que passar pelo penoso caminho de configurar tudo do zero novamente. Bom recentemente comprei um notebook novo para fazer um upgrade. No antigo eu tinha o Ubuntu 20.04 LTS instalado e a configuração foi bem tranquila. Neste novo equipamento ele já veio com o Windows 11 e não quero fazer a troca de SO, pelo menos nesse momento. Com isso resolvi dar uma chance ao WSL 2 e tive uma boa surpresa com o uso. Abaixo coloquei toda a configuração que fiz para tentar ter o melhor dos dois sistemas operacionais para trabalhar no dia a dia.
Habilite o WSL no Windows
Clique no botão iniciar e então digite painel de controle seguido de Enter. Será carregado o bom e velho painel de controle do Windows. Clique no ícone Programas e Recursos.

Será carregado a tela onde são exibidos todos os programas instalados. Clique na opção do lado esquerdo de Ativar ou Desativar Recursos do Windows.

Será carregada uma tela contendo os recursos disponíveis e os que estão ativos. Localize e marque a checkbox do item Subsistema do Windows para Linux.

Ao término da instalação ele solicitará que você reinicie o seu computador.

Agora que você tem o subsistema instalado será necessário a instalação de um pacote adicional chamado
Abra um prompt de comandos e confirme que a versão 2 está configurada como padrão
PS C:\> wsl --status
Distribuição Padrão: Ubuntu-20.04
Versão Padrão: 2
O Subsistema do Windows para Linux foi atualizado pela última vez em 31/05/2022
O kernel do Subsistema do Windows para Linux pode ser atualizado manualmente com o "wsl --update", mas as atualizações automáticas não podem ocorrer devido às configurações do sistema.
Para receber atualizações automáticas do kernel, habilite a configuração do Windows Update: "Receber atualizações para outros produtos da Microsoft ao atualizar o Windows".
Para obter mais informações, visite https://aka.ms/wsl2kernel.
Versão do kernel: 5.10.16
Instalando o Ubuntu 22.04
Localize e instale a versão mais recente LTS do Ubuntu na Store do Windows.

Inicie pela primeira vez o Ubuntu
Ao iniciar a distribuição pela primeira vez você precisa informar um nome de usuário e uma senha.
Como iremos utilizar o terminal ao invés da janela do Ubuntu pode fechar a janela pois a distribuição continuará em execução.
Windows Terminal
Caso você esteja utilizando a versão 11 do Windows o Windows Terminal já vem instalado por padrão. Caso contrário volte a loja do Windows localize e instale o Windows Terminal.

Depois de instalado abra ao Windows Terminal e selecione clique em v e selecione o Ubuntu 22.04

Para que o terminal tenha uma melhor aparência vamos instalar uma fonte que tenha suporte a glyphs (ícones). Para isso acesse o site NerdFonts e escolha uma fonte da sua preferência. No meu caso gosto de utilizar a Hacker Nerd Font, caso queira utilizá-la também o link para baixá-la é esse.
Depois de baixada descompacte e faça a instalação da fonte. Uma observação importante é que essa fonte tem suporte a mais de um sistema operacional então não é necessário instalarmos todas, apenas aquelas com o final no nome do arquivo “Windows Compatible”.
Depois da fonte configurada entre nas configurações do Windows Terminal clicando novamente em v. Localize e clique no perfil do Ubuntu no lado esquerdo da tela e em seguida clique em Aparência do lado direito.

Selecione a fonte que você instalou em Tipo de Fonte e em seguida cliquem em Salvar e feche a aba de configurações. Feche o terminal e abra novamente e em seguida abra um novo terminal do Ubuntu.
Instale o ZSH e troque o seu Shell padrão para ele
O bash é o padrão de quase todas as distribuições Linux e isso é por um bom motivo. Além de leve ele é extremamente versátil. Então você deve estar se perguntando porque razão estou falando para instalar um outro shell. A reposta é que o ZSH está se mostrando um terminal tão leve e versátil quanto o BASH com a vantagem de existirem diversos utilitários e personalizações disponíveis o que torna a experiência de quem tem que ficar horas no terminal mais eficiente e porque não, mais prazerosa.
Depois dessa singela declaração vamos a instalação do ZSH, para isso basta rodar os comandos abaixo:
sudo apt install zsh curl git vim wget
sudo chsh -s /usr/bin/zsh $USER
Feche o terminal e abra novamente. Você será questionado da criação de um arquivo de perfil. Pode escolher qualquer opção pois iremos configurá-la nos passos seguintes.
Instale o ohmyzsh e o PowerLevel10K
Ohmyzsh
O ohmyzsh é um framework que traz uma série de plugins, funções e temas para deixar o seu dia-a-dia mais fácil. Recomendo uma passagem pelo site para dar uma olhada na documentação pois aqui somente irei mostrar o básico da configuração.
Agora rode os comandos abaixo.
sh -c \
"$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Powerlevel 10K
O powerlevel10k é um tema para zsh com ênfase na flexibilidade, velocidade e experiencia out-of-the-box em tradução livre diretamente do site. Recomendo uma visita no github do projeto para conhecer um pouco mais.
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
vi ./zshrc
ZSH_THEME="powerlevel10k/powerlevel10k"</p>
source .zshrc
Configuração do Powerlevel
Ao executar o shell configurado com o powerlevel10k será aberto um wizard de configuração com alguma perguntas. Responda de acordo com as suas preferências. Abaixo coloco a lista de telas as opções que eu escolhi para o meu terminal.



















Instale o PIP para o Python3
sudo apt-get -y install python3-pip
Instale e configure o GO
Baixe a última versão para Linux a partir do site oficial ou:
wget https://dl.google.com/go/go1.18.2.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.18.2.linux-amd64.tar.gz
Inclusão no .zshrc
# GO binary PATH inclusion
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
Instale e configure o ASDF
git clone https://github.com/asdf-vm/asdf.git \
~/.asdf --branch v0.9.0
Adicione a linha abaixo no .zshrc
# asdf configuration
. $HOME/.asdf/asdf.sh
Carregue a nova configuração
source ./zshrc
Instale as SDKS e Compiladores com o ASDF:
#JDK
asdf plugin add java
asdf list-all java | grep openjdk
asdf install java openjdk-17.0.2
asdf global java openjdk-17.0.2
# Java Home adicionar ao .zshrc
. ~/.asdf/plugins/java/set-java-home.zsh
# Maven
asdf plugin add maven
asdf install maven 3.8.5
asdf global maven 3.8.5
# Groovy
asdf plugin add groovy
asdf install groovy 4.0.2
asdf global groovy 4.0.2
Crie suas chaves SSH
ssh-keygen -t RSA -b 2048 -C "seu-email"
Configure o GIT
git config --global user.name ""
git config --global user.email ""
Instale as ferramentas de automação e aprovisionamento
Ansible
sudo apt install -y software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt update
sudo apt install -y ansible
$ ansible --version
ansible [core 2.12.2]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/ivan/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
ansible collection location = /home/ivan/.ansible/collections:/usr/share/ansible/collections
executable location = /usr/bin/ansible
python version = 3.8.10 (default, Mar 15 2022, 12:22:08) [GCC 9.4.0]
jinja version = 2.10.1
libyaml = True
Terraform
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update && sudo apt-get install terraform
Para testar digite o comando abaixo
$ terraform --version
Terraform v1.1.7
on linux_amd64
Instale o Docker
# 1. Required dependencies
sudo apt update && sudo apt -y install apt-transport-https ca-certificates curl gnupg lsb-release
# 2. GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 3. Use stable repository for Docker
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. Install Docker
sudo apt update
sudo apt -y install docker-ce docker-ce-cli containerd.io
# 5. Add user to docker group
sudo groupadd docker
sudo usermod -aG docker $USER
------
sudo service docker start
* Starting Docker: docker
sudo service docker status
* Docker is running
docker run hello-world
❯ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Instale o Minikube e o configure para usar o Docker
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
$ minikube version
minikube version: v1.25.2
commit: 362d5fdc0a3dbee389b3d3f1034e8023e72bd3a7
minikube config set driver docker
Inicie o cluster para verificar o funcionamento com o minikube start:

Para para o cluster digite minikube stop

Instale o Kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Para testar digite o comando abaixo
❯ kubectl version
Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.5", GitCommit:"c285e781331a3785a7f436042c65c5641ce8a9e9", GitTreeState:"clean", BuildDate:"2022-03-16T15:58:47Z", GoVersion:"go1.17.8", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.4", GitCommit:"e6c093d87ea4cbb530a7b2ae91e54c0842d8308a", GitTreeState:"clean", BuildDate:"2022-03-06T21:32:53Z", GoVersion:"go1.17.7", Compiler:"gc", Platform:"linux/amd64"}
Instale os plugins kubens, kubectx
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
Instale o plugin FZF
sudo apt install fzf
Instale o k9s
Para utilizarmos o k9s no nosso Ubuntu o jeito mais fácil é instalar o brew linux e a partir dele fazer a instalação.
Instalando o Brew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> /home/ivan/.zprofile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
Testando o funcionamento do Brew.
sudo apt-get install build-essential
brew install gcc
Instalação do K9s
brew install derailed/k9s/k9s
Testando o K9s

Instale o Helm Chart
brew install helm
Agora vamos adicionar o repositório da Bitnami
helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "bitnami" chart repository
Update Complete. ⎈Happy Helming!⎈
Habilite os Plugins no Ohmyzsh
Agora vamos configurar alguns plugins que irão habilitar algumas funcionalidades adicionais assim como o Code completion no shell do zsh. Para isso edit novamente o arquivo .zshrc e localize a linha:
plugins=(git)
Por padrão somente está habilitado o plugin do Git. Vamos adicionar os seguintes plugins:
Plugin | Descrição |
ansible | |
asdf | |
docker | |
fzf | |
git | |
kubectl | |
kubectx | |
helm | |
minikube |
Com isso a linha ficará desta forma:
plugins=(ansible asdf docker fzf git kubectl kubectx helm minikube)
Conclusão
Chegamos ao final da nossa configuração! Agora você temos o nosso terminal mais responsivo e com os utilitários básicos que todo Arquiteto de DevOps teria para começar. Ainda existem os utilitários de cada provedor de nuvem que você provavelmente terá que adicionar. Não coloquei aqui para que o tutorial não ficasse mais extenso do que ficou.
Mas e ai gostaram? Comentem ai se faltou alguma coisa!