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.
últimas postagens
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.
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.
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.
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.