Introdução ao Ansible no Ubuntu para melhor provisionamento de ambiente e gerenciamento de configuração.
O gerenciamento de configuração é um estágio crucial no ciclo de vida do DevOps. Ajuda na automação e orquestração da infraestrutura de TI.
Existem várias ferramentas para gerenciamento de configuração, por exemplo, Puppet, Ansible, Chef e SaltStack. E, claro, o Ansible é uma das ferramentas mais populares no DevOps. Ele pode gerenciar milhares de servidores e toda a sua infraestrutura de TI com facilidade.
Vamos cobrir o seguinte neste artigo.
- Instalação Ansible
- Troca de chave SSH
- Configuração do cliente Ansible
- Teste Ansible
últimas postagens
Instalação Ansible
Para simplificar, vamos tentar usar o Ansible em dois servidores. Um será ansible-server e outro ansible-client com o seguinte IP.
- servidor ansible – 10.0.0.1
- ansible-client – 10.0.0.25
A instalação é simples… o seguinte precisa ser feito em todos os servidores em que você deseja usar o Ansible. Neste caso, acima de ambos os servidores.
- Execute o comando abaixo para instalar o software necessário para instalar o ansible.
[email protected]:~# apt install software-properties-common
- Instale o repositório com o pacote ansible.
[email protected]:~# apt-add-repository --yes --update ppa:ansible/ansible
- Atualize a ferramenta de empacotamento avançada (apt)
[email protected]:~# apt update
- E, finalmente – execute o comando abaixo para instalar
[email protected]:~# apt install ansible
Levará alguns segundos para instalar o pacote necessário.
Como você garante sua instalação e sua versão?
Bem, é fácil. Você pode usar a sintaxe –version com ansible para descobrir como abaixo.
[email protected]:~# ansible --version ansible 2.8.1 config file = /etc/ansible/ansible.cfg configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python2.7/dist-packages/ansible executable location = /usr/bin/ansible python version = 2.7.15+ (default, Nov 27 2018, 23:36:35) [GCC 7.3.0] [email protected]:~#
Como você pode ver, o Ansible 2.8.1 está instalado e fornece as informações necessárias, como localização do arquivo de configuração, módulo python.
Em seguida, precisamos fazer a troca de chaves SSH para que o serviço e um cliente possam conversar entre si.
Troca de chave SSH
O Ansible se conecta ao seu cliente por meio de SSH (Secure shell).
Vamos primeiro gerar uma chave pública no ansible-server, que precisa ser copiada para o ansible-client.
Certifique-se de estar logado como usuário root.
- Gere a chave usando o comando ssh-keygen como mostrado abaixo
[email protected]:~# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:cDapZBESo+8XcbXupbtILkFrklUSpwa70Y1c7yH5K1A [email protected] The key's randomart image is: +---[RSA 2048]----+ | =.+oo . | | . B.B.= . | | . o @oE + | | . *oO * . | | o++.S + . | | .o +o . + | | .o..o + | | ..o o . | | .o o. | +----[SHA256]-----+ [email protected]:~#
Como você deve ter notado, ele gerou uma chave pública na pasta .ssh. O caminho completo é /root/.ssh/id_rsa.pub
Nota: certifique-se de que os arquivos de chave pública e privada não sejam legíveis para o mundo. Você pode listar os arquivos para verificá-los.
cd /root/.ssh
[email protected]:~# ls -l -rw------- 1 root root 1679 Jun 19 00:37 id_rsa -rw------- 1 root root 404 Jun 19 00:37 id_rsa.pub
Se você perceber que a permissão está errada, poderá alterá-la usando o comando chmod
Ex:
chmod 400 id_rsa chmod 400 id_rsa.pub
Vamos copiar a chave pública para o host Ansible cujo endereço IP é 192.168.56.101
[email protected]:~/.ssh# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '10.0.0.25 (10.0.0.25)' can't be established. ECDSA key fingerprint is SHA256:eXduPrfV0mhxUcpsZWg+0oXDim7bHb90caA/Rt79cIs. 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 [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]'" and check to make sure that only the key(s) you wanted were added. [email protected]:~/.ssh#
Você pode ver na saída acima, 1 chave foi adicionada com sucesso. Isso indica que a chave SSH foi trocada.
Em seguida, configuraremos um cliente Ansible.
Configuração do cliente Ansible
Suponho que você já tenha seguido as etapas de instalação do Ansible no servidor cliente, conforme explicado nas etapas anteriores.
A configuração de cliente ou host nada mais é do que tornar o servidor Ansible ciente dos clientes. E, para isso:
- Faça login no servidor Ansible
- Vá para /etc/ansible
- Adicione o seguinte no arquivo hosts usando seu editor favorito
[Client] node1 ansible_ssh_host=10.0.0.25
Teste Ansible
Se você seguiu todas as etapas corretamente, receberá uma mensagem de SUCESSO ao executar o comando abaixo no servidor ansible.
[email protected]:~/.ssh# ansible -m ping Client node1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" } [email protected]:~/.ssh#
Thea acima pinga para o cliente para testar a conectividade e confirmar se está bom ou não.
Conclusão
Espero que isso lhe dê uma idéia para começar com a instalação e brincar. Fique atento para mais tutoriais do Ansible ou também confira este curso Udemy Mastering Ansible.