Во время моей книги я создаю переменную для одного набора машин - приложений. А именно пароль для пользователя 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