Назад | Перейти на главную страницу

Вызов переменной группы Ansible hostvars на более позднем этапе игры

Во время моей книги я создаю переменную для одного набора машин - приложений. А именно пароль для пользователя db_password. Только на данный момент он находится внутри групповых приложений.

Я пытаюсь вспомнить эту переменную во время более поздней части игры для другого набора хостов, которые принадлежат другой группе, используя hostvars. Я пробовал несколько вещей, но, похоже, это не сработало. Ниже приведен основной сценарий, а также main.yml для 2 названных ролей.

Моя проблема в том, что он не будет отображать переменную для db_password, когда я пытаюсь отладить ее на серверах db. Я думаю, что нахожусь на правильном пути с концепцией hostvars, но открыт для новых идей. Я знаю, что могу также записать вывод set_fact db_password в файл, а затем переместить его на сервер db и прочитать его из него, но я пытаюсь сохранить это в рамках этой одной книги. Любые мысли и помощь приветствуются

- hosts: 127.0.0.1
  connection: local
  gather_facts: true

- hosts: apps
  roles:
- { role: test_app}

- hosts: db
  roles:
- { role: test_db }

main.yml для test_app

- name: "Setup TPMS {{ app_server_hostname }} | GENERATE password"
 set_fact: db_password={{lookup('password', '/dev/null 
 chars=ascii_letters,digits,hexdigits length=10')}}

 - name: user create
   user:
   name: testing
   update_password: always
   password: "{{ db_password}}"
   state: present

main.yml для test_db

- name: show var
  debug: "{{ hostvars[groups['apps'][0]]['db_password'] }}"

текущая ошибка, которую я вижу, я ожидаю, что пароль вернет не привет, мир

 TASK [test_db : show var] 
 ok: [server104] => {
 "msg": "Hello world!"

Отступ неправильный. Правильный отступ ниже

- hosts: apps
  roles:
    - { role: test_app}
- hosts: db
  roles:
    - { role: test_db }

.

- name: "Setup TPMS {{ app_server_hostname }} | GENERATE password"
  set_fact:
    db_password: ...
    chars: ...

.

- name: user create
  user:
    name: testing
    update_password: always
    password: "{{ db_password}}"
    state: present