7 tarefas diárias do Sysadmin para automatizar com o Ansible

Ansible, um projeto gratuito e de código aberto baseado em Python da Red Hat, é uma plataforma popular de gerenciamento de configuração e automação de TI.

É multiplataforma e pode funcionar com a maioria dos sistemas operacionais modernos, incluindo Linux, Windows e Mac. Ele suporta uma linguagem declarativa escrita em YAML ou YAML Ain’t Markup Language para descrever a configuração do sistema.

O Ansible, juntamente com outras plataformas modernas de gerenciamento de configuração, revolucionou a automação de TI e os padrões do setor. As ferramentas de gerenciamento de configuração se tornaram parte do conjunto de ferramentas DevOps e são uma parte inseparável de qualquer ciclo de vida de processo de TI moderno. Isso é aplicável a qualquer ambiente de infraestrutura moderno, seja construído em um ambiente local, híbrido ou em nuvem. Não apenas para DevOps, mas o Ansible também pode ajudar a automatizar muitas tarefas do dia-a-dia feitas por um administrador do sistema.

Uma das vantagens de usar o Ansible é que ele é sem agente e não precisa de muito para começar além do acesso SSH à máquina de destino e a versão suportada do Python, que já vem instalada por padrão na maioria dos sistemas operacionais modernos. Além disso, por ser uma ferramenta leve, pode ser implantada e usada com um legado para sistemas inovadores.

Usos do Ansible

Orquestração

O Ansible é uma ferramenta de escolha para orquestrar várias tarefas de administração e implantação do sistema. Os playbooks permitem usar os mesmos fluxos de trabalho de orquestração em diferentes projetos e os dados de configuração baseados em YAML permitem armazenar e controlar a versão de sua infraestrutura no repositório Git ou em qualquer plataforma de controle de versão compatível.

Implantação do aplicativo

Seja um aplicativo de código simples de poucas linhas ou uma implantação pesada de várias camadas, o Ansible torna possível automatizar o ciclo de vida de implantação de aplicativos de ponta a ponta.

  Como remover hiperlinks sublinhados no PowerPoint

Segurança e Conformidade

O Ansible também pode ajudar a garantir que seus sistemas estejam protegidos de acordo com as diretrizes da sua organização e em conformidade com os padrões do setor. Ele pode ser executado em milhares de servidores, gerar uma auditoria e corrigir essas falhas de segurança, dando ao administrador controle total do ambiente.

Vejamos agora algumas das tarefas comuns do Sysadmin que você pode automatizar com o Ansible.

Copiar arquivos de um sistema local ou remoto

Como Administrador do Sistema, é comum copiar arquivos de um diretório para outro. Os arquivos de configuração geralmente precisam ser copiados para servidores remotos ou, às vezes, precisamos mover arquivos de um local remoto para outro.

O módulo de cópia do Ansible pode ajudá-lo a realizar essas tarefas em um playbook.

É uma tarefa de rotina para um administrador de sistema saber o status dos servidores gerenciados e executar ações predefinidas de acordo com as políticas da organização. Uma dessas tarefas é saber o tempo de atividade do servidor. Com o Ansible, podemos facilmente buscar valores de tempo de atividade e imprimi-los juntos. Um exemplo para copiar a configuração ntp de um servidor local para um remoto usando o módulo de cópia é mostrado abaixo:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Copy a new ntp configuration file and back up the original, if it differs
      copy:
        src: ./ntp.conf
        dest: /etc/ntp.conf
        owner: root
        group: root
        mode: '0644'
        backup: yes

Configurar tarefas cron adicionais

A configuração de trabalhos agendados para realizar tarefas de rotina faz parte do gerenciamento de qualquer servidor. Você pode agendar backups automáticos, patches, auditorias, etc., durante certas horas do dia ou mês automaticamente e deixando tempo produtivo para seu uso.

O cron é uma dessas ferramentas no Linux que oferece suporte ao agendamento, e o Ansible pode ajudá-lo a adicionar ou modificar esses trabalhos. Como exemplo, o manual abaixo demonstra como você pode definir um trabalho rsync como root em alguns ou em todos os seus servidores facilmente usando o Ansible.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Deploy cron job
      cron:
        name: "Set rsync job"
        user: root
        minute: "5"
        hour: "4"
        job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"

Gerenciar discos e sistemas de arquivos

O Ansible pode ser usado para gerenciar discos, layouts de partição, sistemas de arquivos e montagens, incluindo /etc/fstab em servidores Linux. Diferentes módulos Ansible tornam isso possível. Aqui está um exemplo que cria uma partição em um disco de 100 GB, a formata com o sistema de arquivos ext4, cria um novo diretório para montar a partição e, finalmente, a monta em um determinado diretório. Uma entrada em /etc/fstab também é criada por meio de montagem temporária ou permanente, dependendo das opções do módulo.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Create a partition
      parted:
        device: /dev/sdb
        number: 1
        part_end: "100%"
        state: present
    - name: Format new partition
      filesystem:
        fstype: ext4
        dev: /dev/sdb1
    - name: Create mount directory
      file:
        path: /data
        state: directory
    - name: Mount partition
      mount:
        path: /data
        src: /dev/sdb1
        fstype: ext4
        state: mounted

Colete logs do servidor

Manter os logs em um local conveniente às vezes é essencial para segurança, auditoria e análise. O Ansible permite a coleta de logs de diferentes servidores em seu ambiente corporativo e os mantém facilmente em seu local definido. Aqui está o manual para conseguir isso:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
  
    - name: Find logs
      find:
        paths: /var/log/
        patterns: '*.log'
        recurse: yes
      register: _logs

    - name: Fetch logs
      fetch:
        src: "{{ item.path }}"
        dest: /tmp/logs
      with_items: "{{ _logs.files }}"

Instalar ou remover pacotes e software

Os pacotes geralmente precisam ser instalados nas solicitações do usuário ou como parte das compilações iniciais do servidor. Também podemos precisar remover certos pacotes que não são mais necessários ou que possuem alguns bugs críticos, etc. O Ansible permite que você instale ou remova pacotes facilmente sem o incômodo de ir a cada servidor e executar comandos manuais. Aqui está um exemplo demonstrando a instalação e remoção de um pacote para servidores Linux baseados em Ubuntu e RHEL/CentOS.

---
- hosts: ubuntu
  gather_facts: no
  tasks:
    - name: Install lsof utility
      apt:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      apt:
        pkg: arp-scan
        state: absent
      sudo: yes
      
 ---
- hosts: centos
  gather_facts: no
  tasks:
    - name: Install lsof utility
      yum:
        pkg: lsof
        state: latest
      sudo: yes
    - name: Remove ARP Scan utility
      yum:
        pkg: arp-scan
        state: absent
      sudo: yes

Gerenciando usuários

Usuários e grupos formam a estrutura básica em torno da qual sistemas baseados em Unix/Linux gerenciam acesso e permissões. Em uma grande organização, gerenciar usuários e grupos pode ser um grande desafio, apesar da automação para dar suporte ao ambiente.

  Como salvar uma página de um PDF

Com o Ansible, o administrador do sistema tem uma excelente ferramenta para criar, modificar e excluir usuários e grupos com todas as diferentes possibilidades suportadas no SO.

Aqui está um exemplo simples que mostra a criação e exclusão de usuários e grupos usando o Ansible. Após a execução deste manual, os servidores de destino terão o grupo A e o grupo B criados com determinados GIDs, enquanto o usuário1 será removido, se presente. Um novo usuário sem shell será criado como user2 com determinado UID, grupos atribuídos e senha bloqueada.

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - group:
        gid: 12310
        name: groupA
        state: present
    - group:
        gid: 12311
        name: groupB
        state: present
    - user:
        name: user1
        state: absent
    - user:
        name: user2
        uid: 12427
        shell: /bin/false
        password_lock: yes
        groups: groupA, groupB

Gerenciando serviços

Os serviços são daemons de processo executados em segundo plano e servem algum serviço como sshd fornecendo conectividade SSH etc. Usando o Ansible, você pode gerenciar serviços do sistema e do usuário, como iniciá-los, pará-los e reiniciá-los. Aqui está um exemplo de playbook para demonstrar isso:

---
- hosts: all
  gather_facts: no
  become: yes
  tasks:
    - name: Restart ssh daemon
      service:
        name: ssh
        state: restarted
    - name: Restart sssd daemon
      service:
        name: sssd
        state: stopped
    - name: Restart httpd daemon
      service:
        name: httpd
        state: started

No exemplo acima, o serviço SSH será reiniciado enquanto o serviço SSSD é interrompido em seguida. O daemon httpd é iniciado no final. Como o Ansible é idempotente, qualquer serviço que já esteja iniciado ou parado não será alterado enquanto a reinicialização sempre muda o estado do serviço. Lembre-se de verificar o nome do serviço, pois diferentes distribuições Linux usam outros nomes, mesmo para o mesmo serviço, como ssh e sshd.

  Como fazer upload de vários arquivos para o Dropbox de uma só vez usando um iPhone ou iPad

Resumo 👨‍💻

O Ansible facilita a vida de um administrador de sistema, permitindo que você execute tarefas repetidas e demoradas de maneira automatizada e reduzindo erros e esforços humanos. Além disso, permitirá o armazenamento de dados de configuração em um repositório de código central como o Git, permitindo que vários usuários colaborem e revisem cada atividade.

Para ler mais sobre o Ansible e seu extenso conjunto de módulos, consulte seu documentação.