Escolar Documentos
Profissional Documentos
Cultura Documentos
do seu dia-a-dia
• Publicado por E-cogni Treinamentos
• Categorias DevOps
• Data 11/02/2017
• Comentários 0 comentário
Utilizar a Idempotência
Idempotência é a propriedade de certas operações que podem ser executadas várias vezes sem
alterar o resultado da aplicação inicial. Este conceito está presente na maioria dos módulos Ansible:
você especifica o estado final desejado e Ansible decide se a tarefa deve ser executada. Esse
princípio não é aplicado por padrão ao módulo de comando. Por padrão, se você tiver a tarefa
abaixo em seu playbook, ela sempre será executada:
- command: /usr/bin/create-database.sh
view raw gistfile1.txt hosted with ❤ by GitHub
A fim de alcançar idempotência, você poderia usar o atributo create. Quando estiver presente, o
Ansible executará somente a tarefa de comando se o arquivo especificado pelo padrão não existir.
Como alternativa, você pode usar remove, que só executará a tarefa se o arquivo especificado
existir.
Coletar informações
Se você já usou o Ansible, já pode perceber que a primeira coisa que Ansible faz quando executa
um playbook é algo como isto:
Ok: [servername]
view raw gistfile1.txt hosted with ❤ by GitHub
Isso acontece porque Ansible invoca a configuração do módulo especial antes de executar a
primeira tarefa. O módulo de configuração se conecta ao host e recolhe fatos para todos os tipos de
detalhes: endereço IP, espaço em disco, arquitetura da CPU, memória disponível e muito mais. Pode
ser útil invocar este módulo manualmente como uma maneira rápida de coletar informações sobre
seus hosts. Para isso basta executar o comando abaixo:
}
view raw gistfile1.txt hosted with ❤ by GitHub
- nginx
view raw gistfile1.txt hosted with ❤ by GitHub
Realizar correções de segurança
O Ansible é um sistema de gerenciamento de configuração incrivelmente poderoso e robusto.
Minha característica favorita? Sua simplicidade. Isso pode ser visto pelo quão fácil é para patch
servidores vulneráveis.
O playbook a seguir atualiza as variantes de Linux e Debian RedHat. Ele irá corrigir e reiniciar 25%
dos servidores de cada vez até que todos os hosts definidos no arquivo de inventário sejam
atualizados.
- hosts: all
gather_facts: yes
remote_user: craun
serial: "25%"
sudo: yes
tasks:
- name: Update OpenSSL and OpenSSH (Debian)
apt: name={{ item }}
state=latest
update_cache=yes
with_items:
- openssl
- openssh-client
- openssh-server
when: ansible_os_family == "Debian"
- name: Update OpenSSL and OpenSSH (RedHat)
yum: name={{ item }}
state=latest
update_cache=yes
with_items:
- openssl
- openssh-client
- openssh-server
when: ansible_os_family == "RedHat"
post_tasks:
- name: Reboot servers
command: reboot
view raw gistfile1.txt hosted with ❤ by GitHub
Automatizar mudanças
Imagine um projeto para implementar e remover uma solução de monitoramento simultaneamente.
Por exemplo: remover o Nagios e substituí-lo pelo Zabbix ou o Server Density. Isso torna-se
incrivelmente fácil com a ajuda do Ansible.
Uma das coisas mais positivas sobre Ansible é que é muito fácil escrever playbooks, e ainda ter
sempre espaço para melhorá-los. U Você pode continuamente revisar e fazer atualizações usando
conhecimento recém-descobertos e recursos adicionais que sejam lançados em versões mais
recentes do Ansible.
Todo o resto
O Ansible tem muitas outras funcionalidades interessantes e casos de uso além dos mencionados
artigo tais como: o provisionamento de infraestrutura em nuvem, implantação de código de
aplicativo, gerenciamento de chaves SSH, configuração de bancos de dados e configuração de
servidores web.
Já está usando um produto como Puppet ou SaltStack? Você ainda pode encontrar benefícios ao usar
o Ansible ao lado de outras ferramentas de gerenciamento de configuração. Ter um agente que
precisa ser reiniciado? Ótimo! Ansible é agentless, então você poderia executar algo como: