Voltar ao blog

Automatizando a Configuração de Servidores usando Ansible e Ubuntu 20.04

Automatizando a Configuração de Servidores usando Ansible e Ubuntu 20.04

Introdução

Hoje em dia, os servidores precisam ser criados e destruídos com muita frequência. Isso ocorre porque, às vezes, os servidores recebem muita carga de execução, enquanto em outros momentos a carga diminui, desperdiçando assim os recursos do sistema. Um exemplo comum são os sites de comércio eletrônico durante as festas de fim de ano, que atraem muito tráfego. Quando a natureza da aplicação é ser escalável, há sempre a necessidade de ter ferramentas de gerenciamento de configuração para facilitar o processo geral de criação de servidores. Ansible é uma excelente ferramenta de gerenciamento de configuração que automatiza a criação de servidores usando procedimentos padrão, reduzindo erros humanos.

O Ansible não requer a instalação de software especial nos nós dos servidores. Ele possui todas as ferramentas necessárias para escrever, compilar e facilitar a automação de scripts. Este tutorial explica detalhadamente como usar o Ansible para automatizar as etapas contidas no nosso Como configurar seu servidor Ubuntu tutorial.

Pré-requisitos

Para concluir este guia, usaremos o Ubuntu 20.04. Além disso, você também precisará de:

  • Um Nó de Controle do Ansible: Uma máquina Ubuntu executando a versão mais recente do Ubuntu. O binário mestre do Ansible deve estar instalado e em execução nesta máquina. Esta máquina deve ser capaz de se conectar aos nós do Ansible. Para essas conexões, você precisa usar chaves SSH. Para evitar problemas ao se conectar, certifique-se de que o nó de controle do Ansible tenha um firewall ativado. Se precisar de ajuda, confira o nosso Instalando e Configurando o Ansible no Ubuntu 20.04 blog.

  • Hosts do Ansible: É necessário um ou mais hosts para se conectar. Os hosts são essencialmente os nós gerenciados no Ansible. Estes devem ser servidores Ubuntu.

Funções do Ansible Playbook

Você pode configurar manualmente todas as etapas mencionadas abaixo. No entanto, automatizaremos essa execução. Quando você executar este playbook, ele realizará as seguintes operações na sua máquina:

  1. Ele instalará aptitude, que é o preferido pelo Ansible como seu gerenciador de pacotes.

  2. Ele criará um grupo administrativo wheel com permissões sudo sem senha.

  3. Ele criará um novo usuário sudo.

  4. Ele copiará uma chave SSH local no authorized_keys. Isso deve ser usado para um novo usuário administrativo em um host remoto.

  5. Ele desativará a autenticação baseada em senha para o usuário root.

  6. Ele instalará os pacotes necessários.

  7. Ele configurará o firewall UFW para permitir apenas conexões SSH. Quaisquer outras conexões seriam bloqueadas.

Assim que a execução do Playbook for concluída, um novo usuário estará disponível. Você pode usar esse usuário para fazer login no sistema.

Usando o Ansible Playbook

Para configurar o servidor, você precisará do playbook de configuração inicial do servidor e de suas dependências. Se estiver usando-o pela primeira vez, precisará clonar o repositório usando o link abaixo:

Se o repositório já existir no seu sistema, execute o comando abaixo para obter as atualizações mais recentes:

Você obterá a seguinte estrutura de arquivos na sua máquina:

Abaixo está a descrição dos arquivos:

  • vars/default.yml: Este arquivo contém as variáveis para configurar o nó do Ansible.

  • playbook.yml: Este arquivo contém as tarefas que devem ser executadas no servidor.

O arquivo vars/default.yml se parece com isto:

Abaixo está a descrição dessas variáveis. Se desejar editá-las, você pode substituir seus valores pelos seus próprios:

  1. create_user: Este é o usuário que é criado. Este usuário tem privilégios de sudo.

  2. copy_local_key: Isto contém o caminho para a chave pública SSH local. Ela seria copiada para o servidor remoto como authorized_key.

  3. sys_packages: Se você deseja instalar um ou mais pacotes no seu servidor, mencione-os aqui como uma matriz.

Depois de editar este arquivo, salve o conteúdo. Depois disso, no nano, pressione CTRL+X , Y. Depois, ENTER para salvar o conteúdo do arquivo.

Agora você está pronto para executar este playbook em múltiplos servidores. Por padrão, os Playbooks estão prontos para serem executados nos servidores do seu inventário. Se você quiser usar o Playbook em alguns servidores específicos, você pode usar a -l flag. Agora suponha que o servidor remoto tenha múltiplos usuários, você pode usar a -u flag para mencionar a qual usuário se conectar.

Se o nome do seu servidor for my_server e o nome de usuário for my_user, então execute o comando abaixo para executar nos nós do Ansible:

Você obterá uma saída parecida com:

Assim que esta execução for concluída, você poderá se conectar usando o comando abaixo:

Lembre-se de que my_user foi o nome que usamos no arquivo vars/default.yml. Você também precisará alterar o IP do servidor para o IP do seu servidor no comando acima. Se você tiver fornecido a copy_local_key variável para apontar para alguma chave SSH personalizada, especifique o local com a -i opção:

Em seguida, faça login no seu servidor para verificar as regras do firewall UFW:

Você obterá a saída abaixo:

A saída acima confirma que o firewall UFW foi finalizado com sucesso. Este foi o último passo no nosso playbook. Se isso for executado corretamente, significa que a execução foi bem-sucedida.

O Conteúdo do Ansible Playbook

Os arquivos do Playbook que usamos neste tutorial estão hospedados no ansible-playbooks/setup_ubuntu1804 em master · do-community/ansible-playbooks · GitHub. Se você deseja ver o conteúdo de cada arquivo para usar ou editar, clique no botão Raw na parte superior de cada script.

Para referência rápida, compartilharemos o conteúdo completo do Playbook junto com os arquivos relevantes:

  • vars/default.yml

Este arquivo contém os valores que serão usados pelas tarefas do playbook. Estes incluem valores como o nome do usuário, privilégios, chaves SSH, pacotes a serem instalados como parte da configuração inicial, e assim por diante:

  • playbook.yml

O playbook.yml contém as tarefas que devem ser executadas. Primeiro, o arquivo lista todos os hosts que serão alvo. Se você quiser especificar todos os servidores, defina o valor desta chave como all. Em seguida, se você quiser especificar as tarefas a serem executadas usando privilégios sudo, defina o valor da variável become: true. Finalmente, este arquivo precisa incluir o conteúdo do arquivo vars/default.yml acima. Nós os incluímos a seguir para carregar as configurações deste arquivo:

Conclusão

A automação é fundamental na TI, garantindo que todos os processos sejam livres de erros e sigam as práticas e procedimentos padrão. Como a maioria dos softwares hoje é entregue pela web e possui natureza distribuída, tornou-se uma tarefa diária criar novos servidores, por exemplo, para diferentes ambientes, como homologação ou produção, ou até mesmo ambientes de demonstração.

Neste tutorial, demonstramos como automatizar servidores usando o Ansible, uma ferramenta poderosa e fácil de usar que pode economizar muito do seu tempo.

Feliz computação!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.