Configurar workstation usando Ansible

    Ansible é uma ferramenta de automação, pertencente à Red Hat, muito conhecida para gerenciar configurações de infraestrutura. É uma ferramenta sem agentes, ou seja, não requer instalação de software para gerenciamento dos nós. Ele se conecta aos seus nós e envia a eles pequenos programas chamados módulos. Os módulos são usados para realizar as tarefas de automação.

    Um exemplo interessante é usar o Ansible para configurar uma workstation (estação de trabalho). Imagine que sua workstation teve o sistema operacional reinstalado e você tem que instalar suas ferramentas e programas novamente. Para isso criei um playbook que vai evitar o trabalho manual de fazer as instalações de cada pacote. Os playbooks de Ansible consistem em um arquivo no formato yaml (.yml), um formato de fácil leitura e entendimento.

    Segue abaixo o conteúdo do playbook. Ao final desta postagem está o link para o repositório contendo as explicações sobre como aplicá-lo. Não se esqueça de sempre validar o seu arquivo yaml antes de qualquer uso. O formato yaml não aceita o uso de espaçamento em tab. Quando o espaçamento é feito com tab os erros aparecem na execução e aplicação que está utilizando o arquivo.

    Obs.: playbook testado em Linux Mint 19 (Ubunto Bionic based).

    ---
    - name: Preparing Workstation
      hosts: localhost
      connection: local
      tasks:
    
        - name: Installing Linux Apps
          become: true
          apt:
            name: ''
            install_recommends: yes
            state: present
          loop:
              - vim
              - htop
              - wget
              - python3-pip
              - make
              - git
              - flameshot
              - mlocate
              - cherrytree
    
        - block:
          - name: Install Virtualbox Oracle Key
            become: true
            apt_key:
              url: 'https://www.virtualbox.org/download/oracle_vbox_2016.asc'
              state: present
          - name: Add Virtualbox Oracle repository
            become: true
            apt_repository:
              repo: 'deb [arch=amd64] http://download.virtualbox.org/virtualbox/debian bionic contrib'
              state: present
              filename: virtualbox
          - name: Install Oracle Virtualbox
            become: true
            apt:
              name: virtualbox-6.1
    
        - block:
          - name: Installing Vagrant 2.2.15
            become: true
            unarchive:
              src: 'https://releases.hashicorp.com/vagrant/2.2.15/vagrant_2.2.15_linux_amd64.zip'
              dest: /usr/local/bin
              remote_src: yes
    
              
        - block:
          - name: Install Microsoft Key
            become: true
            apt_key:
              url: 'https://packages.microsoft.com/keys/microsoft.asc'
              state: present
          - name: Add Microsoft Teams Repository
            become: true
            apt_repository:
              repo: 'deb [arch=amd64] https://packages.microsoft.com/repos/ms-teams stable main'
              state: present
              filename: teams
          - name: Install Microsoft Teams
            become: true
            apt:
              name: teams
            
    
        - block: 
          - name: Install Brave Key
            become: true
            apt_key:
              url: 'https://brave-browser-apt-release.s3.brave.com/brave-core.asc'
              state: present
          - name: Install Brave Repository
            become: true
            apt_repository:
              repo: 'deb [arch=amd64] https://brave-browser-apt-release.s3.brave.com/ stable main'
              state: present
              filename: brave
          - name: Install Brave Browser
            become: true
            apt:
              name: brave-browser
    

    Instruções sobre este playbook:
    https://github.com/JubittLinux/config-workstation/

    Validação de estrutura yaml:
    http://www.yamllint.com/

    Ansible documentation by Red Hat:
    https://www.redhat.com/pt-br/topics/automation/learning-ansible-tutorial/