Como usar tags no Ansible

Como Usar Tags No Ansible



As peças, papéis e tarefas são a estrutura ansible e esta estrutura ansible contém o atributo importante que é chamado de tags no Ansible. Sempre que iniciarmos um playbook no Ansible, você pode empregar os comandos -tags e –skip tags para que possamos executar apenas uma determinada série de tarefas, execuções e funções. Se tivermos um playbook que contém tantas tarefas, mas não queremos executar todas as tarefas do playbook, em vez de executar o playbook inteiro, executaremos apenas algumas tarefas usando o comando tag no playbook do Ansible.

Vamos discutir as tags neste tópico, que são uma das facetas mais importantes do Ansible. Tentaremos explicar o que são tags e como as tags funcionam no Ansible porque esse é um recurso desconcertante da plataforma Ansible.







Por exemplo, um playbook pode conter três responsabilidades: instalar o módulo, configurá-lo e verificar o status do módulo implantado, como se o serviço está em execução e acessível. Como simplesmente precisamos ver o estado dos módulos em algumas máquinas remotas, utilizamos tags Ansible nessa situação, em vez de executar todas as tarefas do playbook. Ele nos permite executar uma determinada operação de forma exclusiva, permitindo reduzir o tempo de execução, mantendo todas as atividades relacionadas em um único playbook.



Pré-requisitos para utilizar as tags no Ansible Playbook

Para colocar os exemplos práticos no software ansible, devemos cumprir os seguintes requisitos.



Um servidor de controle Ansible deve ser necessário para que ele faça alterações. Para utilizar o parâmetro tag no software Ansible, precisamos que os hosts locais se comuniquem com eles. Nesse caso, estamos usando o host local durante toda a execução como um servidor remoto de destino. Vamos criar playbooks, executar comandos de tag Ansible e monitorar os resultados em hosts remotos do dispositivo controlador ansible.





Nosso objetivo será empregar diferentes cenários para examinar algumas das tags do Ansible para que o aluno possa entender facilmente o conceito de tags em um playbook do Ansible.

Exemplo 01: Acessando uma Única Tarefa no Ansible Playbook

Vamos implementar no Ansible fornecendo várias tarefas no playbook e, em seguida, acessaremos apenas uma única tarefa utilizando as tags nela. Para isso, criaremos primeiro o playbook escrevendo o seguinte comando:



[root@master ansible]# nano ansible_tags.yml

Depois de criar e iniciar o playbook ansible_tags.yml. Agora vamos começar a escrever os comandos no playbook. Primeiro, vamos passar os hosts fornecidos no parâmetro “hosts” que usaremos “localhost”. Em seguida, escreveremos o valor “false” no parâmetro “gather_facts” para que não possamos obter as informações extras sobre o localhost quando executarmos o playbook.

Depois disso, começaremos a listar as atividades no parâmetro “tasks” uma a uma que queremos executar. Determinaremos se o documento está na máquina localhost no primeiro processo. Se estiver disponível, iremos armazená-lo no parâmetro “cadastrar” e então daremos um nome único ao tag para que quando executarmos o playbook seja fácil acessarmos o tag. Na segunda tarefa, faremos o mesmo que fizemos na primeira tarefa, mas a tag deve ser única e então usaremos a opção debug para mostrar a tarefa junto com a mensagem relacionada.

- anfitriões:

- localhost
coletar_fatos: falso


tarefas:
- name: Verifica a existência do arquivo x`
stat: path=./host.yml
registrar: fileExists
tags: check_file


- depurar:
msg: '{{ 'Arquivo existe' if fileExists.stat.exists else 'Arquivo não encontrado' }}'
tags: check_file


- name: Verifique se host.yml está acessível pelo usuário atual
shell: stat -c '%a' ./host.yml
registrar: accessPath
tags: check_access


- depurar:
msg: '{{ 'Arquivo acessível' if (accessPath.stdout|int) < 660 else 'Arquivo não acessível' }}'
tags: check_access

Agora, vamos salvar o playbook e depois fechá-lo. Queremos executar o playbook ansible_tags.yml, portanto, escreveremos o seguinte comando no terminal Ansible para mostrar a saída aos usuários.

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

Depois de executar o comando acima, obteremos a saída desejada em retorno. Conforme mostrado abaixo, apenas uma tarefa é executada e é exibida na saída que é “verificar a existência do arquivo”.

Exemplo 02: Ignorar tag específica no manual do Ansible

Aqui está o segundo exemplo da tag Ansible onde vamos para a tag “skip”. Cabe a você decidir se deseja ignorar todas as tarefas ou se deseja ignorar uma tarefa específica do playbook no Ansible. Estamos utilizando a implementação do exemplo 1 e, em seguida, pularemos a tarefa simplesmente escrevendo a instrução abaixo no terminal Ansible.

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

No comando acima, simplesmente ignoramos a tarefa “verificar a existência do arquivo”. Agora, apenas uma única tarefa é exibida na saída, que é “arquivo acessível” em fonte verde.

Exemplo 03: Sempre continue executando a tarefa no Ansible Playbook

Vamos implementar o terceiro exemplo baseado na tag Ansible. Neste exemplo, usaremos a tag “always”, o que significa que uma determinada tag sempre será executada no Ansible Playbook. Para iniciar o playbook, use o seguinte comando:

[root@master ansible]# nano ansible_tags.yml

No playbook, criamos várias tarefas para executar, mas passamos a tag “sempre” na última tarefa que é “excluir a senha do inventário”. A seguir estão os comandos implementados no playbook:

- hosts: todos

coletar_fatos: falso


tarefas:
- nome: Verifica a existência do arquivo
stat: path=./host.yml
registrar: fileExists
delegado_para: localhost
tags: check_file


- depurar:
msg: '{{ 'Arquivo existe' if fileExists.stat.exists else 'Arquivo não encontrado' }}'
tags: check_file


- name: Verifique se host.yml está acessível pelo usuário atual
shell: stat -c '%a' ./host.yml
registrar: accessPath
delegado_para: localhost
tags: check_access


- depurar:
msg: '{{ 'Arquivo acessível' if (accessPath.stdout|int) < 660 else 'Arquivo não acessível' }}'
tags: check_access


- nome: Excluir senha do inventário
arquivo de linha:
caminho: '{{inventory_file}}'
regexp: '\b{{item}}.*\b'
estado: ausente
delegado_para: localhost
tornar-se: falso
tags: sempre
com_itens:
- ansible_password

Depois disso, criaremos o arquivo de inventário para estabelecer a conexão entre o controlador e o host remoto de destino. Segue abaixo o comando:

[root@master ansible]# nano host.yml

Aqui está o arquivo de inventário que contém as informações relacionadas ao “Linux_host” no Ansible.

Todos:

anfitriões:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22

Para obter a saída desejada, executaremos o seguinte comando no terminal Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

Conclusão

As tags no Ansible foram explicadas neste artigo. Agora entendemos a função das tags e os locais no Ansible onde iremos aplicá-las. Para ajudar o aluno a entender o conceito de tags Ansible, desenvolvemos uma variedade de exemplos.