Tornando uma playbook Ansible executável

O que você acha de tornar suas playbooks no Ansible executáveis e assim poder chamá-las diretamente sem precisar lembrar quais parâmetros são necessários para seu funcionamento ou ter que ficar lendo os seus READMEs? Se gostou da ideia continue lendo…

Se você não conhece o Ansible dê uma lida nesta página aqui. Mas em termos simples ele nada mais é do que uma ferramenta de orquestração de servidores.

Imagine então que eu tenha uma “playbook” (é assim que chamamos as receitas, ou lista de tarefas a serem executas pelo Ansible) como esta aqui:

---
- name: Instalação do cliente AWS

  hosts:
    all

  roles:
    - aws_cli

A definição da role “aws_cli”, que é onde estão os comandos que realmente validam e instalam os arquivos, está em outro arquivo para não complicar o exemplo.

Assim, todas as vezes que eu quiser instalar o AWS CLI ou apenas confirmar se ele já está instalado da forma que eu espero, bastaria executar algo assim pela linha de comandos:

ansible-playbook --limit webhost[05-19] --ask-become-pass install-aws-cli.yaml

Neste exemplo, eu estaria executando a playbook “install-aws-cli.yaml” em todos os meus servidores com nome webhost05 até webhost19 e pedindo a senha administrativa para poder executar tarefas que requerem privilégios de root.

Ou, assim, se quisesse executar em todos os servidores:

ansible-playbook --ask-become-pass install-aws-cli.yaml

O poder do shebang

O shebang é aquela linha inicial que você encontra em scripts shell, python, perl etc. Veja abaixo alguns exemplos que você já deve ter “esbarrado” por ai inúmeras vezes:

#!/bin/bash
#!/usr/bin/python
#!/usr/bin/env perl

Sempre que você requisita ao shell que execute um determinado arquivo de textos com permissão de execução, ele lê esta primeira linha e espera que ali esteja descrevendo qual é o comando que interpretará o restante do arquivo.

Tornando a playbook executável

Para tornarmos a playbook executável então, basta adicionar uma shebang apontando para o Ansible e com os devidos parâmetros (além de lhe dar o atributo de execução +x).

Veja o resultado abaixo:

#!/usr/bin/env -S ansible-playbook --ask-become-pass
---
- name: Instalação do cliente AWS

  hosts:
    all

  roles:
    - aws_cli

Perceba que acrescentei apenas uma linha no topo do arquivo. O uso do “env -S” é necessário neste caso pois estamos passando argumentos extras para o Ansible.

E com isso, após salvarmos e darmos permissão de execução, sempre que quisermos executar esta playbook poderíamos fazer assim:

./install-aws-cli.yaml --limit webhost[05-19]
./install-aws-cli.yaml

Desta forma você poderá simplificar a execução de suas playbooks sem precisar ficar decorando todos os parâmetros para cada uma delas.

Torne outros arquivos executáveis

O shebang funciona em qualquer tipo de arquivo então se você tiver qualquer arquivo e precisa que ele se torne executável, basta adicionar uma linha inicial com o caminho e nome do arquivo que o interpreta, dar permissão de execução e pronto.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.