How To Install and Test Ansible on Linux

Ansible é uma ferramenta de gerenciamento de configuração amplamente utilizada, escrita em linguagem Python, que ajuda a configurar uma ou várias máquinas ao mesmo tempo. Ansible pode ser usado para executar as tarefas abaixo

  • Configuração do zero de um ou vários nós
  • Desdobramentos
  • Mudanças de configuração
  • Patch
  • Gerenciamento de serviços
  • e muitos mais

Ansible é amplamente usado por causa de sua simplicidade. O código ansible é escrito também em linguagem YAML, ele não precisa de um agente para ser instalado em uma máquina remota. O Ansible usa a porta 22 (SSH) para se conectar a uma máquina remota e fazer as alterações necessárias.

Any machine, que pode se conectar à máquina remota na porta 22, pode se tornar um nó de controle. Um nó de controle é onde você pode instalar o Ansible e um nó gerenciado está sendo gerenciado por nós de controle.

Vamos dar uma olhada na instalação do Ansible no nó controlador.

Instalar Ansible no CentOS 7:

Como o Python é o único pré-requisito para instalar o Ansible, vamos instalar o Python executando o comando abaixo.

$sudo yum install python3 -y

Para instalar o Ansible no CentOS 7, primeiro certifique-se de que o repositório CentOS 7 EPEL está instalado. Execute o comando abaixo para instalar o repositório epel.

$sudo yum install epel-release

Atualizar o índice de pacotes do sistema executando o comando update abaixo.

$sudo yum update -y

Após o repositório estar instalado, instale o Ansible com o gerenciador de pacotes yum. Execute o comando abaixo mencionado para instalar o Ansible.

$sudo yum install ansible -y

Verifica se o Ansible está instalado corretamente e sua versão.

$ansible -v

Instalar o Ansible no CentOS 8:

Vejamos os passos de instalação do CentOS 8. Vamos instalar python no CentOS 8.

$sudo dnf install python3

Once, python está instalado, vamos instalar o EPEL repo executando o comando abaixo.

$sudo dnf install epel-release -y

Atualizar o índice de pacotes do sistema executando o comando de atualização abaixo.

$sudo dnf update -y

Estamos agora prontos para instalar o Ansible. Execute o comando abaixo para instalar o Ansible.

$sudo dnf install ansible -y

Verifique se o Ansible está instalado corretamente e sua versão.

$ansible -v

Instalar o Ansible no Ubuntu:

Python é um pacote padrão hoje em dia na maioria das distribuições Linux. Se você não tiver o python instalado, execute o comando abaixo para instalar o pacote python.

$sudo apt-get install python3

Para instalar o Ansible no Ubuntu, vamos primeiro instalar o repositório executando o comando abaixo.

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

Atualizar o índice de pacotes do sistema executando o comando update abaixo.

$sudo apt-get update -y

Agora, instale o Ansible.

$sudo apt-get install -y ansible

Verifica se o Ansible está instalado corretamente e sua versão.

$ansible -v

Instalar o Ansible com o Python PIP no CentOS, Debian e Ubuntu:

Independentemente do sistema operacional que você estiver usando, você pode instalar o Ansible com o instalador de pacotes python. Vamos executar o comando abaixo para instalar o python3-pip.

Para CentOS 7 e abaixo:

$sudo yum install python3 python3-pip -y

Para CentOS 8:

$sudo dnf install python3 python3-pip -y

Para Ubuntu e Debian:

$sudo apt-get install python3 python3-pip

Como temos o python e o pip instalados, vamos executar o comando abaixo em qualquer sistema operacional para instalar o Ansible.

$sudo pip3 install ansible

Verifica se o Ansible está instalado correctamente e a sua versão.

$ansible -v

Configurar hosts de controladores possíveis:

Precisamos configurar o arquivo “hosts” primeiro antes de podermos começar a nos comunicar com nossos outros nós. Este arquivo terá todos os IPs ou hostnames dos nós gerenciados.

Note: Nem sempre é necessário usar um arquivo de hosts para conectar aos nós gerenciados. Mas então toda vez, precisamos usar o IP ou nome da máquina do servidor do nó gerenciado enquanto executamos cada comando.

Criar o arquivo (se ainda não estiver lá) com privilégios de root executando o comando abaixo:

$sudo touch /etc/ansible/hosts

Antes de escrever no arquivo, vamos dar uma olhada e entender o arquivo de exemplo de máquina:


alias ansible_ssh_host=your_node_server_ip

Um arquivo de máquina deve seguir a sintaxe acima. Vamos dar uma olhada em cada parâmetro.

: Este parâmetro irá criar um grupo. Todos os endereços IP do nó gerenciado ou nomes de hosts sob o parâmetro group_name (nome_do_grupo) irão cair no mesmo grupo. Por exemplo, se tivermos vários servidores web em nossa infra-estrutura, podemos adicionar todos os endereços IP ou os nomes de host do nó gerenciado aqui.

alias: Este parâmetro é usado para dar ao servidor do nó gerenciado um alias para identificar o servidor do nó gerenciado. Por exemplo, se temos vários servidores web na nossa infra-estrutura, podemos dar host1, host2, host3 como um alias. A principal vantagem de dar um alias é quando vamos executar o comando Ansible para alterar a configuração de um único servidor, podemos usar um alias para identificar e executar a tarefa necessária no servidor.

ansible_ssh_host=seu_nó_servidor_ip: Este parâmetro irá apontar o alias para um endereço IP ou nome da máquina de um nó gerenciado.

Estaremos usando o CentOS 8 como um nó controlado com Ansible. Como mencionado acima, o Ansible usa 22 portas do host remoto para se conectar.

Assumiremos que os endereços IP do nosso servidor de nó gerenciado CentOS são 192.168.0.2, 192.168.0.3 e 192.168.0.4.

Para permitir que o nó controlador Ansible se comunique com os nós gerenciados, devemos confirmar que os nós gerenciados estão acessíveis na porta 22 que é uma porta SSH. Execute o comando abaixo para confirmar a conectividade um a um em todos os três nós gerenciados a partir do controlador.

$ssh [email protected]
$ssh [email protected]
$ssh [email protected]

Será solicitada a senha do usuário root de todos os nós. O Ansible funciona muito bem se você tiver a autenticação sem senha configurada entre o controlador Ansible e os nós gerenciados. Com parâmetros diferentes no comando Ansible, a autenticação de senha também pode funcionar.

Como temos configurado a conectividade ssh entre o controlador Ansible e os nós gerenciados, vamos configurar o arquivo hosts para conectar a todos os nós gerenciados. Como mencionado anteriormente, podemos adicionar vários aliases de servidor de nós em um único grupo. Neste caso, vamos adicionar os três nós e atribuir um alias como host1, host2 e host3, respectivamente. Nosso arquivo hosts deve ser parecido com o abaixo, após adicionar todos os detalhes do nó gerenciado. Execute o comando abaixo para editar o arquivo hosts que nós criamos antes.

Abra o arquivo com privilégios de root executando o comando abaixo:

$sudo vi /etc/ansible/hosts

Adicionemos a configuração mencionada abaixo no arquivo hosts.


host1 ansible_ssh_host=192.168.0.2
host2 ansible_ssh_host=192.168.0.3
host3 ansible_ssh_host=192.168.0.4

Aqui, adicionamos todos os IPs e apelidos de nós gerenciados em um grupo chamado node_servers.

Tentemos agora conectar aos nós gerenciados do controlador Ansible.

$ansible -m ping node_servers

O comando acima está usando um ping de módulo para conectar ao grupo “node_servers” que nós definimos no arquivo hosts acima.

Pode encontrar erros por diferentes razões.

  1. Possível irá, por defeito, tentar ligar-se ao nó gerido usando o seu nome de utilizador actual, caso não o tenha fornecido. Se esse usuário não existir no servidor do nó, você receberá o erro abaixo.
  2. Se a porta 22 ssh não estiver aberta para conexão nos nós gerenciados. (Como mencionado anteriormente, Ansible connects on ssh port)
  3. If the IP in the hosts file is not correct.

If any of the above conditions fail, you will find the below error.

  • If ssh port 22 is not open for connection on managed nodes.
    host1 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
    }
    host2 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
    }
    host3 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh.",
    "unreachable": true
    }

    Vamos dizer especificamente ao Ansible que ele deve se conectar aos nós gerenciados no grupo “node_servers” com o usuário james. Crie o diretório group_vars como mencionado abaixo.

    $sudo mkdir /etc/ansible/group_vars

    Os arquivos neste diretório são usados especificamente para configurar variáveis que podemos usar em nossos playbooks Ansible.

    Vamos criar um ficheiro de variáveis para a nossa configuração executando abaixo o comando:

    $sudo vim /etc/ansible/group_vars/node_servers.yml

    Adicionar o código abaixo ao ficheiro:

    ---
    ansible_ssh_user: james

    O ficheiro YML começa sempre com “—” na primeira linha. Vamos salvar e fechar este arquivo quando você terminar. Agora o Ansible irá sempre usar o usuário james para o grupo node_servers, independentemente do usuário atual que você está usando para executar um comando.

    Verifica a conexão do nó gerenciado:

    Agora temos nossos hosts configurados e detalhes de configuração suficientes para nos permitir conectar com sucesso aos nossos nós gerenciados, podemos experimentar o mesmo comando que executamos antes.

    $ansible -m ping servers 

    Ansible retornará a saída assim:

    host1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
    }
    host2 | SUCCESS => {
    "changed": false,
    "ping": "pong"
    }

    host3 | SUCESSO => {“changed”: false, “ping”: “pong”}

    Este é um teste básico para garantir que o Ansible tem uma conexão com os seus nós administrados.

    Conclusão:

    Não é necessário usar o sistema operacional CentOS para nós gerenciados. Você pode usar a mesma configuração de teste que usamos acima para CentOS, RedHat, Ubuntu, e qualquer outra distribuição Linux.

    Como instalar e testar o Ansible no Linux
  • Deixe uma resposta

    O seu endereço de email não será publicado.