Manipular dados Ansible usando filtros Jinja

Manipular dados Ansible usando filtros Jinja

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:

  1. Filtro logaritmo - variável | log - Especifica a base do logaritmo entre parênteses como variável | log (2)
  2. Filtro de energia - variável | Pow (3) - Retorna a variável elevada ao poder especificado
  3. Filtro absoluto - variável | ABS - Retorna o valor absoluto para a variável passada
  4. Filtro de raiz - variável | raiz - Isso retorna a raiz quadrada da variável. Para especificar explicitamente a raiz, passe o valor entre parênteses; Por exemplo, o cubo raiz variável | raiz (3)

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:

  1. SHA1 - var | Hash ("sha1")
  2. SHA256/SHA512 - var | Password_hash ("SHA256/512")
  3. MD5 - var | Hash ("MD5")
  4. String de soma de verificação - var | soma de verificação

Outros filtros úteis

Como você deve ter notado, Ansible tem muitos filtros. Alguns filtros Ansible que você pode achar úteis incluem o seguinte:

  • Filtro de divisão da URL - “Desenvolvedor@https: // linuxhint.com: 8080/índice.html?consulta = linux ”| Urlspilt ("HostName"), - Retorna "Linuxhint.com ”
  • Junte -se à lista - list | JONE - usado para adicionar uma lista em uma string var
  • Caminho de diretório - Path | Dirname
  • Expandir um tilde - Path | Expanduser

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.