O que é Ansible set_fact

O que é Ansible set_fact
Variáveis ​​nos ajudam a personalizar manuais e tarefas Ansible para trabalhar com diferentes sistemas host e ambientes de trabalho.

Enquanto você pode usar o VARS_FILE, VARS ou incluir_var para configurar variáveis ​​em seus manuais, o módulo set_fact é uma das melhores maneiras de fazer isso, principalmente por causa de sua flexibilidade.

Este tutorial explicará o que é Ansible set_fact, como funciona e como você pode usá -lo.

Entendendo o Ansible set_fact

Diferentemente de outros módulos que permitem definir variáveis ​​Ansible-Think Vars_File, VARS ou Incluir_var-onde você precisa conhecer os valores variáveis ​​de antemão, o módulo Ansible set_facts permite definir variáveis ​​fora do poço, conforme necessário, geralmente em um host -To-hospedeiro.

Variáveis ​​definidas usando set_facts estão disponíveis para execução de manual na mesma peça. No entanto, usando o parâmetro em cache definido como sim, você pode transformar essas variáveis ​​em fatos no cache do fato, tornando-os executáveis ​​através do Playbook Runs-com a precedência do "fato em cache".

Parâmetros Ansible set_fact

Ansible set_fact suporta os seguintes parâmetros:

  • Cache: Este parâmetro booleano tem duas opções: sim e não. Este parâmetro transforma uma variável set_fact em um "fato" armazenado no cache do fato, mas somente se você tiver fato em cache ativado.
  • Valor chave: Variáveis ​​definidas usando o módulo set_fact Use o “key = value“ -ou “chave: valor“ para pares de string yaml - onde a chave é o nome da variável e o valor define o valor da variável.

A seguir, são apresentadas algumas características essenciais do módulo set_fact.

  • O parâmetro Key = Value-Or: Value para YAML somente Booleans e Strings, mas você pode usar o VAR: [VAL20, VAL30] para criar dicionários ou matrizes.
  • Set_fact cria valores de variáveis ​​estáticas
  • Variáveis ​​definidas usando set_fact seguem regras padrão de precedência da variável Ansible; Assim, outros tipos de variáveis ​​com uma prioridade mais alta podem substituir o valor valioso de valor usando set_fact
  • Você não pode usar 'cache' como um nome de fato válido porque Ansible versão 2.4 e posterior como um parâmetro de módulo
  • As variáveis ​​de fato de ajuste são baseadas no hospedeiro e estão disponíveis para o Ansible Playbook subsequente
  • O módulo set_fact também suporta alvos do Windows

Exemplo de Ansible set_fact

Vejamos alguns exemplos para ilustrar usando o set_fact.

No exemplo abaixo, usamos o set_fact para atribuir um valor específico a uma variável e criar um usuário.

---
- Hosts: todos
tornar verdade
tarefas:
- Nome: Criar usuário.
set_fact:
Nome de usuário: Linuxhint
do utilizador:
Nome: "nome de usuário"
Grupo: "nome de usuário"
concha: /bin /bash

No exemplo acima, usamos o módulo set_fact para criar um usuário em um host remoto.

Outro exemplo é usar o set_fact com condicionais. Por exemplo:

---
- Hosts: todos
tornar verdade
tarefas:
- Nome: Apache
set_fact:
PKG: "Apache2"
Quando: Ansible_distribution == "Debian" ou Ansible_distribution == "Ubuntu"
- Nome: httpd
set_fact:
pkg: "httpd"
Quando: Ansible_distribution == 'Centos' ou Ansible_distribution == 'Red Hat Enterprise Linux'

No manual de exemplo acima, definimos o pacote para Apache2 quando a distribuição é Debian ou Ubuntu e Httpd para Centos e Rehl.

Fechamento

O módulo Ansible set_fact permite adicionar flexibilidade aos seus manuais com base nas informações coletadas do host.

Obrigado pela leitura!