Passo 5 - Inventário

Primeiro arquivo de Inventário

O Ansible foi projetado para trabalhar com múltiplos sistemas (servidores baremetal, máquinas virtuais, Dispositivos de rede etc.) ao mesmo tempo. Ele trabalha selecionando partes desses sistemas listados num arquivo de inventário, que por padrão fica salvo em /etc/ansible/hosts. É possível também especificar um arquivo diferente usando o parâmetro -i <path/nomeinventario> na linha de comando (Ad-Hoc $ ansible ou Playbook $ ansible-playbook).

O arquivo padrão de inventário já vem com vários exemplos, conforme se vê abaixo:

Clique aqui para expandir:

Criaremos um inventário simplificado com vários hosts que apontam para localhost através da variável ansible_connection=local. Com isso teremos mais de um host no inventário apontando para um único servidor, simulando vários sistemas.

Copie, cole e salve o conteúdo abaixo no arquivo /etc/ansible/hosts-test

web1.example.com
web2.example.com
db.example.com

[webservers]
web1.example.com
web2.example.com

[dbservers]
db.example.com

[datacenter:children]
webservers
dbservers

[datacenter:vars]
ansible_connection=local

Verificando se todos os hosts (all) do inventário estão respondendo

$ ansible -i /etc/ansible/hosts-test -m ping all

web1.example.com | SUCCESS => {
	"changed": false,
	"ping": "pong"
}
web2.example.com | SUCCESS => {
		"changed": false,
		"ping": "pong"
}

db.example.com | SUCCESS => {
	"changed": false,
	"ping": "pong"
}

Verificando o grupo webservers

$ ansible -i /etc/ansible/hosts-test -m ping webservers

web1.example.com | SUCCESS => {
	"changed": false,
	"ping": "pong"
}
web2.example.com | SUCCESS => {
	"changed": false,
	"ping": "pong"
}

Verificando o grupo dbservers

$ ansible -i /etc/ansible/hosts-test -m ping dbservers

db.example.com | SUCCESS => {
	"changed": false,
	"ping": "pong"
}

Verificando o grupo datacenter (união dos grupos webservers e dbservers)

$ ansible -i /etc/ansible/hosts-test -m ping datacenter

db.example.com | SUCCESS => {
		"changed": false,
		"ping": "pong"
}
web1.example.com | SUCCESS => {
		"changed": false,
		"ping": "pong"
}
web2.example.com | SUCCESS => {
		"changed": false,
		"ping": "pong"
}

Na seleção do host do inventário, é possível informar um padrão diferente de host/grupo. Padrões podem ser expressões regulares, caracteres coringas e outros. Exemplo: ansible *.example.* -m <nome_modulo> -a <argumentos>. Para outros padrões, clique aqui (Inglês)