Ansible

Como construir um inventário Ansible no formato JSON

Como construir um 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 Notation) 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 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.

Criando um diretório de projeto:

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

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 CASA como você pode ver na imagem abaixo.

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

No Visual Studio Code, vá para Arquivo > Pasta aberta… como marcado na imagem abaixo.

Agora, selecione o diretório do projeto json-inventory / e clique em OK.

O diretório do projeto deve ser aberto com Visual Studio Code.

Agora clique em Novo arquivo  e criar 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

Assim que terminar, pressione + S para salvar o ansible.cfg Arquivo.

Da mesma forma, crie um hospedeiros.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 criar um novo diretório playbooks como mostrado na imagem 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 hospedeiros.json arquivo de inventário, você adiciona um tudo seção.


"tudo":

Dentro tudo seção, você adiciona um hospedeiro seção e adicione seus hosts.


"tudo":
"hosts":
"host1": nulo,
"host2": nulo


Por exemplo, você pode adicionar os hosts vm1.nodekite.com e vm2.nodekite.com no hospedeiros.json arquivo de inventário como segue.


"tudo":
"hosts":
"vm1.nodekite.com ": null,
"vm2.nodekite.com ": null


Assim que terminar, pressione + S para salvar o hospedeiros.json Arquivo.

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

$ ansible --list-hosts all

Como você pode ver, os hosts que adicionei ao 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 de host padrão em Ansible é tudo. O tudo grupo tem todos os hosts de cada grupo (incluindo os hosts de tudo grupo).

Você adiciona grupos de hosts no crianças seção do seu arquivo de inventário JSON.


"tudo":

"crianças":
"grupo 1":
,
"grupo2":



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


"tudo":
"hosts":
"vm1.nodekite.com ": null,
"vm2.nodekite.com ": null
,
"crianças":
"rede":
"hosts":
"vm3.nodekite.com ": null,
"vm4.nodekite.com ": null

,
"db":
"hosts":
"vm5.nodekite.com ": null,
"vm6.nodekite.com ": null




Assim que terminar, pressione + S para salvar o hospedeiros.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 em seu arquivo de inventário JSON com o seguinte comando:

$ ansible --list-hosts all

Como você pode ver, todos os hosts de cada grupo (rede, db, e tudo) Estão exibidas.

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

$ ansible --list-hosts web

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

Da mesma forma, você pode listar todos os hosts disponíveis do db grupo com o seguinte comando:

$ ansible --list-hosts db

Como você pode ver, todos os hosts no db grupo são exibidos.

Adicionando fatos globais ao arquivo de inventário JSON:

No 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 em 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 tudo seção de seu arquivo de inventário JSON da seguinte maneira:


"tudo":
"hosts":

,
"vars":
"variável1": "valor1",
"variável2": "valor2"
,
"crianças":
"rede":

,
"db":




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


"tudo":
"hosts":
"vm1.nodekite.com ": null,
"vm2.nodekite.com ": null
,
"vars":
"webroot": "/ var / www / html",
"índice": "índice.php "
,
"crianças":
"rede":
"hosts":
"vm3.nodekite.com ": null,
"vm4.nodekite.com ": null

,
"db":
"hosts":
"vm5.nodekite.com ": null,
"vm6.nodekite.com ": null




Assim que 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. Isso também nos ajudará a entender a precedência de fatos / variáveis ​​mais tarde.

Então, crie um novo manual print_vars1.yaml na tua manuais / diretório e digite as seguintes linhas em seu print_vars1.yaml Arquivo.

- hosts: todos
usuário: ansible
tarefas:
- nome: Imprimir webroot e índice
depurar:
msg: 'WebRoot webroot e índice index'

Assim que 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 forma:

$ ansible-playbook playbooks / print_vars1.yaml

O manual deve ser executado 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 em meu arquivo de inventário JSON. Então, fatos / variáveis ​​globais estão funcionando.

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

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

Vou adicionar o mesmo webroot e índice fatos no rede grupo de host do meu arquivo de inventário JSON. O valor desses fatos será diferente. Fiz isso para que você também possa entender como os fatos / precedência de variáveis ​​funcionam no Ansible.

Para adicionar os fatos webroot e índice no rede grupo de host, adicione um vars seção no rede seção de seu arquivo de inventário JSON da seguinte maneira:


"tudo":
"hosts":
"vm1.nodekite.com ": null,
"vm2.nodekite.com ": null
,
"vars":
"webroot": "/ var / www / html",
"índice": "índice.php "
,
"crianças":
"rede":
"hosts":
"vm3.nodekite.com ": null,
"vm4.nodekite.com ": null
,
"vars":
"webroot": "/ web / public_html",
"índice": "índice.html "

,
"db":
"hosts":
"vm5.nodekite.com ": null,
"vm6.nodekite.com ": null




Assim que terminar, pressione + S para salvar o arquivo de inventário JSON.

Para verificar os fatos, execute o print_vars1.yaml manual da seguinte forma:

$ ansible-playbook playbooks / print_vars1.yaml

Como você pode ver, os fatos do grupo webroot e índice estão disponíveis apenas para os anfitriões 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 de grupo têm precedência mais alta do que os fatos globais.

Adicionando fatos de host no arquivo de inventário JSON:

Você também 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 de grupo, mantivemos o valor dos hosts nulo.

Para adicionar fatos de host, substitua nulo com seus fatos de host no arquivo de inventário JSON da seguinte maneira:

"hosts":
"host1":
"var1": "valor1",
"var2": "valor2",
,
"host2":
"var2": "valor3",
"var3": "valor4",

Por exemplo, para adicionar o índice hospedar fato para o vm5.nodekite.com hospedeiro, substitua nulo com os fatos do host como segue.


"tudo":
"hosts":
"vm1.nodekite.com ": null,
"vm2.nodekite.com ": null
,
"vars":
"webroot": "/ var / www / html",
"índice": "índice.php "
,
"crianças":
"rede":
"hosts":
"vm3.nodekite.com ": null,
"vm4.nodekite.com ": null
,
"vars":
"webroot": "/ web / public_html",
"índice": "índice.html "

,
"db":
"hosts":
"vm5.nodekite.com ":
"índice": "índice.py "
,
"vm6.nodekite.com ": null




Assim que 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 forma:

$ ansible-playbook playbooks / print_vars1.yaml

Como você pode ver, o índice fato está disponível apenas para o vm5.nodekite.com hospedeiro.

Observe também que o fato do host substituiu o fato global. Os fatos / variáveis ​​do host têm a maior precedência no Ansible. Assim, os fatos / variáveis ​​do host irão substituir 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 hosts, adicionar fatos globais, adicionar fatos de grupo e adicionar fatos de host em seu arquivo de inventário no formato JSON.

Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...