Instalando última versão do Ansible no Ubuntu/Debian

Caso não saiba o que é Ansible, pode dar uma lida nesse post.

A forma mais simples para instalar o Ansible é com o comando abaixo, porém é instalado uma versão mais antiga.

Agora para baixar uma versão mais atualizada basta seguir os passos abaixo:

 

Identificar sistema operacional com ping

O comando ping utiliza o protocolo icmp e é muito útil para alguns testes de rede. O que pouca gente sabe é que durante a resposta do comando ping, uma informação pode nos informar qual o sistema operacional está respondendo. Essa informação é TTL (Time to Live).

Ex:

Podemos ver que nesse exemplo o TTL é 64 que corresponde ao Linux. É bom lembrar que cada vez que um pacote passa por um roteador é reduzido um do valor TTL. Caso a resposta seja 64, significa que o pacote veio de um Linux e passou por 2 roteadores.

Unix = 255
Linux = 64
Windows = 128

Limpar container antigos Docker

Caso sua lista de container esteja muito grande e queira remover alguns containers do seu host, podemos usar o comando abaixo para remover container parados a mais tempo:

Explicando:

docker ps –filter “status=exited” = Lista somente os containers parados, que não estão em execução

grep ‘weeks ago’ = Filtra por containers criados a semanas atrás

awk ‘{print $1}’ = Exibe a primeira coluna, que refere ao CONTAINER ID

xargs –no-run-if-empty docker rm = Pega o que foi filtrado até agora e joga como parâmetro para o docker rm

Sempre use os comandos com muito cuidado caso não tenha certeza do que está fazendo, não me responsabilizo por qualquer erro humano 🙂

Convertendo arquivos DOS ^M com Vim

Quem nunca passou pela situação de executar um script e o mesmo apresentar erro. Normal, mas algumas vezes o erro ocorre pela formatação, principalmente se foi escrito ou salvo em um Windows. Ocorre de no final de cada linha ele acrescentar um ^M, o que não o Linux não consegue interpretar.

Existem algumas formas de corrigir esse problema, a mais conhecida é usando o aplicativo dos2unix.

Mas o quero apresentar hoje é usando o poderoso Vim. Basta estando dentro do arquivo digitar o comando abaixo:

Simples e rápido, caso por algum motivo queira fazer o processo contrário, basta executar:

Comando fuser – Quem mexeu no meu arquivo

O fuser é um programa que permite que saibamos qual processo está utilizando determinado arquivo, socket (portas) e sistema de arquivos especificado. Aprender sua manipulação é essencial para poder administrar um servidor para saber o que está acontecendo principalmente nas conexões. É um comando extremamente flexível, vamos ver suas opções e seu uso.

Diretiva Descrição Exemplo
-a, –all Mostra todos os arquivos, inclusive os que estão sem uso # fuser -a *
-k, –kill Desativa/Mata os processos que estão utilizando determinado arquivo # fuser -k /home/zonebin
-i, –interactive Pede confirmação sempre que for matar um processo utilizando um arquivo # fuser -ik /home/zonebin
-m, –mount Especifica um sistema de arquivos para descobrir qual processo está sendo utilizado # fuser -m /dev/sda1
-s, –silent Realiza as operações indicadas silenciosamente, não use a opção -a, -u, -v # fuser -ks /home
-u, –user Mostra o nome de usuário que iniciou o processo que está utilizando o arquivo # fuser -u /var/log/messages
-4, –ipv4 Mostra processos de IPV4 somente # fuser -4 ssh/tcp -6,
-ipv6 Mostra somente processos de sockets IPV6 # fuser -6 25/tcp

Tipos de acesso:
c  Diretório atual
e  Arquivo executável rodando
f  Arquivo aberto (omitido no modo de display padrão)
F  arquivo aberto para escrita (omitido no modo de display padrão)
r  Diretório root
m  Arquivo mapeado ou biblioteca compartilhada

Exemplos:
Mostrar os processos em execução no diretório atual:

Verificando se está sendo usado socket TCP ou UDP, como a porta 22 (SSH):
Para mais informações:

Iniciando Zabbix com Docker Compose

Obviamente precisaremos ter instalado o docker e docker-compose, caso não saiba como instalar pode acessar o link e esse outro link . Precisaremos criar um arquivo docker-compose.yml com o seguinte conteúdo:

E iremos executar o seguinte comando:

Caso queiram contribuir segue o github desse código: https://github.com/sidneiweber/zabbix-docker

Gerenciando serviços com SystemD

Com SystemD é possível gerenciar o sistema e serviços no seu Linux. Ele usa o Control Groups (CGroups), cada serviço iniciado pelo systemd roda dentro de um cgroup separado, fazendo com que se tenha garantia que cada processo iniciado por serviço seja encerrado corretamente.

Para listar todos os serviços em execução:

Para ver o status de um serviço:
Para ativar um serviço na inicialização:
Para retirar um serviço da inicialização:
Para listar units sendo executadas:
Para listar units que falharam:
Listar os serviços instalados:
Reiniciar o sistema:
Desliga e encerra o sistema:
Suspender o sistema:
Colocar o sistema em modo de hibernação:
Colocar o sistema em modo de suspensão:

Ansible – O que é e para que serve

ANSIBLE LOVES THE REPETITIVE WORK YOUR PEOPLE HATE

Com essa frase começa a apresentação da ferramenta Ansible em seu próprio site. Bom, resumidamente o Ansible é um software que automatiza o provisionamento de software, gerenciamento de configuração e implantação de aplicativos. Ou seja, tudo aquilo que era feito repetidas vezes para configurar, atualizar um servidor ou serviço, pode ser automatizado com Ansible.

Bem vindo ao mundo da automação 🙂

Obviamente o Ansible não é a única ferramenta que pode fazer esse trabalho, temos outras ferramentas como Chef, Puppet, Saltstack. Todas elas tem suas características, qualidades e defeitos em particular, não realizar comparação entre essas ferramentas, vou somente dar a minha posição de o por que escolhi o Ansible.

Simplicidade e recursos:

Ansible foi desenvolvido em Python, então praticamente todas as versões de Linux terão suporte a mesma.
Mais de 1000 módulos para tudo quanto é tipo de áreas: banco de dados, monitoramento, nuvem e até para Windows.
Comandos “ad-hoc” diretamente para diversos recursos. Podemos criar playbooks usando o padrão YAML de fácil entendimento.
Possui módulos para Docker, Vmware, Proxmox, AWS, Openstack, Azure, gerenciamento de pacotes, enfim, são muitos módulos mesmo. Caso queira ver a lista completa, acesse este endereço.

Sem agentes:

Principal recurso que me fez optar em estudar o Ansible foi pelo fato de não necessitar o uso de agentes nos clientes, basta que o cliente tenha Python instalado e acesso via SSH ou Winrm para Windows.

Instalação Ansible:

A instalação segue o mesmo nível de simplicidade de seu uso, basta utilizar o gerenciador de pacotes de sua distribuição:

Ubuntu:

Centos, Fedora:

Execução: AD HOC vs Playbook

Essa são as duas maneiras que temos de executar nossos comandos no Ansible como dito anteriormente. Um arquivo muito importante para é o /etc/ansible/hosts onde a gente pode organizar as máquinas onde poderemos realizar as execuções, em breve escrevei um artigo com alguns macetes desse arquivo.

Vamos por a mão na massa executando nosso primeiro comando em localhost, somente para teste usaremos o módulo “ping” :

Sucesso, tivemos o retorno do ping do nosso localhost ;).

Bom no próximo artigo irei explicar como realizar execuções em algumas máquinas remotas ao mesmo tempo e alguns outro macetes. Até a próxima!