como trabalhar com variáveis e fatos possíveis-Parte 8

mencionamos variáveis nesta série Anossível e apenas para refrescar a sua mente um pouco. Uma 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 letras, números, sublinhados ou uma mistura de 2 ou todos eles. No entanto, tenha em mente 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 válido e inaceitável nomes de variáveis:

Nome de Variável Válido Exemplos:

football foot_ballfootball20 foot_ball20

Não-Nome de Variável válido Exemplos:

foot ball20 foot-ball

Vamos discutir os tipos de variáveis:

Playbook Variáveis

Playbook variáveis são bastante fáceis e simples. Para definir uma variável em um playbook, basta usar a palavra-chave vars antes de escrever suas variáveis com indentação.

para acessar o valor da variável, coloque-o entre os suspensórios duplos enrolados, fechados com aspas.

aqui está um exemplo simples de manual:

- hosts: all vars: greeting: Hello world! tasks: - name: Ansible Basic Variable Example debug: msg: "{{ greeting }}"

no playbook acima, a variável de saudação é substituída pelo valor Hello world! quando o manual for executado. O livro de jogadas simplesmente imprime a mensagem Hello world! quando executado.

Playbook Variáveis em Ansible

Além disso, você pode ter uma lista ou uma matriz de variáveis, conforme mostrado abaixo:

O playbook abaixo mostra uma variável chamada continentes. A variável possui 5 valores diferentes-nomes de continentes. Cada um destes valores pode ser facilmente acessado usando o índice 0 como a primeira variável.

o exemplo do playbook abaixo recupera e exibe a Ásia (Índice 1).

Matriz de Variáveis em Ansible

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

vars: Continents: 

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

listar variáveis de matriz Anível

outro tipo de variável Anível é a variável do dicionário.

as variáveis do dicionário são adicionalmente suportadas no livro de jogadas. Para definir a variável do dicionário, basta identificar o par chave-valor logo abaixo do nome da variável do dicionário.

hosts: switch_f01vars: http_port: 8080 default_gateway: 10.200.50.1 vlans: id: 10 port: 2

no exemplo acima, vlans é a variável do dicionário, enquanto id e port são os pares chave-valor.

for port_id, since we are starting the value with text and not the variable, quotation marks are not necessary to surround the curly braces.

variáveis especiais

Ansible fornece uma lista de variáveis predefinidas que podem ser referenciadas em modelos Jinja2 e playbooks, mas não podem ser alterados ou definidos pelo Usuário.

colectivamente, a lista de variáveis predefinidas é referida como factos Aníveis e estes são recolhidos quando um livro de jogadas é executado.

Para obter uma lista de todos os Ansible variáveis, use o módulo de configuração do Ansible ad-hoc de comando, como mostrado abaixo:

# ansible -m setup hostname

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

# ansible -m setup localhost
Lista Ansible Variáveis

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

Existem muitos outros Ansible variáveis especiais, estes são apenas alguns exemplos.

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

variáveis de Inventário

por último, na lista, temos variáveis de inventário possíveis. Um inventário é um arquivo em formato INI que contém todos os hosts a serem gerenciados pelo an possible.

em inventários, você pode atribuir uma variável a um sistema hospedeiro e, mais tarde, usá-la em um playbook.

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=ubuntu http_port=8080

o acima pode ser representado em um arquivo PlayBook YAML como mostrado:

--- web_servers: web_server_1: ansible_user=centos http_port=80web_server_2: ansible_user=ubuntu http_port=8080

se os sistemas de hospedagem compartilham as mesmas variáveis, você pode definir outro grupo no arquivo de inventário para torná-lo menos pesado e evitar repetição desnecessária.

Por exemplo:

web_server_1 ansible_user=centos http_port=80web_server_2 ansible_user=centos http_port=80

O acima pode ser estruturado como:

web_server_1web_server_2ansible_user=centoshttp_port=80

E no playbook arquivo YAML, isso vai ser definido, como mostrado:

--- web_servers: hosts: web_server_1: web_server_2: vars: ansible_user=centos http_port=80

Ansible Fatos

Ao executar os playbooks, a primeira tarefa que Ansible não é a execução da tarefa de instalação. Tenho a certeza que deves ter encontrado a saída.:

TASK: *********

os factos Aníveis não são mais do que Propriedades do sistema ou peças de Informação Sobre nós remotos a que você se conectou. Esta informação inclui a arquitetura do sistema, a versão do so, informações da BIOS, hora e data do sistema, uptime do sistema, endereço IP e informações de hardware para mencionar apenas alguns.

conhecer os fatos sobre qualquer sistema, basta utilizar o módulo de configuração, como mostrado no comando abaixo:

# ansible -m setup hostname

Por exemplo:

# ansible -m setup database_server

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

Ansible Obter do Sistema Fatos

Ansible fatos são úteis para ajudar os administradores de sistema que operações a realizar, por exemplo, dependendo do sistema operacional, eles são capazes de saber quais os pacotes de software precisa ser instalado, e como eles devem ser configurados, etc.

factos personalizados

também sabia que pode criar os seus próprios factos personalizados que podem ser recolhidos por an possible? Podes, sim. Então, como é que se faz? Vamos mudar de assunto e ver como.

o primeiro passo é criar a/etc/anible / facts.d pasta no nó controlado ou remoto.

dentro deste directório, crie um(s) ficheiro (s) com uma extensão .fact. Este(S) arquivo (s) irá devolver os dados JSON quando o playbook é executado no nó de controle Anossível, que é inclusivo dos outros fatos que An possible recupera após uma execução playbook.

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

# mkdir -p /etc/ansible/facts.d# vim /etc/ansible/facts.d/date_time.fact

adicione nela as seguintes linhas.

#!/bin/bashDATE=`date`echo "{\"date\" : \"${DATE}\"}"

gravar e sair do ficheiro.

agora atribuir as permissões de execução:

# chmod +x /etc/ansible/facts.d/date_time.fact

Now, I created a playbook on an possible control node called check_ date.yml.

---- hosts: webservers tasks: - name: Get custom facts debug: msg: The custom fact is {{ansible_local.date_time}}

adicione o ficheiro fact à variável ansible_ local. O ansible_local armazena todos os fatos personalizados.

Agora execute o playbook e observar Ansible recuperar informações salvas no fato de arquivo:

# ansible_playbook check_date.yml
Criar Ansible Personalizado Fatos
Conclusão

Isto traz-nos para o final deste tutorial em trabalhar com Ansible variáveis e fatos.

Deixe uma resposta

O seu endereço de email não será publicado.

Previous post STEPHEN SCHWARTZ-mau compositor
Next post 7 maneiras que seus filhos poderiam contornar o software de Controle Parental