Como trabalhar com variáveis ​​e fatos Ansible - Parte 8

Como trabalhar com variáveis ​​e fatos Ansible - Parte 8

Mencionamos variáveis ​​nesta série Ansible e apenas para abrir um pouco a sua mente. A variável, Assim como em muitas linguagens de programação, é essencialmente uma chave que representa um valor.

O que constitui um nome de variável válido?

Um nome de variável inclui cartas, números, sublinhados ou uma mistura de 2 ou todos eles. No entanto, lembre -se de que um nome variável deve sempre começar com uma letra e não deve conter espaços.

Vamos dar uma olhada em alguns exemplos de nomes de variáveis ​​válidos e inaceitáveis:

Exemplos de nomes de variáveis ​​válidos:

Football Foot_ball Football20 Foot_ball20 

Exemplos de nomes de variáveis ​​não validos:

bola de pé de 20 pés 

Vamos discutir os tipos de variáveis:

1. Variáveis ​​de manual

Livro de cantadas as variáveis ​​são bastante fáceis e diretas. Para definir uma variável em um livro de cantadas, Basta usar a palavra -chave vars Antes de escrever suas variáveis ​​com recuo.

Para acessar o valor da variável, coloque -o entre os aparelhos duplos encaracolados fechados com aspas.

Aqui está um exemplo simples de manual:

- Hosts: todos os vars: saudações: Olá Mundo! Tarefas: - Nome: Ansible Basic Variable Exemplo Debug: Msg: " saudações  " 

No manual acima, o saudações A variável é substituída pelo valor Olá Mundo! Quando o manual é executado. O manual simplesmente imprime a mensagem Olá Mundo! quando executado.

Variáveis ​​de manual em Ansible

Além disso, você pode ter uma lista ou uma variedade de variáveis ​​como mostrado:

O manual abaixo mostra uma variável chamada continentes. A variável contém 5 valores diferentes - nomes de continentes. Cada um desses valores pode ser facilmente acessado usando ÍNDICE 0 Como a primeira variável.

O exemplo do manual abaixo recupera e exibe Ásia (índice 1).

- Hosts: All VARs: Continentes: - África - Ásia - América do Sul - América do Norte - Tarefas da Europa: - Nome: Ansible List Variável Exemplo Debug: Msg: "Continents [1]" 
Matriz de variáveis ​​em Ansible

A lista de variáveis ​​pode ser estruturada da mesma forma como mostrado:

VARs: Continentes: [África, Ásia, América do Sul, América do Norte, Europa] 

Para listar todos os itens da lista, use o com_items módulo. Isso irá percorrer todos os valores na matriz.

- Hosts: todos os VARs: Continentes: [África, Ásia, América do Sul, América do Norte, Europa] Tarefas: - Nome: Ansible Array Variáveis ​​Exemplo Debug: Msg: " item  "with_items: -"  continentes  " 
Listar variáveis ​​de matriz Ansible

Outro tipo de variável Ansible é o dicionário variável.

Dicionário as variáveis ​​também são suportadas no manual. Para definir a variável do dicionário, basta identificar o par de valores-chave logo abaixo do nome da variável do dicionário.

Hosts: switch_f01 vars: http_port: 8080 default_gateway: 10.200.50.1 VLANS: ID: 10 Porta: 2 

No exemplo acima, VLANS é a variável de dicionário enquanto eu ia e porta são os pares de valor-chave.

Hosts: switch_f01 vars: http_port: 8080 default_gateway: vlans: id: 10 porta: 20 tarefas: nome: configure o gateway padrão system_configs: default_gateway_ip: “default_gateway“ Nome: port em vlan 10 vlan_f. vlans ['id'] “ port_id: 1/1/ vlans ['porta'] 

Para PORT_ID, Como estamos iniciando o valor com o texto e não a variável, as aspas não são necessárias para cercar os aparelhos encaracolados.

2. Variáveis ​​especiais

A Ansible fornece uma lista de variáveis ​​predefinidas que podem ser referenciadas nos modelos e manuais Jinja2, mas não podem ser alterados ou definidos pelo usuário.

Coletivamente, a lista de variáveis ​​predefinidas Ansible é referida como Fatos Ansible e estes são reunidos quando um manual é executado.

Para obter uma lista de todas as variáveis ​​ansiosas, use o configurar módulo no comando ad-hoc ansible, como mostrado abaixo:

# Ansible -m Setup HostName 

Isso exibe a saída no formato JSON, como mostrado:

# Ansible -M Configurar localhost 
Listar variáveis ​​Ansible

A partir da saída, podemos ver que alguns dos exemplos de variáveis ​​especiais Ansible incluem:

Ansible_architecture Ansible_bios_date Ansible_bios_version Ansible_date_time Ansible_machine Ansible_memefree_MB Ansible_os_family Ansible_selinux 

Existem muitas outras variáveis ​​especiais Ansible, esses são apenas alguns exemplos.

Essas variáveis ​​podem ser usadas em um Jinja2 modelo como mostrado:

  

O nome do host deste servidor da web é Ansible_hostname

Está funcionando Ansible_os_familysistema

3. Variáveis ​​de inventário

Por fim, na lista, temos variáveis ​​de inventário Ansible. Um inventário é um arquivo em Ini formato que contém todos os hosts a serem gerenciados por Ansible.

Nos inventários, você pode atribuir uma variável a um sistema host e posteriormente usá -lo em um manual.

[web_servers] web_server_1 Ansible_user = Centos http_port = 80 web_server_2 Ansible_user = Ubuntu http_port = 8080 

O exposto acima pode ser representado em um manual Yaml arquivo como mostrado:

--- web_servers: web_server_1: Ansible_user = Centos http_port = 80 web_server_2: Ansible_user = Ubuntu http_port = 8080 

Se os sistemas host compartilharem as mesmas variáveis, você poderá definir outro grupo no arquivo de inventário para torná -lo menos complicado e evitar repetição desnecessária.

Por exemplo:

[web_servers] web_server_1 Ansible_user = Centos http_port = 80 web_server_2 Ansible_user = CentOS http_port = 80 

O acima pode ser estruturado como:

[web_servers] web_server_1 web_server_2 [web_servers: vars] Ansible_user = Centos http_port = 80 

E no manual Yaml arquivo, isso será definido como mostrado:

--- web_servers: hosts: web_server_1: web_server_2: vars: Ansible_user = Centos http_port = 80 

Fatos Ansible

Ao executar manuais, a primeira tarefa que Ansible faz é a execução da tarefa de configuração. Tenho certeza de que você deve ter encontrado a saída:

Tarefa: [Reunir fatos] *********** 

Fatos Ansible nada mais são do que propriedades do sistema ou informações sobre nós remotos aos quais você se conectou. Esta informação inclui a arquitetura do sistema, a versão do sistema operacional, as informações do BIOS, a hora e a data do sistema, o tempo de atividade do sistema, o endereço IP e as informações de hardware para mencionar apenas alguns.

Para obter os fatos sobre qualquer sistema, basta usar o configurar módulo como mostrado no comando abaixo:

# Ansible -m Setup HostName 

Por exemplo:

# Ansible -m Setup Database_server 

Isso imprime um grande conjunto de dados em JSON formato como mostrado:

Ansible Get System Facts

Os fatos da Ansible são úteis em ajudar os administradores do sistema quais operações a realizar, por exemplo, dependendo do sistema operacional, eles podem saber quais pacotes de software precisam ser instalados e como devem ser configurados, etc.

Fatos personalizados

Você também sabia que pode criar seus próprios fatos personalizados que podem ser coletados por Ansible? Sim você pode. Então, como você faz isso? Vamos mudar de marcha e ver como.

O primeiro passo é criar um /etc/Ansible/Fatos.d diretório no nó gerenciado ou remoto.

Dentro deste diretório, crie um (s) arquivo (s) com um .facto extensão. Este (s) arquivo (s) retornará JSON Dados quando o manual é executado no nó de controle Ansible, que inclui os outros fatos que Ansible recupera depois de um manual.

Aqui está um exemplo de um arquivo de fato personalizado chamado data hora.facto que recupera a data e a hora.

# mkdir -p/etc/Ansible/fatos.d # vim/etc/Ansible/fatos.d/date_time.facto 

Adicione as seguintes linhas nele.

#!/bin/bash date = "date" echo "\" date \ "": \"" $ date \ """" 

Salvar e sair do arquivo.

Agora atribua as permissões de execução:

# chmod +x/etc/Ansible/fatos.d/date_time.facto 

Agora, criei um manual no nó de controle Ansible chamado check_date.yml.

--- - Hosts: WebServers Tasks: - Nome: Get Facts Custom Debug: MSG: O fato personalizado é Ansible_local.data hora 

Anexar o arquivo de fato ao Ansible_local variável. O Ansible_local armazena todos os fatos personalizados.

Agora execute o manual e observe as informações de recuperação do Ansible salvas no arquivo de fato:

# Ansible_playbook check_date.yml 
Crie fatos personalizados Ansible
Conclusão

Isso nos leva ao final deste tutorial sobre como trabalhar com variáveis ​​e fatos Ansible.

"