Como instalar e configurar o Ansible no Ubuntu 18.04

PostedNovember 7, 2019 2.9k views UbuntuConfiguration ManagementAnsibleUbuntu 18.04

Introdução

Os sistemas de gerenciamento de configuração são projetados para otimizar o processo de controle de grandes números de servidores, para administradores e equipes de operações. Isso permite que você controle sistemas diferentes de forma automática a partir de um local central.

Embora existam muitas ferramentas de gerenciamento de configuração populares disponíveis para sistemas Linux, como o Chef e o Puppet, essas são muitas vezes mais complexas do que aquilo que as pessoas desejam ou necessitam. O Ansible é uma ótima alternativa, pois ele oferece uma arquitetura simples que não exige que qualquer software especial esteja instalado em nós, e usa o SSH para executar as tarefas de automação e os arquivos YAML para definir detalhes de fornecimento.

Neste guia, falaremos sobre como instalar o Ansible em um servidor Ubuntu 18.04 e sobre alguns dos princípios básicos de como usar este software.

Como o Ansible funciona?

O Ansible funciona configurando máquinas de clientes, referidas como hosts do Ansible, de um computador que tenha os componentes do Ansible instalados e configurados, que é então chamado nó controlador do Ansible.

Ele se comunica por canais SSH normais para recuperar informações de sistemas remotos,executa comandos e copia arquivos. Por isso, o sistema Ansible não exige que nenhum software adicional seja instalado nos computadores do cliente.

É por isso que o Ansible simplifica a administração de servidores. Qualquer servidor que tenha uma porta SSH aberta pode ser gerenciado pela configuração do Ansible, independentemente do estágio do ciclo de vida. Isso quer dizer que qualquer computador que seja gerenciado por SSH também pode ser gerenciado pelo Ansible.

O Ansible usa uma abordagem modular, o que torna fácil a extensão do uso de funcionalidades do sistema principal para processar cenários específicos. Os módulos podem ser escritos em qualquer linguagem e se comunicam em JSON padrão.

Os arquivos de configuração são, em geral, escritos no formato de serialização de dados YAML devido à facilidade de uso e similaridade com outras linguagens de marcação conhecidas. O Ansible interage com hosts tanto por ferramentas de linha de comando como por scripts de configuração, conhecidos como Playbooks.

Pré-requisitos

Para seguir este tutorial, você precisará de:

  • Um nó de controle do Ansible: um nó de controle do Ansible é a máquina que usaremos para nos conectar e controlar os hosts do Ansible através do SSH. Seu nó de controle do Ansible pode estar tanto na sua máquina local como em um servidor dedicado que esteja executando o Ansible, embora este guia suponha que seu nó de controle seja um sistema Ubuntu 18.04. Certifique-se de que o nó de controle tenha:

    • Um usuário não raiz com privilégios sudo. Para configurar isso, siga os Passos 2 e 3 do nosso Guia de configuração inicial de servidor para o Ubuntu 18.04. No entanto, note que se estiver usando um servidor remoto como seu nó de controle do Ansible, você deve seguir cada etapa deste guia. Fazer isso irá configurar um firewall no servidor com ufw e habilitará o acesso externo ao seu perfil de usuário não raiz, e ambos irão ajudar a manter o servidor remoto seguro.
    • Um par de chaves SSH associado a este usuário. Para configurar isso, siga o Passo 1 do nosso guia Como configurar chaves SSH no Ubuntu 18.04.
  • Um ou mais hosts do Ansible: um host do Ansible é qualquer máquina que seu nó de controle do Ansible esteja configurado para automatizar. Este guia supõe que seus hosts do Ansible sejam servidores remotos do Ubuntu 18.04. Certifique-se de que cada host do Ansible tenha:

    • A chave pública SSH do nó de controle do Ansible adicionada aos authorized_keys de um usuário do sistema. Este usuário pode ser tanto o root como um usuário regular com privilégios sudo. Para configurar isso, siga o Passo 2 de Como configurar as chaves SSH no Ubuntu 18.04.

Passo 1 — Como instalar o Ansible

Para começar a usar o Ansible como um meio de gerenciar a infraestrutura do seu servidor, será necessário instalar o software Ansible na máquina que servirá como o nó de controle do Ansible.

Do seu nó de controle, execute o seguinte comando para incluir o PPA (arquivo de pacotes pessoais) oficial do projeto na lista de fontes do seu sistema:

  • sudo apt-add-repository ppa:ansible/ansible

Pressione ENTER quando solicitado para aceitar a adição do PPA.

A seguir, atualize o índice de pacotes do sistema. Desse modo, você garante que todos os pacotes estejam disponíveis no PPA recentemente incluído.

  • sudo apt update

Após atualizar, instale o software do Ansible com:

  • sudo apt install ansible

Seu nó de controle do Ansible agora possui o software necessário para gerenciar hosts. A seguir, veremos como adicionar hosts ao arquivo de inventário do nó de controle para que ele possa controlá-los.

Passo 2 — Configurando o arquivo de inventário

O arquivo de inventário contém informações sobre os hosts que você irá gerenciar com o Ansible. Você pode incluir qualquer lugar, de um a centenas de servidores no seu arquivo de inventário. Além disso, hosts podem ser organizados em grupos e subgrupos. O arquivo de inventário também é usado muitas vezes para definir variáveis que serão válidas apenas para hosts ou grupos específicos, de forma a serem utilizadas dentro de playbooks e templates. Algumas variáveis também podem afetar a maneira como um playbook é executado, como a variável ansible_python_interpreter que veremos a seguir.

Para editar o conteúdo do seu inventário padrão do Ansible, abra o arquivo /etc/ansible/hosts usando seu editor de linha de comando preferido na sua máquina local ou em um nó de controle do Ansible.

  • sudo nano /etc/ansible/hosts

Nota: algumas instalações do Ansible não criarão um arquivo de inventário padrão. Se o arquivo não existir no seu sistema, você pode criar um novo arquivo em /etc/ansible/hosts ou fornecer um caminho personalizado para o inventário usando o parâmetro -i ao executar comandos e playbooks.

O arquivo de inventário padrão fornecido pela instalação do Ansible contém alguns exemplos que você pode usar como referências para configurar o seu inventário. O exemplo a seguir define um grupo chamado [servers] que contém três servidores diferentes, cada um identificado por um pseudônimo personalizado: server1, server2 e server3. Certifique-se de substituir os IP destacados pelos endereços IP dos hosts do Ansible.

/etc/ansible/hosts
[servers]
server1 ansible_host=203.0.113.111
server2 ansible_host=203.0.113.112
server3 ansible_host=203.0.113.113

[servers:vars]
ansible_python_interpreter=/usr/bin/python3

O subgrupo server:vars define o parâmetro host ansible_python_interpreter que será válido para todos os hosts incluídos no grupo servers. Este parâmetro garante que o servidor remoto utilize o executável do Python 3 /usr/bin/python3 ao invés do /usr/bin/python (Python 2.7), que não está presente em versões recentes do Ubuntu.

Quando terminar, salve e feche o arquivo pressionando CTRL+X, em seguida Y para confirmar as alterações e então ENTER.

Sempre que quiser verificar seu inventário, você pode executar:

  • ansible-inventory --list -y

Você verá um resultado similar a este, mas contendo sua própria infraestrutura de servidor como definida no seu arquivo de inventário:

Output
all: children: servers: hosts: server1: ansible_host: 203.0.113.111 ansible_python_interpreter: /usr/bin/python3 server2: ansible_host: 203.0.113.112 ansible_python_interpreter: /usr/bin/python3 server3: ansible_host: 203.0.113.113 ansible_python_interpreter: /usr/bin/python3 ungrouped: {}

Agora que configurou seu arquivo de inventário, você tem tudo o que precisa para testar a conexão com seus hosts do Ansible.

Passo 3 — Testando a conexão

Após configurar o arquivo de inventário para incluir seus servidores, é hora de verificar se o Ansible é capaz de se conectar a esses servidores e executar comandos através do SSH.

Para este guia, usaremos a conta root do Ubuntu, pois ela é tipicamente a única conta disponível por padrão em servidores recém-criados. Se seus hosts do Ansible já tiverem um usuário regular sudo criado, incentivamos o uso dessa conta como alternativa.

Você pode usar o argumento -u para especificar o usuário remoto do sistema. Caso não seja fornecido, o Ansible tentará se conectar como seu usuário do sistema atual no nó de controle.

A partir da sua máquina local ou nó de controle do Ansible, execute:

  • ansible all -m ping -u root

Este comando usará o módulo ping interno do Ansible para executar um teste de conexão em todos os nós do seu inventário padrão, conectando como root. O módulo ping irá testar:

  • se os hosts estão acessíveis;
  • se você tem credenciais SSH válidas;
  • se os hosts conseguem executar módulos do Ansible usando Python.

Você deve obter um resultado similar a este:

Output
server1 | SUCCESS => { "changed": false, "ping": "pong" } server2 | SUCCESS => { "changed": false, "ping": "pong" } server3 | SUCCESS => { "changed": false, "ping": "pong" }

Se essa é a primeira vez que está se conectando a esses servidores através do SSH, será solicitado que você confirme a autenticidade dos hosts aos quais está se conectando pelo Ansible. Quando solicitado, digite yes e, em seguida, aperte ENTER para confirmar.

Assim que receber uma resposta "pong" de um host, isso significa que você está pronto para executar comandos do Ansible e playbooks naquele servidor.

Nota: Se for incapaz de obter uma resposta bem sucedida dos seus servidores, confira nosso Guia de dicas do Ansible para maiores informações sobre como executar comandos do Ansible com opções de conexão diferentes.

Passo 4 — Executando comandos ad hoc (opcional)

Após confirmar que seu nó de controle do Ansible consegue se comunicar com seus hosts, você pode começar a executar comandos ad hoc e playbooks nos seus servidores.

Qualquer comando que você normalmente executaria em um servidor remoto através do SSH pode ser executado com o Ansible nos servidores especificados no seu arquivo de inventário. Como exemplo, você pode verificar o uso de disco em todos os servidores com:

  • ansible all -a "df -h" -u root
Output
server1 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 3.9G 0 3.9G 0% /dev tmpfs 798M 624K 798M 1% /run /dev/vda1 155G 2.3G 153G 2% / tmpfs 3.9G 0 3.9G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 798M 0 798M 0% /run/user/0 server2 | CHANGED | rc=0 >> Filesystem Size Used Avail Use% Mounted on udev 2.0G 0 2.0G 0% /dev tmpfs 395M 608K 394M 1% /run /dev/vda1 78G 2.2G 76G 3% / tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/vda15 105M 3.6M 101M 4% /boot/efi tmpfs 395M 0 395M 0% /run/user/0 ...

O comando destacado df -h pode ser substituído por qualquer comando que você queira.

Também é possível executar módulos do Ansible através de comandos ad hoc, de forma similar ao que fizemos antes com o módulo ping para testar a conexão. Por exemplo, é assim que podemos usar o módulo apt para instalar a versão mais recente do vim em todos os servidores no seu inventário:

  • ansible all -m apt -a "name=vim state=latest" -u root

Também é possível direcionar a hosts específicos, além de grupos e subgrupos, ao executar comandos do Ansible. Por exemplo, é assim que poderia ser verificado o uptime de cada host no grupo servers:

  • ansible servers -a "uptime" -u root

Podemos especificar vários hosts separando-os com dois-pontos:

  • ansible server1:server2 -m ping -u root

Para maiores informações sobre como usar o Ansible, incluindo como executar playbooks para automatizar a configuração do servidor, veja nosso Guia de referência do Ansible.

Conclusão

Neste guia, você instalou o Ansible e configurou um arquivo de inventário para executar comandos ad hoc de um nó de controle do Ansible.

Assim que garantir que você consegue conectar-se e controlar sua infraestrutura a partir de uma máquina de controle central do Ansible, você pode executar qualquer comando ou playbook que queira nesses hosts. Para servidores novos, o playbook Configuração inicial do servidor da comunidade é um bom ponto de partida. Você também pode aprender a escrever seus próprios playbooks com nosso guia Gerenciamento de configuração 101: escrevendo playbooks do Ansible.

Para maiores informações sobre como usar o Ansible, confira nosso Guia de dicas do Ansible.

0 Comments

Creative Commons License