Como construir inventário Ansible no formato JSON

Como construir inventário Ansible no formato JSON
Por padrão, um arquivo de inventário Ansible usa o formato de configuração ini. Você também pode usar o formato de configuração JSON (JavaScript Object) para arquivos de inventário Ansible.

Neste artigo, vou mostrar como usar o formato de configuração JSON para construir os arquivos de inventário 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.

Criando um diretório de projeto:

Neste artigo, vou usar o código do Visual Studio para editar o arquivo de configuração Ansible, arquivo de inventário e manuais. Você pode usar qualquer editor ou IDE que quiser.

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

Eu criei um novo diretório de projeto JSON Inventory/ no meu LAR diretório como você pode ver na captura de tela abaixo.

Depois de criar um novo diretório de projeto, abra -o com seu editor de texto ou IDE favorito.

No código do Visual Studio, vá para Arquivo > Pasta aberta… conforme marcado na captura de tela abaixo.

Agora, selecione o diretório do projeto JSON Inventory/ e clique em OK.

O diretório do projeto deve ser aberto com o código do Visual Studio.

Agora, clique em Novo arquivo e crie um novo arquivo Ansible.cfg.

Em seguida, digite as seguintes linhas no Ansible.cfg arquivo.

[Padrões]
inventário = hosts.JSON
host_key_checking = false

Depois de terminar, pressione + S Para salvar o Ansible.cfg arquivo.

Da mesma maneira, crie um anfitriões.JSON arquivo. Este é o arquivo de inventário JSON. Deixe em branco por enquanto. Vamos trabalhar nisso mais tarde.

Agora, clique em Nova pasta e crie um novo diretório Playbooks como mostrado na captura de tela abaixo.

Adicionando hosts ao arquivo de inventário JSON:

Nesta seção, vou mostrar como adicionar hosts ao seu arquivo de inventário no formato JSON.

No anfitriões.JSON arquivo de inventário, você adiciona um todos seção.


"todos":

Em todos Seção, você adiciona um hospedar seção e adicione seus hosts.


"todos":
"Hosts":
"Host1": NULL,
"Host2": nulo


Por exemplo, você pode adicionar os hosts VM1.NodeKite.com e VM2.NodeKite.com no anfitriões.JSON arquivo de inventário da seguinte forma.


"todos":
"Hosts":
"VM1.NodeKite.com ": nulo,
"VM2.NodeKite.com ": nulo


Depois de terminar, pressione + S Para salvar o anfitriões.JSON arquivo.

Você pode verificar quais hosts estão disponíveis em seu arquivo de inventário com o seguinte comando:

$ Ansible-List-host

Como você pode ver, os hosts que adicionei no meu arquivo de inventário (VM1.NodeKite.com e VM2.NodeKite.com) estão listadas.

Agrupando hosts no arquivo de inventário JSON:

Nesta seção, vou mostrar como agrupar hosts em seu arquivo de inventário JSON.

O grupo host padrão em Ansible é todos. O todos Grupo tem todos os anfitriões de todos os grupos (incluindo os hosts de todos grupo).

Você adiciona grupos anfitriões no crianças Seção do seu arquivo de inventário JSON.


"todos":
..
"crianças":
"grupo 1":
,
"Grupo2":



Por exemplo, para adicionar os hosts VM3.NodeKite.com e vm4.NodeKite.com no rede grupo, e para adicionar os hosts vm5.NodeKite.com e vm6.NodeKite.com no dB Grupo, digite as seguintes linhas em seu arquivo de inventário JSON.


"todos":
"Hosts":
"VM1.NodeKite.com ": nulo,
"VM2.NodeKite.com ": nulo
,
"crianças":
"rede":
"Hosts":
"VM3.NodeKite.com ": nulo,
"VM4.NodeKite.com ": nulo

,
"db":
"Hosts":
"VM5.NodeKite.com ": nulo,
"VM6.NodeKite.com ": nulo




Depois de terminar, pressione + S Para salvar o anfitriões.JSON arquivo.

Aqui, as linhas marcadas adicionam os hosts VM3.NodeKite.com e vm4.NodeKite.com no rede grupo.

As linhas marcadas adicionam os hosts vm5.NodeKite.com e vm6.NodeKite.com no dB grupo.

Agora, você pode listar todos os hosts disponíveis no seu arquivo de inventário JSON com o seguinte comando:

$ Ansible-List-host

Como você pode ver, todos os anfitriões de todos os grupos (rede, dB, e todos) Estão exibidas.

Para listar os hosts disponíveis do rede Apenas em grupo, execute o seguinte comando:

$ ANSIBLE-List-Hosts Web

Como você pode ver, todos os hosts no rede Grupo são exibidos.

Da mesma maneira, você pode listar todos os hosts disponíveis do dB Grupo com o seguinte comando:

$ ANSIBLE-Lista-HOSTS DB

Como você pode ver, todos os hosts no dB Grupo são exibidos.

Adicionando fatos globais no arquivo de inventário JSON:

Em Ansible, as variáveis ​​também são chamadas de fatos. Fatos globais ou variáveis ​​globais são acessíveis de todos os hosts de todos os grupos do seu arquivo de inventário JSON. Nesta seção, vou mostrar como adicionar fatos globais ou variáveis ​​globais em Ansible.

Você pode adicionar fatos globais ou variáveis ​​globais no vars seção dentro todos Seção do seu arquivo de inventário JSON da seguinte forma:


"todos":
"Hosts":
..
,
"Vars":
"variável1": "value1",
"variável2": "value2"
,
"crianças":
"rede":
..
,
"db":
..



Por exemplo, você pode adicionar os fatos/variáveis ​​globais Webroot e índice no vars Seção do seu arquivo de inventário JSON da seguinte forma:


"todos":
"Hosts":
"VM1.NodeKite.com ": nulo,
"VM2.NodeKite.com ": nulo
,
"Vars":
"Webroot": "/var/www/html",
"Índice": "índice.php "
,
"crianças":
"rede":
"Hosts":
"VM3.NodeKite.com ": nulo,
"VM4.NodeKite.com ": nulo

,
"db":
"Hosts":
"VM5.NodeKite.com ": nulo,
"VM6.NodeKite.com ": nulo




Depois de terminar, pressione + S Para salvar o arquivo de inventário JSON.

Para verificar se os fatos/variáveis ​​globais estão funcionando, vou criar um novo manual print_vars1.Yaml. O objetivo deste manual é imprimir os fatos/variáveis ​​usando o depurar módulo de Ansible. Também nos ajudará a entender a precedência de fato/variável mais tarde.

Então, crie um novo manual print_vars1.Yaml na tua Playbooks/ diretório e digite as seguintes linhas em seu print_vars1.Yaml arquivo.

- Hosts: todos
Usuário: Ansible
tarefas:
- Nome: Imprimir Webroot e Index
depurar:
msg: 'webroot webroot e index index'

Depois de terminar, pressione + S Para salvar o print_vars1.Yaml arquivo.

Para verificar se os fatos/variáveis ​​globais estão funcionando, execute o print_vars1.Yaml Manual da seguinte maneira:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

O manual deve correr com sucesso.

Role de volta para o TAREFA seção. Como você pode ver, o Webroot e índice Fatos/variáveis ​​são aplicados a todos os hosts do meu arquivo de inventário JSON. Então, fatos/variáveis ​​globais estão funcionando.

Adicionando fatos em grupo no arquivo de inventário JSON:

Você pode adicionar fatos/variáveis ​​para um grupo host específico também. Nesta seção, vou mostrar como adicionar fatos/variáveis ​​em grupo em seu arquivo de inventário JSON.

Eu vou adicionar o mesmo Webroot e índice Fatos no rede Grupo anfitrião do meu arquivo de inventário JSON. O valor desses fatos será diferente. Eu fiz isso para que você também possa entender como os fatos/precedência variável funcionam em Ansible.

Para adicionar os fatos Webroot e índice no rede grupo anfitrião, adicione um vars seção no rede Seção do seu arquivo de inventário JSON da seguinte forma:


"todos":
"Hosts":
"VM1.NodeKite.com ": nulo,
"VM2.NodeKite.com ": nulo
,
"Vars":
"Webroot": "/var/www/html",
"Índice": "índice.php "
,
"crianças":
"rede":
"Hosts":
"VM3.NodeKite.com ": nulo,
"VM4.NodeKite.com ": nulo
,
"Vars":
"webroot": "/web/public_html",
"Índice": "índice.html "

,
"db":
"Hosts":
"VM5.NodeKite.com ": nulo,
"VM6.NodeKite.com ": nulo




Depois de terminar, pressione + S Para salvar o arquivo de inventário JSON.

Para verificar os fatos, execute o print_vars1.Yaml Manual da seguinte maneira:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Como você pode ver, os fatos do grupo Webroot e índice estão disponíveis apenas para os hosts VM3.NodeKite.com e vm4.NodeKite.com, os anfitriões no rede grupo.

Além disso, observe que os fatos do grupo (Webroot e índice) substituiu os fatos globais (Webroot e índice). Então, você pode dizer que os fatos do grupo têm maior precedência do que os fatos globais.

Adicionando fatos host no arquivo de inventário JSON:

Você pode adicionar fatos/variáveis ​​específicos do host em seu arquivo de inventário JSON. Nesta seção, vou mostrar como adicionar fatos/variáveis ​​específicos do host em seu arquivo de inventário JSON.

Para fatos globais ou em grupo, mantivemos o valor dos hosts nulo.

Para adicionar fatos do host, substitua nulo Com seus fatos host no arquivo de inventário JSON da seguinte forma:

"Hosts":
"Host1":
"Var1": "Value1",
"var2": "value2",
,
"Host2":
"Var2": "Value3",
"Var3": "Value4",

Por exemplo, para adicionar o índice fato do hospedeiro ao vm5.NodeKite.com host, substitua nulo com os fatos do host da seguinte maneira.


"todos":
"Hosts":
"VM1.NodeKite.com ": nulo,
"VM2.NodeKite.com ": nulo
,
"Vars":
"Webroot": "/var/www/html",
"Índice": "índice.php "
,
"crianças":
"rede":
"Hosts":
"VM3.NodeKite.com ": nulo,
"VM4.NodeKite.com ": nulo
,
"Vars":
"webroot": "/web/public_html",
"Índice": "índice.html "

,
"db":
"Hosts":
"VM5.NodeKite.com ":
"Índice": "índice.py "
,
"VM6.NodeKite.com ": nulo




Depois de terminar, pressione + S Para salvar o arquivo de inventário JSON.

Para verificar os fatos disponíveis, execute o print_vars1.Yaml Manual da seguinte maneira:

$ Ansible-Playbook Playbooks/print_vars1.Yaml

Como você pode ver, o índice O fato está disponível apenas para o vm5.NodeKite.com hospedar.

Observe também que o fato do host substituiu o fato global. Os fatos/variáveis ​​do host têm a maior precedência em Ansible. Portanto, os fatos/variáveis ​​do host substituirão os fatos/variáveis ​​do grupo e fatos/variáveis ​​globais.

Conclusão:

Neste artigo, mostrei como construir um arquivo de inventário Ansible no formato JSON. Eu mostrei como adicionar hosts, adicionar grupos de host, adicionar fatos globais, adicionar fatos em grupo e adicionar fatos do host em seu arquivo de inventário no formato json.