Em algumas ocasiões, quando você está usando o Ansible para automatizar várias tarefas, pode ser necessário transformar e manipular dados. Em Ansible, você pode usar um conjunto de filtros embutidos ou criar filtros personalizados para manipular, processar e converter dados. Ansible usa filtros de modelo Jinja2 em segundo plano para permitir que os usuários criem filtros para dados especificados.
É importante observar que o modelo de filtro é realizado no controlador Ansible, e não nos hosts remotos especificados. Isso ajuda a reduzir a quantidade de dados transferidos para o host remoto após o processamento local. Se você não está familiarizado com o modelo Jinja, Jinja é uma linguagem de modelos simples, intuitiva, rápida e segura para a linguagem de programação Python desenvolvida após os modelos populares de Django da estrutura Python.
Não vamos entrar em como o modelo Jinja funciona, embora possa ser uma vantagem adicional para entender como funciona com modelos.
Confira o recurso fornecido abaixo para saber mais sobre Jinja.
https: // linkfy.para/jinjadocs
Como os filtros Ansible funcionam
Como mencionado, o mecanismo de filtragem Ansible se baseia no modelo de modelos Jinja. Isso permite que os usuários usem esses modelos para inserir dados, processe -os e forneça uma saída com base nos filtros definidos.
Depois que os dados são transformados e filtrados usando o modelo definido, você pode usá -los para executar outras tarefas em Ansible. Você pode aprender mais sobre os filtros em Ansible no seguinte site:
https: // linkfy.para/AnsibleFilters
Ansible tem muitos filtros que são muito úteis e aplicáveis a muitos cenários diferentes. Depois de ter a saída do filtro, você pode usá -lo para executar outras tarefas, como depuração.
A sintaxe geral para filtrar dados é a seguinte:
|
Usando filtros Ansible
Agora veremos exemplos de filtros Ansible que podemos usar para executar várias tarefas.
OBSERVAÇÃO: Como mencionado anteriormente, Ansible tem muitos filtros, para que não possamos cobrir todos eles neste artigo. Em vez disso, este tutorial procura fornecer o básico do uso de vários filtros Ansible.
Exemplo 1: Ansible Format Data Filters
Os filtros de dados do formato Ansible pegam uma estrutura de dados de saída em um modelo e usa o filtro especificado para renderizá -lo no formato chamado no filtro.
Abaixo está um exemplo de filtro para converter para JSON e YAML:
variável | to_json
variável | to_yaml
Por exemplo, considere o seguinte manual:
- Hosts: todas as tarefas:
- Shell: Cat /TMP /All.JSON
registro: resultado
- depurar:
msg: "resultado.stdout | to_nice_yaml "
A execução do manual acima produzirá uma saída para os dados JSON convertidos em YAML. A seguir, é apresentado um exemplo de saída:
Você também pode especificar outros filtros, como TO_NICE_YAML, para obter a saída em um formato legível por humanos.
variável | to_nice_json
variável | to_nice_yaml
Usando os filtros de dados de formatação, você pode transformar dados em vários formatos e usá -los para várias tarefas.
Por exemplo, você pode passar por cordas YAML de vários documentos parse, como no manual abaixo:
- Hosts: todas as tarefas:
- Shell: Cat /TMP /All.JSON
registro: resultado
- depurar:
msg: "resultado.stdout | to_yaml | lista"
Exemplo 2: filtro padrão Ansible
O filtro padrão Ansible ajuda a valores padrão para variáveis indefinidas. A configuração Ansible padrão falha variáveis indefinidas. Por exemplo, se você tiver uma variável indefinida, poderá dizer a Ansible para padrão para um valor em vez de levantar um erro.
A sintaxe geral para o filtro padrão é a seguinte:
| valor padrão)
Por exemplo:
- Hosts: todos
VARs:
tarefas:
set_fact:
undef_var: "0_var | default (5)"
O manual acima definirá o valor da variável '0_var' para 5 se não for explicitamente definido, em vez de lançar um erro.
Para definir uma variável, você pode usar o filtro obrigatório. Tudo o que você precisa fazer é consultar o exemplo acima e substituir o padrão pelo obrigatório:
0_var | obrigatório
Exemplo 3: Filtros de depuração Ansible
Ao depurar, você pode usar o filtro Type_debug para obter informações sobre o tipo de variável. O tipo de variável estará em Python, pois o motor é baseado em Python. A sintaxe geral para o filtro é a seguinte:
variável | type_debug
Exemplo 4: Filtros matemáticos
Os filtros de matemática Ansible permitem que você realize consultas relacionadas à matemática. Esses filtros incluem o seguinte:
Esses filtros de matemática podem ser bastante úteis, especialmente ao lidar com grandes quantidades de dados e operações de matemática instantâneas.
Exemplo 5: Filtros de hash
Os filtros Ansible Hash permitem que você obtenha o hash de uma string ou dados passados. Na maioria dos casos, você não precisará desses filtros, mas eles estão disponíveis para uso, se necessário. Esses filtros incluem o seguinte:
Outros filtros úteis
Como você deve ter notado, Ansible tem muitos filtros. Alguns filtros Ansible que você pode achar úteis incluem o seguinte:
Conclusão
Os filtros Ansible são úteis quando você está executando tarefas de depuração ou precisa de informações específicas sem muito digitação. Como Ansible suporta filtros personalizados, esses filtros podem ser especialmente úteis em casos de uso específicos.