Какая разница между выходами при непосредственном использовании переменной и хостов в ansible - PullRequest
0 голосов
/ 05 января 2019

У меня есть инвентарь с указанными ниже записями.

[local]
localhost port=80

[apacheweb]
kputtegowda2c.mylabserver.com

[appserver]
kputtegowda3c.mylabserver.com

Теперь, если я хочу получить доступ к переменной хоста "port" локальной группы. У меня есть простая книга воспроизведения для отображения значения переменной.

- hosts: local 
  gather_facts: yes
  tasks:
  - debug: var={{ port }}

вышеприведенный образец производит вывод.

TASK [debug] *************
ok: [localhost] => {
"80": "VARIABLE IS NOT DEFINED!"
}

вместо прямого доступа к переменной порта, если я использую hostvars [инвентарь_хоста] .port, я получаю вывод, как показано ниже.

TASK [debug] ****************
ok: [localhost] => {
"hostvars[inventory_hostname].port": "80"
}

1 Ответ

0 голосов
/ 05 января 2019

Это потому, что вы использовали усы, когда вы не должны были; если вы переключите var= на msg=, то все будет работать как положено, но то, что вы написали, эквивалентно:

  tasks:
  - debug: var=80

, это именно то, что выполняет ANSIBLE, объясняя текст "80": "VARIABLE IS NOT DEFINED"

...