Banner-para-so-site-COMPLLEXUS

Ansible na prática – instalação e configuração #1

Provisionando um laboratório para estudar o Ansible e outras coisas

Por: Adelmo da Silva – consultor de sistemas

Bom, eu já mostrei para você o que é o Ansible e a sua importância na área de T.I, as inúmeras vantagens e a sua base, o Inventário e alguns exemplos do que ele pode fazer. Acredito que já tenha tido uma ideia do que o Ansible é e o que pode fazer. Confira os artigos anteriores nos links abaixo:

  1. Automação é o caminho e o Ansible, seu guia;
  2. Ansible: o fim das configurações manuais em servidores remotos;
  3. Ansible, o poliglota;
  4. Inventário, as páginas amarelas do Ansible.

Depois de mostrar a você tudo isso, agora vamos avançar. Vamos colocar a mão na massa. Este é o primeiro artigo/tutorial sobre Ansible na Prática. Será uma série de artigos onde irei replicar a vida no dia-a-dia de um profissional da área de T.I., como actualizações, colecta de informações, explicação de comandos, entre outros recursos e configurações de nosso amando Ansible. É importante lembrar: todos os artigos que irei publicar neste série “Ansible na Prática” será baseado no Ansible instalado em um servidor Linux, seja CentOS, Oracle Linux, Ubuntu, etc.

Então, chega de blá blá blá e vamos para a parte mais legal… a Prática. Pois o quanto mais você dominar o Ansible, mais tempo para aquele cafezinho você vai ter… hummm coisa boa!

Banner – Home – Topo Conteúdo

Instalando no Oracle Linux e Ubuntu

Bora lá!

Para esse, e os futuros artigos, vou utilizar máquinas virtuais (VM’s) com as seguintes configurações:

  • Sistema Operacional: Oracle Linux 7.9
  • CPU: 6
  • RAM: 4GB

Estou utilizando o Vagrant para criar estas VM’s. Mas você pode utilizar a que desejar: VirtualBox, Docker, VMWare, Boxes, etc. Neste artigo, em específico, usarei apenas o Oracle Linux. Nos próximos vamos utilizar outros sistemas. Mas na instalação irei contemplar o Ubuntu também.

Banner – Home – Topo Conteúdo

Sempre é bom deixar o sistema atualizado antes de se instalar qualquer aplicação ou serviço. Neste caso, vamos atualizar nossos sistemas:

Oracle Linux 7.9:

yum update -y && yum upgrade -y

 Ubuntu:

Banner – Home – Topo Conteúdo

apt update -y && apt upgrade -y

Agora, precisamos instalar um repositório chamado EPEL (Extra Packages for Enterprise Linux) para obter o pacote Ansible:

Oracle Linux 7.9:

yum install epel-release -y

Banner – Home – Topo Conteúdo

 Ubuntu:

O repositório EPEL é específico para distribuições baseadas no Red Hat, como o Oracle Linux. No Ubuntu, não é necessário instalar o EPEL. No Ubuntu, o Ansible pode ser instalado directamente dos repositórios oficiais.

Agora é possível instalar nosso amado Ansible.

Oracle Linux 7.9:

Banner – Home – Topo Conteúdo

yum install ansible

ansible –version

Ubuntu:

apt install ansible

Banner – Home – Topo Conteúdo

ansible –version

 

Versão do Ansible usado para este artigo:

[vagrant@orc-ansible ~]$ ansible –version

Banner – Home – Topo Conteúdo

ansible 2.9.27

  config file = /etc/ansible/ansible.cfg

  configured module search path = [u’/home/vagrant/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]

  ansible python module location = /usr/lib/python2.7/site-packages/ansible

Banner – Home – Topo Conteúdo

  executable location = /usr/bin/ansible

  python version = 2.7.5 (default, Jul  1 2022, 08:35:16) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44.0.3)]

 

Além dos meios tradicionais através dos gerenciadores ‘apt’ e ‘yum’, é possível instalar o Ansible através  do ‘pip’ (gerenciador de pacotes do Python), tanto no Oracle Linux quanto no Ubuntu. Para isso basta instalar o pacote

Banner – Home – Topo Conteúdo

Oracle Linux 7.9:

yum install epel-release -y

yum install python3-pip -y

pip3 install ansible

Banner – Home – Topo Conteúdo

 

Caso o yum não localize o pacote epel-release, utilize os comandos abaixo:

 

wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

Banner – Home – Topo Conteúdo

yum install -y epel-release-latest-7.noarch.rpm

 

Ubuntu:

apt install python3-pip

Banner – Home – Topo Conteúdo

pip3 install ansible

Feito! Já temos nosso querido Ansible instalado e pronto para ser usado. Mas antes disso, vamos verificar as configurações principais desse rapaz.

Verificando as configurações padrão

O Ansible possui vários arquivos de configuração que podem ser utilizados para personalizar o comportamento do Ansible. O directório padrão do Ansible fica em ‘/etc/ansible’ e é monde estão os dois principais arquivos de configuração:

Banner – Home – Topo Conteúdo
  • cfg: Este é o arquivo principal de configuração do Ansible. Ele pode ser usado para definir configurações globais que afectam todos os playbooks e comandos do Ansible. O arquivo ansible.cfg pode ser colocado no diretório de trabalho actual, no diretório home do usuário (~/.ansible.cfg) ou em /etc/ansible/ansible.cfg para configurações globais de sistema. Mas, neste artigo, vamos manter o local padrão.

 

  • inventory: O arquivo de inventário, por padrão chamado de hosts, define os hosts em que o Ansible vai executar os playbooks e comandos. O arquivo de inventário permite agrupar hosts em grupos, definir variáveis específicas para hosts ou grupos, e muito mais. Por padrão, o arquivo de inventário pode ser encontrado em /etc/ansible/hosts.

 

  • roles: são uma maneira de organizar e reutilizar código. Elas permitem que você agrupe tarefas, variáveis, handlers e outros elementos relacionados em uma estrutura modular. Uma role pode ser usada para definir a configuração e a funcionalidade de um componente específico do sistema, como um serviço, um aplicativo ou um conjunto de tarefas relacionadas. Dentro do diretório roles, você pode criar subdirectórios para cada role que você deseja criar. Por exemplo, você pode ter um diretório chamado webserver para uma role que configura um servidor web, e dentro desse diretório, você teria a estrutura de arquivos da role em si. Mas veremos isso em artigos futuros.

Preparando os hosts para controlo do Ansible

Você já tem o poderoso Ansible instalado. Já sabe onde ficam as configurações base dele. Agora, vamos preparar os hosts, ou seja, os servidores que serão controlados pelo Ansible.

Banner – Home – Topo Conteúdo

O Ansible se conecta via ssh aos hosts para que seja executados os comandos, seja Ad-Hoc ou Playbooks:

 

Ansible na prática - instalação e configuração #1

Fluxo de Conexão do Ansible. Fonte: Packet Warrior – Créditos: D.R

Banner – Home – Topo Conteúdo

Para estabelecer uma relação de confiança entre o Ansible e um host, você deve utilizar a autenticação por chave SSH. Isso permite que o Ansible se conecte ao host de forma segura e execute comandos remotamente. É essencial que o usuário que está no servidor Ansible seja o mesmo em todos os hosts da rede Para isso, vamos seguir os passos abaixo

I – Gerando chaves SSH com o ssh-keygen:

[vagrant@orc-ansible ~]$ ssh-keygen

 

Banner – Home – Topo Conteúdo

Generating public/private rsa key pair.

Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Banner – Home – Topo Conteúdo

Your identification has been saved in /home/vagrant/.ssh/id_rsa.

Your public key has been saved in /home/vagrant/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:4l/8CEnX4vmF9IniX/BLl+VmNzNRDH3qEBV4aboDxJ0 vagrant@orc-ansible.test

Banner – Home – Topo Conteúdo

The key’s randomart image is:

+—[RSA 2048]—-+

|         . . +++ |

|          o E +oo|

Banner – Home – Topo Conteúdo

|         .   = .+|

|          ..o . .|

|      . S o.++ ..|

|     . o = +o*.o+|

Banner – Home – Topo Conteúdo

|      . o * o.B=*|

|       . + = + ==|

|        . o.+ .  |

+—-[SHA256]—–+

Banner – Home – Topo Conteúdo

 

II – Copie a chave pública para o host remoto usando o ssh-copy-id:

[vagrant@orc-ansible ~]$ ssh-copy-id vagrant@192.168.100.4

 

Banner – Home – Topo Conteúdo

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/home/vagrant/.ssh/id_rsa.pub”

The authenticity of host ‘192.168.100.4 (192.168.100.4)’ can’t be established.

ECDSA key fingerprint is SHA256:2dOBSIUd6MBkLoqN/hrBfGCwsjZqSjMgB0neup/ali4.

ECDSA key fingerprint is MD5:f8:e1:93:fa:b9:b0:b7:e3:2f:2b:fd:9c:10:f5:72:d1.

Banner – Home – Topo Conteúdo

 

Are you sure you want to continue connecting (yes/no)? yes

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys

Banner – Home – Topo Conteúdo

vagrant@192.168.100.4’s password:

 

Number of key(s) added: 1

 

Banner – Home – Topo Conteúdo

Now try logging into the machine, with:   “ssh ‘vagrant@192.168.100.4′”

and check to make sure that only the key(s) you wanted were added.

Veja que temos quatro estágios, destacados em negrito:

  • ssh-copy-id vagrant@192.168.100.4: Inicia a conexão e a cópia da chave ssh para o hosts.
  • Are you sure you want to continue connecting (yes/no)? Yes: ele pergunta se deseja continuar com a conexão
  • vagrant@192.168.100.4’s password: é solicitado a senha do user, neste caso o user vagrant para validar a conexão.
  • Number of key(s) added: 1: Confirmação de hosts adicionados á lista de confiança.

 

Banner – Home – Topo Conteúdo

III – Teste a conexão SSH: para testar a conexão de confiança entre o ansible e o host, entre com o comando:

[vagrant@orc-ansible ~]$ ssh 192.168.100.4 à início da conexão

[vagrant@orc-app1 ~]$ à acesso confirmado. Veja que o hostname, depois do @, está com o do host orc-app1.

Isso deverá ser feito para todos os hosts da rede.

Banner – Home – Topo Conteúdo

 

Testes Iniciais

Agora vamos aos testes que dão gosto depois desses passos iniciais. Vamos aos testes de conexão. Mas, antes, precisamos preparar nosso inventário, lembra? Lembra do meu artigo sobre o Inventário: Inventário, as páginas amarelas do Ansible?

Então, vamos entrar no arquivo padrão de inventário do ansible em ‘/etc/ansible/hosts’ e vamos definir os grupos e ip’s:

[server-apps]

Banner – Home – Topo Conteúdo

192.168.100.4

192.168.100.5

[server-db]

192.168.100.6

Banner – Home – Topo Conteúdo

Este é o meu inventário. Você deverá colocar aqui os ip’s dos seus servidores.

Agora que nosso inventário está configurado, vamos testar as respostas dos servidores por meio do módulo PING. Neste primeiro teste vou dar ping para todos os hosts do inventário:

[vagrant@orc-ansible ~]$ ansible all -m ping

192.168.100.6 | SUCCESS => {

Banner – Home – Topo Conteúdo

    “ansible_facts”: {

        “discovered_interpreter_python”: “/usr/bin/python”

    },

    “changed”: false,

Banner – Home – Topo Conteúdo

    “ping”: “pong”

}

192.168.10.5 | SUCCESS => {

    “ansible_facts”: {

Banner – Home – Topo Conteúdo

        “discovered_interpreter_python”: “/usr/bin/python”

    },

    “changed”: false,

    “ping”: “pong”

Banner – Home – Topo Conteúdo

}

192.168.100.4 | SUCCESS => {

    “ansible_facts”: {

        “discovered_interpreter_python”: “/usr/bin/python”

Banner – Home – Topo Conteúdo

    },

    “changed”: false,

    “ping”: “pong”

}

Banner – Home – Topo Conteúdo

Todos responderam ao ping. Isso pode ser comprovado pela reposta “ping”: “pong” ao final de cada host.

Para testar apenas um grupo, trocamos o “all” pelo nome do grupo, como por exemplo:

[vagrant@orc-ansible ~]$ ansible server-apps  -m ping

Os hosts 192.168.100.4 e 192.168.100.5 irão responder ao ping.

Banner – Home – Topo Conteúdo

Pronto! O Ansible já está no controle dos seus hosts.

Vamos rodar mais dois comandos simples para que você veja o Ansible em ação. Vamos atualizar apenas o server DB utilizando o módulo SHELL:

[vagrant@orc-ansible ~]$ ansible server-db -m shell -a “sudo yum update -y”

Banner – Home – Topo Conteúdo

Updated:

  cronie.x86_64 0:1.4.11-25.el7_9

  cronie-anacron.x86_64 0:1.4.11-25.el7_9

  iwl100-firmware.noarch 999:39.31.5.1-999.18.el7

Banner – Home – Topo Conteúdo

  iwl1000-firmware.noarch 999:39.31.5.1-999.18.el7

  iwl105-firmware.noarch 999:18.168.6.1-999.18.el7

  iwl135-firmware.noarch 999:18.168.6.1-999.18.el7

  iwl2000-firmware.noarch 999:18.168.6.1-999.18.el7

Banner – Home – Topo Conteúdo

  iwl2030-firmware.noarch 999:18.168.6.1-999.18.el7

  iwl3160-firmware.noarch 999:22.0.7.0-999.18.el7

  iwl3945-firmware.noarch 999:15.32.2.9-999.18.el7

  iwl4965-firmware.noarch 999:228.61.2.24-999.18.el7

Banner – Home – Topo Conteúdo

  iwl5000-firmware.noarch 999:8.83.5.1_1-999.18.el7

  iwl5150-firmware.noarch 999:8.24.2.2-999.18.el7

  iwl6000-firmware.noarch 999:9.221.4.1-999.18.el7

  iwl6000g2a-firmware.noarch 999:17.168.5.3-999.18.el7

Banner – Home – Topo Conteúdo

  iwl6000g2b-firmware.noarch 999:17.168.5.2-999.18.el7

  iwl6050-firmware.noarch 999:41.28.5.1-999.18.el7

  iwl7260-firmware.noarch 999:22.0.7.0-999.18.el7

  iwlax2xx-firmware.noarch 999:20230315-999.18.el7

Banner – Home – Topo Conteúdo

  kernel-abi-whitelists.noarch 0:3.10.0-1160.90.1.0.1.el7

  kernel-headers.x86_64 0:3.10.0-1160.90.1.0.1.el7

  kernel-tools.x86_64 0:3.10.0-1160.90.1.0.1.el7

  kernel-tools-libs.x86_64 0:3.10.0-1160.90.1.0.1.el7

Banner – Home – Topo Conteúdo

  kexec-tools.x86_64 0:2.0.15-51.0.5.el7_9.3

  linux-firmware.noarch 999:20230315-999.18.gitc761dbe8.el7

  python-perf.x86_64 0:3.10.0-1160.90.1.0.1.el7

  rhn-check.x86_64 0:2.0.2-24.0.9.el7

Banner – Home – Topo Conteúdo

  rhn-client-tools.x86_64 0:2.0.2-24.0.9.el7

  rhn-setup.x86_64 0:2.0.2-24.0.9.el7

  rhnlib.noarch 0:2.5.65-8.0.5.el7

  rsyslog.x86_64 0:8.24.0-57.0.3.el7_9.3

Banner – Home – Topo Conteúdo

  tzdata.noarch 0:2023c-1.el7

Complete!

[vagrant@orc-ansible ~]$

Pronto. Já temos um servidor actualizado. Agora basta fazer nos outros ao meso tempo e poder tomar aquele cafezinho.

Banner – Home – Topo Conteúdo

Lembrando que este é o primeiro artigo da série Ansible na Prática. Até o próximo.

 

Partilhar artigo:

Versao3 - Cópia

Somos um portal de notícias, voltado às tecnologias de informação e inovação tecnológica. Informamos com Rigor, Objectividade e Imparcialidade. Primamos pela qualidade, oferecendo aos nossos leitores, a inclusão tecnológica e a literacia digital

+(244) 930747817

info@pti.ao | redaccao@pti.ao

Mais Lidas

Últimos Artigos

Desenvolvido Por SP Media