O Ansible é uma ferramenta de automação de código aberto usada para configurar servidores, instalar software e executar uma grande variedade de tarefas de TI a partir de uma localização central. É um mecanismo sem agente de um para muitos, onde todas as instruções são executadas a partir de uma máquina de controle que se comunica com clientes remotos em SSH, embora outros protocolos também sejam suportados.
Embora voltado para administradores de sistema com acesso privilegiado que rotineiramente executam tarefas como instalar e configurar aplicativos, o Ansible também pode ser usado por usuários não privilegiados. Por exemplo, um administrador de banco de dados que usa o ID de login do mysql pode usar o Ansible para criar bancos de dados, adicionar usuários e definir controles de nível de acesso.
Vamos passar por um exemplo muito simples, onde um administrador do sistema provisiona 100 servidores por dia e deve executar uma série de comandos Bash em cada um antes de distribuí-lo aos usuários.
Este é um exemplo simples, mas serve para ilustrar a facilidade com que os comandos podem ser especificados em arquivos yaml e executados em servidores remotos. Em um ambiente heterogêneo, as declarações condicionais podem ser adicionadas para que determinados comandos sejam executados somente em determinados servidores (por exemplo, “apenas executa comandos yum em sistemas que não são Ubuntu ou Debian“).
Um recurso importante disponível no Ansible é um playbook que descreve um estado desejado em um sistema de computador, de forma que um playbook pode ser executado diversas vezes em um servidor sem afetar seu estado. Se uma determinada tarefa já foi implementada (por exemplo, “usuário sysman já existe“), então Ansible simplesmente a ignora e continua a tarefa.
Tasks: uma tarefa é a menor unidade de trabalho. Pode ser uma ação como “Instalar um banco de dados“, “Instalar um servidor web“, “Criar uma regra de firewall” ou “Copiar este arquivo de configuração para esse servidor”.
Plays: um play é composto de tarefas. Por exemplo, o play: “Preparar um banco de dados para ser usado por um servidor web” é composto das tarefas:
Playbook: Um playbook é composto por um conjunto de plays. Um playbook poderia ser: “Prepare meu site com um backend de banco de dados”, e os plays seriam 1) Configurar o servidor de banco de dados; e 2) Configurar o servidor web.
Roles: as funções são usadas para salvar e organizar manuais e permitir compartilhar e reutilizar playbooks. Seguindo os exemplos anteriores, se você precisa configurar completamente um servidor web, pode usar uma função que outros escreveram e compartilharam para fazer exatamente isso. Uma vez que as funções são altamente configuráveis (se escritas corretamente), elas podem ser facilmente reutilizadas para atender a quaisquer requisitos de deploy.
Ansible Galaxy: O Ansible Galaxy é um repositório online onde as funções são carregadas para que possam ser compartilhadas com outras pessoas. Está integrado com o GitHub, de modo que os roles podem ser organizados em repositórios Git e, em seguida, compartilhados via Ansible Galaxy.
Essas definições e suas relações são descritas aqui:
Observe que esta é apenas uma maneira de organizar as tarefas que precisam ser executadas. Poderíamos ter dividido a instalação do banco de dados e do servidor web em diferentes playbooks e em diferentes roles. A maioria dos roles no Ansible Galaxy instala e configura aplicações individuais. Você pode ver exemplos para instalar o mysql e instalar o httpd.
A melhor fonte para aprender Ansible é, claro, consultar o site da documentação oficial do projeto. E, como de costume, a pesquisa online é sua amiga. Recomendamos, porém, começar com tarefas simples, como instalar aplicativos ou criar usuários. Quando estiver/se sentir pronto, siga as seguintes diretrizes:
O Ansible é uma ótima opção para implementar a automação em seu data center:
Fonte: Opensource.com
Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.