Ansible - liest Inventar-Hosts und -Variablen in die Datei group_vars / all

Ich habe einen bloßen Zweifel, der mich lange Zeit festhält. Ich habe eine sehr banale Inventardatei mit Hosts und Variablen:

[lb]
10.112.84.122

[tomcat]
10.112.84.124

[jboss5]
10.112.84.122

...

[tests:children]
lb
tomcat
jboss5

[default:children]
tests

[tests:vars]
data_base_user=NETWIN-4.3
data_base_password=NETWIN
data_base_encrypted_password=
data_base_host=10.112.69.48
data_base_port=1521
data_base_service=ssdenwdb
data_base_url=jdbc:oracle:thin:@10.112.69.48:1521/ssdenwdb

Das Problem ist, dass ich über die Datei group_vars / all auf alle diese Hosts und Variablen in der Inventardatei zugreifen muss.

Ich habe die folgenden Möglichkeiten ausprobiert, um auf die Host-IP zuzugreifen:

{{ lb }}
"{{ hostvars[lb] }}"
"{{ hostvars['lb'] }}"
{{ hostvars[lb] }}

Um auf eine Hostvariable zuzugreifen, habe ich versucht:

"{{ hostvars[tests].['data_base_host'] }}"

Alle von ihnen sind falsch !!! Kann mir jemand helfen, die beste Vorgehensweise für den Zugriff auf Hosts und Variablen zu finden, nicht aus einem Playbook, sondern aus einer Variablendatei?

BEARBEITEN:

Okay. Lassen Sie uns klären.

Problem: Verwenden Sie einen in der Inventardatei deklarierten Host in einer Variablendatei, sagen wir: group_vars / all.

Beispiel: Ich habe einen DB-Host mitIP:10.112.83.37.

Inventardatei:

[db]
10.112.83.37

In der Gruppe: vars / all Datei möchte ich diese IP verwenden, um eine Variable zu erstellen.

group_vars / all Datei:

data_base_url=jdbc:oracle:thin:@{{ db }}:1521/ssdenwdb

In einer Vorlage verwende ich die Variable, die in der Datei group_vars / all erstellt wurde.

Vorlagendatei:

oracle_url = {{ data_base_url }}

Das Problem ist, dass die{{ db }} Variable in der Datei group_vars / all wird nicht durch die DB-Host-IP ersetzt. Der Benutzer kann nur die Inventardatei bearbeiten.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage