Você pode definir três tipos de fatos personalizados em Ansible.
1) Fatos globais: Esses fatos são acessíveis de todos os hosts do 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 host.
3) Fatos do host: Esses fatos são acessíveis apenas de um determinado host.
Neste artigo, vou mostrar como trabalhar com fatos personalizados 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 Ansible Automation.
Existem muitos artigos sobre Linuxhint dedicados à instalação do Ansible e configurando hosts para Ansible Automation. Você pode conferi -los se necessário.
Configurando um diretório de projeto:
Antes de começarmos, vamos criar um diretório de projeto para que possamos organizar nossos arquivos de projeto.
Para criar um diretório de projeto Factos personalizados/ na tua LAR Diretório, execute o seguinte comando:
$ mkdir -pv Custom -Facts/Playbooks, Host_vars, Group_vars
Agora, navegue para o Factos personalizados/ diretório da seguinte maneira:
$ CD Custom-Facts/
Crie um arquivo de configuração Ansible Ansible.cfg No seu diretório de projeto da seguinte maneira:
$ Nano Ansible.cfg
Digite as seguintes linhas sua Ansible.cfg arquivo.
[Padrões]Depois de terminar, pressione + X seguido pela Y e Para salvar o Ansible.cfg arquivo de configuração.
Agora, crie um arquivo de inventário Ansible anfitriões No seu diretório de projeto da seguinte maneira:
$ nano hosts
Digite as seguintes linhas em seu Anfitrião arquivo de inventário.
VM1.NodeKite.comDepois de terminar, pressione + X seguido pela Y e Para salvar o anfitriões arquivo de inventário.
Para listar todos os hosts disponíveis em seu arquivo de inventário, execute o seguinte comando:
$ Ansible All-Lista-HOSTS
Como você pode ver, eu tenho seis hosts no meu arquivo de inventário.
Para listar os hosts disponíveis no rede Grupo do seu arquivo de inventário, execute o seguinte comando:
$ Ansible web-lista-hosts
Como você pode ver, eu 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 do seu arquivo de inventário, execute o seguinte comando:
$ Ansible Bathabase-Lista-HOSTS
Como você pode ver, eu tenho dois hosts (vm5.NodeKite.com e vm6.NodeKite.com) no base de dados Grupo do meu arquivo de inventário.
Trabalhando com fatos globais Ansible:
Nesta seção, vou mostrar como definir fatos/variáveis globais 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 globais em um arquivo separado.
Primeiro, abra o Anfitrião Arquivo de inventário com o seguinte comando:
$ nano hosts
Agora, adicione as linhas marcadas em seu Anfitrião arquivo de inventário. Depois de 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 Playbooks/ diretório da seguinte maneira:
$ nano Playbooks/print_global_fff.YamlEm seguida, digite as seguintes linhas no Print_global_fact.Yaml arquivo.
- Hosts: todosO objetivo deste manual é imprimir o web_url fato global.
Depois de 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 maneira:
$ Ansible-Playbook Playbooks/print_global_fft.YamlComo você pode ver, todos os hosts do 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 isso.
Primeiro, vamos remover os fatos globais do Anfitrião arquivo de inventário.
$ nano hosts
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 todos no group_vars/ diretório da seguinte maneira:
$ 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
Depois de 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_fft.YamlComo você pode ver, todos os hosts do meu arquivo de inventário podem acessar o fato global web_url.
Trabalhando com fatos de grupo Ansible:
Nesta seção, vou mostrar como definir fatos/variáveis de grupo Ansible em seu arquivo de inventário e acessá -las a partir de seus manuais Ansible. Também mostrarei como definir fatos/variáveis em grupo em um arquivo separado.
Primeiro, abra o Anfitrião Arquivo de inventário com o seguinte comando:
$ nano hosts
Se você tem um grupo anfitrião grupo 1, Em seguida, você adiciona fatos/variáveis em grupo para esse grupo host em um Grupo1: VARS Seção do seu arquivo de inventário.
[grupo 1]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.
Depois de 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 Playbooks/ diretório da seguinte maneira:
$ nano Playbooks/print_group_facts.YamlDigite as seguintes linhas em seu print_group_facts.Yaml arquivo.
- Hosts: WebDepois de 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 maneira:
$ Ansible-Playbook Playbooks/print_group_facts.YamlComo você pode ver, os anfitriões 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 em grupo em um arquivo separado.
Primeiro, abra o Anfitrião Arquivo de inventário da seguinte forma:
$ nano fatos
Remova as linhas marcadas do Anfitrião arquivo de inventário. Depois de terminar, pressione + X seguido pela Y e Para salvar o anfitriões arquivo de inventário.
Como estamos adicionando variáveis de grupo para o rede Grupo de host, crie um novo arquivo rede (o mesmo que o nome do grupo) no group_vars/ diretório da seguinte maneira:
$ nano group_vars/web
Para adicionar os fatos do grupo nome do domínio e Database_backend para o rede grupo anfitrião, adicione as seguintes linhas no group_vars/web arquivo.
domain_name: web.Linuxhint.comDepois de 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, executar o print_group_facts.Yaml Manual da seguinte maneira:
$ Ansible-Playbook Playbooks/print_group_facts.YamlComo você pode ver, os anfitriões no rede Grupo pode acessar o nome do domínio e Database_backend Fatos/variáveis do grupo.
Trabalhando com fatos anfitriões Ansible:
Nesta seção, vou mostrar como definir fatos/variáveis do Ansible Host em seu arquivo de inventário e acessá -los a partir de seus manuais Ansible. Também mostrarei como definir fatos/variáveis do host em um arquivo separado.
Primeiro, abra o Anfitrião Arquivo de inventário com o seguinte comando:
$ nano hosts
Você pode adicionar fatos/variáveis do host após o nome do DNS ou o endereço IP do host em seu arquivo de inventário da seguinte forma:
www.domain1.com variável1 = value1 variável2 = value2Por exemplo, você pode adicionar fatos/variáveis host nome do domínio e Database_backend para os anfitriões VM3.NodeKite.com e vm4.NodeKite.com, conforme marcado na captura de tela abaixo.
Observe que o valor do nome do domínio e Database_backend Fatos/variáveis são diferentes para cada host.
Depois de terminar de adicionar os fatos/variáveis do host, pressione + X, seguido pela Y e Para salvar o Anfitrião arquivo de inventário.
Como adicionei os mesmos fatos/variáveis que nos fatos/variáveis do grupo, podemos usar o print_group_facts.Yaml Playbook para testar a acessibilidade desses fatos/variáveis também.
Execute o print_group_facts.Yaml Manual da seguinte maneira:
$ Ansible-Playbook Playbooks/print_group_facts.YamlComo você pode ver, os fatos/variáveis do host são acessíveis ao seu host especificado. Os valores são diferentes para cada host também.
Como cada um dos hosts está em uma linha separada no meu arquivo de inventário, eu poderia facilmente adicionar fatos/variáveis do host no meu arquivo de inventário. Mas, se você usar intervalos para definir hosts em seu arquivo de inventário, como marcado na captura de tela abaixo, não poderá adicionar fatos/variáveis do host como esse.
Você pode adicionar fatos/variáveis host em um arquivo separado, assim como você fez para os fatos/variáveis globais e de grupo.
Para adicionar fatos/variáveis do host para o vm5.NodeKite.com host, crie um novo arquivo vm5.NodeKite.com (o mesmo que o nome DNS do host) no host_vars/ diretório da seguinte maneira:
$ nano host_vars/vm5.NodeKite.com
Você pode adicionar os fatos/variáveis do host db_port e db_name para o host vm5.NodeKite.com com as seguintes linhas.
DB_PORT: 3306
DB_NAME: Demo1
Depois de terminar, pressione + X seguido pela Y e Para salvar o vm5.NodeKite.com arquivo.
Da mesma maneira, para adicionar fatos/variáveis do host para o host vm6.NodeKite.com, Crie um novo arquivo vm6.NodeKite.com no host_vars/ diretório da seguinte maneira:
$ nano host_vars/vm6.NodeKite.comVocê pode adicionar os fatos/variáveis do host db_port e db_name para o host vm6.NodeKite.com com as seguintes linhas.
DB_PORT: 8877Depois de 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 Playbooks/ diretório da seguinte maneira:
$ nano Playbooks/print_host_facts.YamlAgora, digite as seguintes linhas no print_host_facts.Yaml arquivo.
- Hosts: banco de dadosDepois de 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, executar o print_host_facts.Yaml Manual da seguinte maneira:
$ Ansible-Playbook Playbooks/print_host_facts.YamlComo você pode ver, os anfitriões vm5.NodeKite.com e vm6.NodeKite.com pode acessar o db_name e db_port fatos/variáveis anfitriões.
Juntando tudo: fatos ansiáveis precedência
Nesta seção, vou falar sobre a precedência Ansible Fact/Variable. Então vamos começar.
Antes de começarmos, vamos limpar o arquivo de inventário.
Abra o Anfitrião Arquivo de inventário com o seguinte comando:
$ nano hosts
Remova a seção marcada do arquivo de inventário.
É assim que seu arquivo de inventário deve olhar para este ponto.
Agora, adicione a linha marcada em seu arquivo de inventário. Essas 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 fatos/variáveis do hospedeiro para o VM3.NodeKite.com e vm4.NodeKite.com hosts, conforme marcado na captura de tela abaixo.
Depois de terminar, pressione + X seguido pela Y e Para salvar o arquivo de inventário.
Para imprimir o valor dos fatos/variáveis globais, de grupo e host fact_precendence.Yaml no Playbooks/ diretório da seguinte maneira:
$ nano Playbooks/fact_precedence.YamlDigite as seguintes linhas no fact_precedence.Yaml arquivo.
- Hosts: todosDepois de terminar, pressione + X seguido pela Y e Para salvar o fact_precedence.Yaml arquivo.
Para imprimir os fatos/variáveis globais, em grupo e hospedeiros, execute o fact_precedence.Yaml Manual da seguinte maneira:
$ Ansible-Playbook Playbooks/fact_precedence.YamlComo você pode ver, os fatos/variáveis globais, em grupo e hospedeiros 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 o grupo e os fatos/variáveis globais (2).
A precedência de fato/variável de Ansible é a seguinte:
Fato do host> Fato do grupo> Fato globalDepois de ler este artigo, você poderá trabalhar confortavelmente com fatos/variáveis globais, em grupo e hospedeiros Ansible. Lembre -se da precedência de fato personalizada de Ansible. Isso o ajudará a depurar seus manuais Ansible mais facilmente.