Ansible

Como usar os fatos personalizados do Ansible

Como usar os fatos personalizados do Ansible
Os fatos são como variáveis ​​no Ansible. O Ansible gera muitos fatos, dependendo do host que ele automatiza. Se necessário, você também pode definir fatos / variáveis ​​personalizados no Ansible.

Você pode definir três tipos de fatos personalizados no Ansible.

1) Fatos globais: Esses fatos são acessíveis a partir de cada host em seu arquivo de inventário.
2) Fatos do grupo: Esses fatos são acessíveis apenas a partir de um conjunto específico de hosts ou um grupo de hosts.
3) Hospedar fatos: Esses fatos são acessíveis apenas a partir de um determinado host.

Neste artigo, vou mostrar como trabalhar com fatos personalizados do Ansible. Então vamos começar.

Pré-requisitos:

Se você quiser experimentar os exemplos deste artigo,

1) Você deve ter o Ansible instalado em seu computador.
2) Você deve ter pelo menos 6 hosts Linux configurados para automação Ansible.

Existem muitos artigos sobre LinuxHint dedicados à instalação do Ansible e configuração de hosts para automação do Ansible. Você pode verificá-los se necessário.

Configurando um diretório de projeto:

Antes de começar, vamos criar um diretório de projeto para que possamos organizar nossos arquivos de projeto.

Para criar um diretório de projeto fatos personalizados / na tua CASA diretório, execute o seguinte comando:

$ mkdir -pv custom-fatos / playbooks, host_vars, group_vars

Agora, navegue até o fatos personalizados / diretório da seguinte forma:

$ cd fatos personalizados /

Crie um arquivo de configuração Ansible ansible.cfg no diretório do seu projeto da seguinte maneira:

$ nano ansible.cfg

Digite nas seguintes linhas o seu ansible.cfg Arquivo.

[padrões]
inventário = hosts
host_key_checking = False

Assim que terminar, pressione + X seguido pela Y e para salvar o ansible.cfg arquivo de configuração.

Agora, crie um arquivo de inventário Ansible hospedeiros no diretório do seu projeto da seguinte maneira:

hosts $ nano

Digite as seguintes linhas em seu hospedeiro arquivo de inventário.

vm1.nodekite.com
vm2.nodekite.com
[rede]
vm3.nodekite.com
vm4.nodekite.com
[base de dados]
vm [5: 6].nodekite.com

Assim que terminar, pressione + X seguido pela Y e para salvar o hospedeiros arquivo de inventário.

Para listar todos os hosts disponíveis em seu arquivo de inventário, execute o seguinte comando:

$ ansible all --list-hosts

Como você pode ver, tenho seis hosts em meu arquivo de inventário.

Para listar os hosts disponíveis no rede grupo de seu arquivo de inventário, execute o seguinte comando:

$ ansible web --list-hosts

Como você pode ver, tenho dois hosts (vm3.nodekite.com e vm4.nodekite.com) no rede grupo do meu arquivo de inventário.

Para listar os hosts disponíveis no base de dados grupo de seu arquivo de inventário, execute o seguinte comando:

Banco de dados $ ansible --list-hosts

Como você pode ver, tenho dois hosts (vm5.nodekite.com e vm6.nodekite.com) no base de dados grupo do meu arquivo de inventário.

Trabalhando com os fatos globais da Ansible:

Nesta seção, vou mostrar como definir fatos / variáveis ​​globais do Ansible em seu arquivo de inventário e acessá-los a partir de seus manuais do Ansible. Também mostrarei como definir fatos / variáveis ​​globais em um arquivo separado.

Primeiro, abra o hospedeiro arquivo de inventário com o seguinte comando:

hosts $ nano

Agora, adicione as linhas marcadas em seu hospedeiro arquivo de inventário. Assim que terminar, pressione + X seguido pela Y e para salvar o arquivo.

'

Você adiciona fatos globais no todos: vars seção. Aqui, eu adicionei o web_url fato global.

Agora, crie um novo manual print_global_fact.yaml no manuais / diretório da seguinte forma:

$ nano playbooks / print_global_fact.yaml

Em seguida, digite as seguintes linhas no print_global_fact.yaml Arquivo.

- hosts: todos
usuário: ansible
tarefas:
- nome: imprime o valor do fato global 'web_url'
depurar:
msg: 'URL da web: web_url'

O objetivo deste manual é imprimir o web_url fato global.

Assim que terminar, pressione + X seguido pela Y e para salvar o print_global_fact.yaml Arquivo.

Agora, execute o print_global_fact.yaml manual da seguinte forma:

$ ansible-playbook playbooks / print_global_fact.yaml

Como você pode ver, todos os hosts em meu arquivo de inventário podem acessar o fato global web_url.

Você também pode adicionar fatos globais em um arquivo separado. Dessa forma, você pode manter o arquivo de inventário limpo. Vamos ver como fazer.

Primeiro, vamos remover os fatos globais do hospedeiro arquivo de inventário.

hosts $ nano

Agora, remova as linhas marcadas do arquivo de inventário e pressione + X, seguido pela Y e para salvar o arquivo de inventário.

Em seguida, crie um novo arquivo tudo no group_vars / diretório da seguinte forma:

$ nano group_vars / all

Para adicionar o fato global web_url, digite a seguinte linha no group_vars / all Arquivo.

web_url: https: // www.linuxhint.com

Assim que terminar, pressione + X seguido pela Y e para salvar o group_vars / all Arquivo.

Para verificar se você pode acessar o fato global web_url, execute o print_global_fact.yaml manual novamente da seguinte maneira:

$ ansible-playbook playbooks / print_global_fact.yaml

Como você pode ver, todos os hosts em meu arquivo de inventário podem acessar o fato global web_url.

Trabalhando com os fatos do Ansible Group:

Nesta seção, vou mostrar como definir fatos / variáveis ​​do grupo Ansible em seu arquivo de inventário e acessá-los a partir de seus manuais de Ansible. Também mostrarei como definir fatos / variáveis ​​de grupo em um arquivo separado.

Primeiro, abra o hospedeiro arquivo de inventário com o seguinte comando:

hosts $ nano

Se você tem um grupo de host grupo 1, então você adiciona fatos / variáveis ​​de grupo para esse grupo de host em um group1: vars seção do seu arquivo de inventário.

[grupo 1]

[grupo1: vars]
variável1 = valor1
variável2 = valor2

Por exemplo, para adicionar os fatos / variáveis ​​do grupo nome do domínio e database_backends para o rede grupo de host, você pode digitar as linhas marcadas em seu arquivo de inventário.

Assim que terminar, pressione + X seguido pela Y e para salvar o arquivo de inventário.

Para imprimir e testar se podemos acessar os fatos do grupo, crie um novo manual print_group_facts.yaml no manuais / diretório da seguinte forma:

$ nano playbooks / print_group_facts.yaml

Digite as seguintes linhas em seu print_group_facts.yaml Arquivo.

- hosts: web
usuário: ansible
tarefas:
- nome: Imprimir fatos do grupo
depurar:
msg: 'Nome do domínio: domain_name Backend do banco de dados: database_backend'

Assim que terminar, pressione + X seguido pela Y e para salvar o print_group_facts.yaml Arquivo.

Agora, execute o print_group_facts.yaml manual da seguinte forma:

$ ansible-playbook playbooks / print_group_facts.yaml

Como você pode ver, os hosts no rede grupo pode acessar o nome do domínio e database_backend fatos / variáveis ​​do grupo.

Agora, vamos limpar o arquivo de inventário e ver como adicionar fatos / variáveis ​​de grupo em um arquivo separado.

Primeiro, abra o hospedeiro arquivo de inventário da seguinte forma:

fatos $ nano

Remova as linhas marcadas do hospedeiro arquivo de inventário. Assim que terminar, pressione + X seguido pela Y e para salvar o hospedeiros arquivo de inventário.

Como estamos adicionando variáveis ​​de grupo para o rede grupo de host, crie um novo arquivo rede (igual ao nome do grupo) no group_vars / diretório da seguinte forma:

$ nano group_vars / web

Para adicionar os fatos do grupo nome do domínio e database_backend para o rede grupo de host, adicione as seguintes linhas no group_vars / web Arquivo.

domain_name: web.linuxhint.com
database_backend: pgsql

Assim que terminar, pressione + X seguido pela Y e para salvar o group_vars / web Arquivo.

Para verificar se os hosts no rede grupo pode acessar os fatos do grupo, execute o print_group_facts.yaml manual da seguinte forma:

$ ansible-playbook playbooks / print_group_facts.yaml

Como você pode ver, os hosts no rede grupo pode acessar o nome do domínio e database_backend fatos / variáveis ​​do grupo.

Trabalhando com os fatos do Ansible Host:

Nesta seção, vou mostrar a você como definir fatos / variáveis ​​do host Ansible em seu arquivo de inventário e acessá-los a partir de seus manuais de Ansible. Também mostrarei como definir fatos / variáveis ​​de host em um arquivo separado.

Primeiro, abra o hospedeiro arquivo de inventário com o seguinte comando:

hosts $ nano

Você pode adicionar fatos / variáveis ​​de host após o nome DNS ou endereço IP do host em seu arquivo de inventário da seguinte maneira:

www.dominio1.com variável1 = valor1 variável2 = valor2
192.168.22.2 variável1 = valor3 variável2 = valor4

Por exemplo, você pode adicionar fatos / variáveis ​​de host nome do domínio e database_backend para os anfitriões vm3.nodekite.com e vm4.nodekite.com, como marcado na imagem abaixo.

Observe que o valor do nome do domínio e database_backend fatos / variáveis ​​são diferentes para cada host.

Quando terminar de adicionar os fatos / variáveis ​​do host, pressione + X, seguido pela Y e para salvar o hospedeiro arquivo de inventário.

Como eu adicionei os mesmos fatos / variáveis ​​como no exemplo de fatos / variáveis ​​de grupo, podemos usar o print_group_facts.yaml manual para testar a acessibilidade desses fatos / variáveis ​​também.

Execute o print_group_facts.yaml manual da seguinte forma:

$ ansible-playbook playbooks / print_group_facts.yaml

Como você pode ver, os fatos / variáveis ​​do host são acessíveis para seu host especificado. Os valores também são diferentes para cada host.

Como cada um dos hosts está em uma linha separada em meu arquivo de inventário, eu poderia facilmente adicionar fatos / variáveis ​​de host em meu arquivo de inventário. Mas, se você usar intervalos para definir hosts em seu arquivo de inventário, conforme marcado na imagem abaixo, você não pode adicionar fatos / variáveis ​​de host como esse.

Você pode adicionar fatos / variáveis ​​do host em um arquivo separado, assim como fez para os fatos / variáveis ​​globais e de grupo.

Para adicionar fatos / variáveis ​​de host para o vm5.nodekite.com host, crie um novo arquivo vm5.nodekite.com (igual ao nome DNS do host) no host_vars / diretório da seguinte forma:

$ nano host_vars / vm5.nodekite.com

Você pode adicionar os fatos / variáveis ​​do host db_port e db_name para o hospedeiro vm5.nodekite.com com as seguintes linhas.

db_port: 3306
db_name: demo1

Assim que terminar, pressione + X seguido pela Y e para salvar o vm5.nodekite.com Arquivo.

Da mesma forma, para adicionar fatos / variáveis ​​de host para o host vm6.nodekite.com, criar um novo arquivo vm6.nodekite.com no host_vars / diretório da seguinte forma:

$ nano host_vars / vm6.nodekite.com

Você pode adicionar os fatos / variáveis ​​do host db_port e db_name para o hospedeiro vm6.nodekite.com com as seguintes linhas.

db_port: 8877
db_name: app1

Assim que terminar, pressione + X seguido pela Y e para salvar o vm6.nodekite.com Arquivo.

Para imprimir e testar se podemos acessar os fatos / variáveis ​​do host, crie um novo manual print_host_facts.yaml no manuais / diretório da seguinte forma:

$ nano playbooks / print_host_facts.yaml

Agora, digite as seguintes linhas no print_host_facts.yaml Arquivo.

- hosts: banco de dados
usuário: ansible
tarefas:
- nome: Imprimir fatos do host
depurar:
msg: 'Nome do banco de dados: db_name Porta do banco de dados: db_port'

Assim que terminar, pressione + X seguido pela Y e para salvar o print_host_facts.yaml Arquivo.

Para verificar se o host vm5.nodekite.com e vm6.nodekite.com pode acessar os fatos / variáveis ​​do host, execute o print_host_facts.yaml manual da seguinte forma:

$ ansible-playbook playbooks / print_host_facts.yaml

Como você pode ver, os anfitriões vm5.nodekite.com e vm6.nodekite.com pode acessar o db_name e db_port fatos / variáveis ​​do host.

Juntando tudo: Ansible Facts Precedence

Nesta seção, vou falar sobre precedência de fato / variável Ansible. Então vamos começar.

Antes de começarmos, vamos limpar o arquivo de inventário.

Abra o hospedeiro arquivo de inventário com o seguinte comando:

hosts $ nano

Remova a seção marcada do arquivo de inventário.

É assim que seu arquivo de inventário deve parecer neste ponto.

Agora, adicione a linha marcada em seu arquivo de inventário. Estas linhas adicionam os fatos / variáveis ​​globais fact_scope e porta.

Em seguida, adicione as linhas marcadas em seu arquivo de inventário. Essas linhas adicionam o fact_scope e porta fatos / variáveis ​​para os hosts no base de dados grupo.

Finalmente, adicione o fact_scope e porta hospedar fatos / variáveis ​​para o vm3.nodekite.com e vm4.nodekite.com hosts, conforme marcado na imagem abaixo.

Assim que terminar, pressione + X seguido pela Y e para salvar o arquivo de inventário.

Para imprimir o valor dos fatos / variáveis ​​globais, do grupo e do host, crie um novo manual fact_precendence.yaml no manuais / diretório da seguinte forma:

$ nano playbooks / fact_precedence.yaml

Digite as seguintes linhas no fact_precedence.yaml Arquivo.

- hosts: todos
usuário: ansible
tarefas:
- nome: Imprimir todos os fatos
depurar:
msg: 'Escopo do fato: fact_scope Porta: porta'

Assim que terminar, pressione + X seguido pela Y e para salvar o fact_precedence.yaml Arquivo.

Para imprimir os fatos / variáveis ​​globais, de grupo e de host, execute o fact_precedence.yaml manual da seguinte forma:

$ ansible-playbook playbooks / fact_precedence.yaml

Como você pode ver, os fatos / variáveis ​​globais, de grupo e de host são impressos.

Observe que os fatos / variáveis ​​do grupo substituíram os fatos / variáveis ​​globais (1). Além disso, observe que os fatos / variáveis ​​do host substituíram tanto o grupo quanto os fatos / variáveis ​​globais (2).

A precedência de fato / variável de Ansible é a seguinte:

Fato do host> Fato do grupo> Fato global

Conclusão:

Depois de ler este artigo, você deve ser capaz de trabalhar confortavelmente com o Ansible global, o grupo e os fatos / variáveis ​​do host. Lembre-se da precedência de fatos personalizados do Ansible. Isso o ajudará a depurar seus manuais do Ansible mais facilmente.

O botão do meio do mouse não funciona no Windows 10
O botão do meio do mouse ajuda você a percorrer longas páginas da web e telas com muitos dados. Se isso parar, você vai acabar usando o teclado para r...
Como alterar os botões esquerdo e direito do mouse no PC com Windows 10
É normal que todos os dispositivos de mouse de computador sejam ergonomicamente projetados para usuários destros. Mas existem dispositivos de mouse di...
Emular cliques do mouse passando o mouse usando o mouse sem cliques no Windows 10
Usar um mouse ou teclado na postura errada de uso excessivo pode resultar em muitos problemas de saúde, incluindo tensão, síndrome do túnel do carpo e...