·

Engenharia de Software ·

Engenharia de Software

Send your question to AI and receive an answer instantly

Ask Question

Preview text

Automatizando configurações com o AWX Indo além do Ansible Utilizando a gerência de configuração em larga escala INTRODUÇÃO Apoio 1 httpswwwyoutubecomwatchvEmSL3yvsxX4 Apesar de se mostrar uma ferramenta extremamente eficiente na configuração automatizada de servidores o Ansible precisava de um sistema de gerenciamento que complementasse suas funcionalidades o AWX O AWX traz para o fluxo de trabalho uma interface completa que utiliza recursos do Ansible para gerir as configurações de máquinas programar execuções criar diversos arquivos de inventário gerenciamento de credenciais entre outras funcionalidades Como uma versão open source do Ansible Tower o AWX é uma excelente solução para automatizar os seus processos ETAPA 1 Instalação e configuração do ambiente Instalação dos aplicativos necessários para o AWX A máquina de testes estava com Ubuntu 2004 instalado mas também funciona no CentOS Fedora etc respeitadas as diferenças de gerenciamento dos pacotes e configs Por Felipe Eugênio Theves Instalando Docker Atualizar sudo apt y update Instalar Ansible aptget install ansible O Ubuntu 18043 LTS pode exigir sudo apt update sudo apt install softwarepropertiescommon sudo aptaddrepository yes update ppaansibleansible sudo apt install ansible Instale alguns prérequisitos para o Docker sudo apt y install apttransporthttps cacertificates curl gnupgagent softwarepropertiescommon git Remova todas as versões anteriores do Docker sudo apt remove docker dockerengine dockerio containerd runc Importe a chave GPG para Docker curl fsSL httpsdownloaddockercomlinuxubuntugpg sudo aptkey add Precisamos adicionar o DockerCE Repos para Ubuntu curl fsSL httpsdownloaddockercomlinuxubuntugpg sudo aptkey add sudo addaptrepository deb archamd64 httpsdownloaddockercomlinuxubuntu lsbrelease cs stable echo deb archamd64 httpsdownloaddockercomlinuxubuntu lsbrelease cs stable sudo tee etcaptsourceslistddockerlist Atualizar sudo apt update Instale DockerCE e software adicional sudo apt install dockerce dockercecli containerdio Adicione seu usuário ao grupo de usuários do docker sudo usermod aG docker USER newgrp docker Verifique a versão do Docker instalada docker version Instalando o Docker Compose sudo apt install y curl Depois de instalar o curl baixe o Compose mais recente em sua máquina Linux curl s httpsapigithubcomreposdockercomposereleaseslatest grep browserdownloadurl grep dockercomposeLinuxx8664 cut d f 4 wget qi Torne o arquivo binário executável chmod x dockercomposeLinuxx8664 Mova o arquivo para seu PATH sudo mv dockercomposeLinuxx8664 usrlocalbindockercompose Confirme a versão dockercompose version Coloque o script de conclusão em etcbashcompletiond sudo curl L httpsrawgithubusercontentcomdockercomposemastercontribcompletionbashdockercompose o etcbashcompletionddockercompose Crie o arquivo ou faça login novamente para aproveitar o recurso de conclusão source etcbashcompletionddockercompose GUI para gerenciamento do Docker Portainer docker volume create portainerdata docker run d p 80008000 p 90009000 nameportainer restartalways v varrundockersockvarrundockersock v portainerdatadata portainerportainer Acessar o Portainer e efetue o logincadastro httpip of machine9000 Instalando o AWX Instale o Node e o NPM sudo apt install y nodejs npm sudo npm install npm global Instale o módulo dockerpy python executando os comandos abaixo em seu terminal sudo apt install python3pip git pwgen vim sudo pip3 install requests2142 Instale o módulo dockercompose que corresponda à sua versão do Docker Compose sudo pip3 install dockercompose1250 Clone o códigofonte do AWX do GitHub usando o comando git sudo su git clone depth 50 httpsgithubcomansibleawxgit cd awxinstaller Gerar chave secreta AWX pwgen N 1 s 30 vim inventory Configure o arquivo com os parâmetros abaixo Entrar e EDITAR o arquivo dockerhubbaseansible awxtaskhostnameawx awxwebhostnameawxweb postgresdatadirvarlibpgdocker hostport80 hostportssl443 dockercomposedirvarlibawx projectdatadirvarlibawxprojects este precisa ser adicionado ao arquivo pgusernameawx pgpassword SENHA pgdatabaseawx pgport5432 adminuseradmin adminpassword SENHA createpreloaddataTrue secretkey CHAVE GERADA ANTERIORMENTE Adicione o seguinte ao final do arquivo rabbitmqpasswordSENHA rabbitmqerlangcookiecookiemonster Execute o seguinte comando ansibleplaybook i inventory installyml Esse passo demora um pouco é normal Depois de concluído você pode acessar a página de login httpserverip Solução de problemas Problemas pósinstalação Eu e vários outros notamos que na primeira vez que você executa o instalador você obtém uma tela de atualização do AWX que tentará atualizar mas ficará parada por horas se você permitir Solução Importante Caso o diretório tmpawxcompose não esteja disponível apenas execute os comandos seguintes cd awxinstaller ansibleplaybook i inventory installyml cd tmpawxcompose dockercompose stop cd awxinstaller ansibleplaybook i inventory installyml Quando você voltar para http seu ip awx Você ainda verá a tela de atualização No entanto em menos de 5 minutos no meu sistema de teste obtive a tela de login Baseado nos seguintes Links httpstechdavidfieldcoukinstallingawxonubuntu1804 httpscomputingforgeekscomhowtoinstallansibleawxonubuntulinux Criando um servidor para ser configurado Com as instalações necessárias do AWX finalizadas iremos agora criar uma máquina do Ubuntu 2004 server Em seu vagrant crie uma box com a imagem do ubuntu server 20 peruubuntu2004serveramd64 ou acesse a VM disponibilizada no laboratório Lembrando que será mencionado posteriormente neste artigo mas é necessário configurar o SSH para permitir acesso remoto via ROOT da mesma forma que ocorreu no laboratório do Ansible ETAPA 2 Acessando o ambiente e configurando um servidor Com a instalação e configuração do ambiente AWX finalizada acesse o IP da máquina em que o container do AWX e sua respectiva porta definida no port forwarding Ex 19216804089 Isso lhe dará acesso à tela de login do AWX Efetue login com as credenciais definidas acessando a interface web da ferramenta A página inicial exibe um resumo de todo o funcionamento e últimos acontecimentos das tarefas executadas na ferramenta Do lado direito também está disponível um menu de funções para gerenciar todos os recursos que o AWX fornece Para iniciarmos na utilização e verificar se tudo está configurado corretamente iremos executar um template padrão que executará um job para testes Acesse Templates e clique no ícone para executar o job Vejam que nesse caso já temos diversas informações sobre o que foi executado inclusive com uma saída do terminal Se analisarmos no DETAILS veremos que ele executou um playbook chamado helloworld yml Baseandose nisso iremos criar nosso próprio template de um job em seguida Criando nossa primeira configuração Fonte httpsyoutubeEmSL3yvsxX4 Configurando o inventário O primeiro passo é configurarmos nosso inventário de nodes os quais desejamos configurar e utilizar no Ansible AWX No menu lateral acesse e adicione um novo com Insira as informações para identificar o seu inventário Nome Descrição Organização A organização pode ser configurada previamente disponível em Organizations É possível também utilizar a organização default Com as informações principais definidas precisamos adicionar os endereços de IPs para esse inventário Clique em para salvar as configurações e acesse a aba de Já na aba de Hosts clique e insira as informações do novo host hostname endereço ip Descrição Variáveis Escritas em linguagem YAML definem as configurações utilizadas para acessar o host Conexão usuário interpretador do python etc ansibleconnection ssh ansibleuser root ansiblesshuser root ansiblepythoninterpreter usrbinpython3 Vale ressaltar que a linguagem utilizada pelo Ansible para efetuar as configurações é o Python por isso o seu interpretador é uma configuração necessária Por fim clique em para salvar as alterações Vejam que agora em o que foi configurado já estará disponível Sendo assim para adicionar essa máquina ao inventário hosts ela precisa estar sendo executada com o VirtualBox por exemplo e possuir um IP o qual deverá ser informado como demonstrado nos passos anteriores Importante Após criar a máquina virtual que será configurada pelo Ansible AWX permita o acesso de usuário root remoto alterando o arquivo de configurações do SSH vim etcsshsshdconfig Depois reinicie o serviço service sshd restart Da mesma forma que foi personalizado e adicionado o host também seria possível configurar grupos separando os hosts em categorias Clique em e crie um novo grupo com Insira as informações referentes ao grupo que será criado e clique em O grupo criado ficará visível em seu inventário Para adicionar o host ao seu grupo acesse dentro de seu inventário e clique sobre o host criado para acessar suas configurações e personalizações Com as configurações de host abertas clique em e adicione o grupo clicando no Com o grupo escolhido clique em Agora seu host já está agrupado em sua respectiva categoria Exemplo complementar 1 Criando novas organizações Após a criação de um host para o inventário que será utilizado é possível também se necessário criar novas organizações Para criar uma organização acesse e clique no para criar uma nova organização Insira todas as informações necessárias e clique em Após a confirmação é possível personalizar sua organização adicionando Usuários Permissões O AWX é uma ferramenta bastante poderosa sendo capaz de gerir diversos aspectos em um ambiente automatizado e profissional Caso acessarmos novamente a opção de visualizaremos informações gerais de nossa organização recém criada Exemplo complementar 2 Criando usuário e atribuindo funções Com a organização criada acesse e iremos criar um novo usuário de utilização do AWX Clique em para criar um novo usuário Insira as informações desejadas como por exemplo na imagem abaixo Ao clicar em um novo usuário estará criado Como defini o usuário na categoria de System administrator todas as permissões estarão liberadas para ele Caso Normal User for escolhido por exemplo é possível personalizar as permissões para o usuário Criando um projeto de configuração Criaremos agora nosso primeiro projeto de configuração para instalar o nginx em nosso host servidor alvo cadastrado anteriormente Clique em e crie um novo projeto clicando em Defina Nome Descrição Organização SCM Type De onde será buscada as configurações local git subversion etc Source Code Management Ao observarmos as configurações uma mensagem será exibida caso o SCM escolhido por Manual A pasta de projetos locais do servidor do AWX será exibida Como utilizamos a opção Manual o playbook deverá ser criado no servidor e para isso é necessário o uso do terminal Caso fosse escolhida a opção de algum repositório como o Git ou Subversion o projetoplaybook seria puxado do repositório em si sem a necessidade de criálo localmente Dessa forma acessaremos nosso servidor via SSH para criar nosso playbook localmente Utilizaremos o Vim para criar o playbook Acessando o diretório Criando diretório e o arquivo yml para o playbook Playbook simples criado Código nginxtestyml hosts all become true vars Está configuração é opcional pois já foi definida ansiblepythoninterpreter usrbinpython3 tasks name Update aptcache apt updatecacheyes name Install Vim apt namevim statelatest Com o arquivo criado agora podemos prosseguir nas configurações do AWX para a configuração de nosso ambiente Configurando o playbook no projeto Para prosseguir as configurações no AWX iremos agora acessar a opção de e criamos o nosso projeto como demonstrado anteriormente Note que agora a pasta do projeto onde criamos o playbook já está disponível para seleção Selecionea e clique em É possível também definir as permissões para a utilização do Projeto clicando em Criando o Template de execução Com o projeto criado iremos agora criar um template para rodarmos o nosso job Acesse e clique em para criar um novo Iremos agora inserir diversas informações necessárias para a criação do nossa configuração Nome Descrição Job Type Inventário Projeto Credenciais Marque a opção também prompt on launch Necessário ser criada Login e senha do servidor alvo que será configurado root Acesse e clique em para criar uma nova credencial Selecione como Credential type Machine Insira a senha e o usuário root do servidor alvo Por fim clique em para salvar a adição Playbook Clique em para salvar as alterações Da mesma forma é possível também definir esse template a algum usuário utilizando a aba de Executando a configuração Com todas as informações necessárias configuradas iremos agora executar o nosso projeto para configurar o servidor definido dos inventários Dentro do template clique em e selecione a credencial cadastrada A interface de execução será aberta e caso tudo estiver OK as configurações do playbook serão aplicadas com sucesso Recapitulando as configurações necessárias Acesso remoto root liberado no servidor alvo Playbook criado em uma pasta nos projetos do AWX Inventário de hosts configurado Projeto criado Template criada para ser executada Como instalamos apenas uma configuração bastante simples vim testaremos agora na máquina alvo se ele já está presente Como a configuração foi executada corretamente iremos configurar novamente o nosso playbook via terminal e utilizálo para subir um servidor do nginx Configurando e ativando o nginx Acessaremos novamente o nosso playbook em varlibawxprojectsprojetoteste Obs Diretório da vm onde o AWX foi instalado Aplicando novas configurações vim nginxtestyml nginxtestyml hosts all become yes tasks name Installs nginx web server apt name nginx state present updatecache true notify start nginx handlers name start nginx service name nginx state started Salve o arquivo e agora retornaremos ao AWX para executar esse novo playbook podendo ser no mesmo template utilizado anteriormente Ao executar novamente a configuração será aplicada e o Nginx instalado Acessando novamente a máquina podemos verificar o status do serviço do nginx sudo systemctl status nginx CONCLUSÃO DA ETAPA 2 Vimos nesse laboratório que é possível através de soluções modernas atualizar um parque de servidores independente de seu tamanho tudo através do arquivo de inventários organizandoos Da mesma forma diversas configurações também podem ser aplicadas em múltiplos templates e jobs Facilitando imensamente a criação de uma infraestrutura mais complexa e extensa ETAPA 3 DESAFIO TESTE OS SEUS CONHECIMENTOS Com base em tudo que você aprendeu tente agora reproduzir utilizando o AWX um servidor configurado para utilização de um banco de dados PostgreSQL MariaDB MySQL MongoDB