Ansible SelectAtTr/RejectatTr

Ansible SelectAtTr/RejectatTr

Os filtros Jinja2 são uma ferramenta incrivelmente forte que pode nos ajudar com uma variedade de atividades para manipular informações em Ansible. Com base nisso, vamos discutir os filtros Ansible SelectAtTtr e RejeitatTtr Jinja neste artigo. Mas antes de pular para o selectAtTtr e rejeitar, vamos primeiro entender qual é o papel dos filtros em Jinja2.

Quais são os filtros de Jinja2 em Ansible?

Quando exigimos informações de manuseio, estruturação e tradução, usamos Ansible. O Jinja2 oferece vários filtros pré-construídos, bem como filtros personalizáveis ​​criados pelo usuário. Esses filtros são filtros Jinja2 que trabalham no back -end, que transforma as informações fornecidas dentro de uma expressão de modelo. Os servidores remotos direcionados não estão envolvidos no modelo, ocorre no sistema de controladores Ansible. Como resultado, os filtros são aplicados aos dados locais que o Ansible Controller fornece. Além disso, os filtros SelectAtTtr e Rejeitattr da Ansible são derivados desses filtros.

Filtro selectAtTr em Ansible

O selectAtTtr significa Filtro de atributo Select. Cada atributo selecionado é usado para executar testes em cada objeto que é um atributo definido e apenas escolher aqueles que passam nos filtros de teste, é uma sucessão de itens. O resultado do atributo selecionado seria avaliado como um booleano, embora nenhum teste seja definido em Ansible. No filtro Ansible SelectAttr, três parâmetros são passados ​​em Ansible, que são o atributo, um operador booleano e um argumento. Um dos testes internos de Jinja pode ser selecionado como o operador.

Exemplo:

Aqui está um exemplo simples em que vamos utilizar o filtro SelectAtTr em Ansible. Para entender como funcionará em Ansible, vamos implementar um cenário para que entenderemos como ele funcionará em Ansible. Para fazer isso, primeiro, criaremos um manual porque os manuais são coleções de instruções que passam por hosts remotos de alvo de forma autônoma.

Um manual Ansible tem módulos diferentes e cada módulo realiza uma certa funcionalidade. Cada módulo fornece metadados que estabelecem quando, onde e pelo qual host remoto a tarefa é realizada. A seguir, o comando escreveremos no terminal para criar um manual.

[root@master Ansible]# Nano Ansible_filter.yml

Para criar o manual, também escrevemos a extensão do manual, que é Yaml, ou mais uma linguagem de marcação, que é um formato de arquivo que usa a extensão.yml. Agora o manual é lançado em um novo terminal Ansible do nome Ansible_filter.yml. No manual, primeiro escrevemos as informações sobre os hosts remotos. Nos hosts, estamos usando o host local como um host remoto de destino.

Em seguida, passamos o valor "verdadeiro" para a opção Gather_Facts no manual para que possamos obter todas as informações relacionadas ao host local na saída. Depois de estabelecer o host, agora faremos uma lista de todas as tarefas que pretendemos concluir. O primeiro nome da tarefa é "todas as variáveis ​​do ambiente" e passamos a variável nele para que possamos depurar. Na próxima tarefa, queremos ativar o filtro de Jinja2 que é usado em Ansible, que é o filtro SelectAtTr. No filtro SelectAttr, passamos os três argumentos que são a chave, a correspondência e o shell.

- anfitriões:
- LocalHost
Gather_facts: Verdadeiro
tarefas:
- Nome: todas as variáveis ​​de ambiente
depurar:
var: 'Ansible_facts.Env '
- Nome: filtro habilitado
depurar:
msg: "(Ansible_facts.Env | dict2Items | selectAtTtr ('key', 'Match', 'Shell')) | lista "

Depois de listar todas as tarefas, queremos executar, encerraremos o manual, atingindo o Ctrl + X e depois salvaremos as atualizações. Agora, queremos executar o manual, escreveremos o comando abaixo no terminal:

[root@master Ansible]# Ansible-playbook Ansible_filter.yml

Aqui está a vitrine necessária, utilizando o atributo SelectAtTr no manual. Como você viu, obtivemos uma saída muito longa porque usamos a opção de fato de encontro como uma verdadeira no manual. Então, é por isso que está exibindo todas as informações do host localizador na saída no terminal Ansible.

Como mostrado, o atributo de seleção é ativado mostrando o sinal OK no final do terminal de saída.

Filtro rejeitado em Ansible

O rejectattr significa o atributo rejeitado de Jinja2 em Ansible e é o oposto de Selectattr. O rejectattr remove todos os itens do iterable especificado que não satisfazem o atributo fornecido e passam com sucesso no teste. A realização de testes em cada item dado o atributo, como parte do processo de filtragem, resulta na rejeição de todos os itens que passarem no teste. Uma avaliação booleana do valor do atributo ocorrerá se nenhum teste for fornecido.

Exemplo:

Aqui está o exemplo de que vamos executar usando um dos atributos importantes de Jinja2 em Ansible, que é o atributo de rejeição. Neste exemplo, estamos tentando aplicar uma condição a cada item de um dicionário para eliminar itens correspondentes do dicionário. Então, para isso, lançaremos novamente o manual para que possamos alterar as tarefas de acordo com o atributo rejeitado. Abaixo está o comando para iniciar o Module_filter.Playbook YML:

[root@master Ansible]# Nano Ansible_filter.yml

Agora, no manual, passamos a opção "falsa" para a coleta de fatos porque não queremos obter as informações extras relacionadas ao host local, pois já obtivemos as informações no exemplo do filtro SelectAtTr. Agora, vamos escrever a variável no manual. No VARS, temos que escrever o nome e o tipo de medicamentos. Em seguida, temos que escrever a tarefa. Na tarefa, queremos filtrar todos os medicamentos, exceto os supositórios e depurarmos, passando o filtro rejectattr nele.

- anfitriões:
- LocalHost
Gather_Facts: False
VARs:
medicação:
- Nome: Sarampo, Tipo: Injeções
- Nome: Nepawell, tipo: gotas
- Nome: Colace, Tipo: Suppositórios
tarefas:
- Nome: Filtre todos os medicamentos além dos supositórios
depurar:
msg: "(medicamentos | rejeitattr ('type', 'Match', 'Suppositórios')) | List"

Agora, vamos encerrar o manual. Depois disso, queremos executar o manual para que possamos obter a saída adequada do atributo rejeitado de Ansible.

[root@master Ansible]# Ansible-playbook Ansible_filter.yml

Aqui está o resultado de um atributo de rejeição na ferramenta Ansible. O terminal está exibindo sarampo e medicina nepawell e rejeita o remédio colácio do manual.

Conclusão

Aprendemos o que são os filtros em Jinja2 e quais filtros vamos usar nesta sessão de Ansible. Discutimos os dois filtros importantes que são os filtros SelectAtTtr e RejeitatTtr em Ansible. Implementamos cada exemplo de um filtro para que os usuários possam entender facilmente os conceitos e o funcionamento desses filtros em Ansible.