Проблема
У меня есть книга игр, которую я хотел бы запустить с определенными тегами. В настоящее время происходит сбой с неопределенной ошибкой переменной. Переменная определена в файле, который я включаю в main.yml, но она не видна другому файлу yml, который я включаю через функцию import_tasks.
Обходной путь, который у меня есть, - это включать один и тот же файл var везде, где я ссылаюсь на переменные. Но я хотел бы знать, есть ли более простой способ сделать это / если мой подход неверен.
Код YML
У меня есть следующая структура папок для моей книги воспроизведения:
tasks/main.yml
/initialize-postgresql.yml
/setup-db.yml
vars/debos.yml
Файл var debos.yml выглядит следующим образом:
__postgresql_version: "12"
__postgresql_daemon: "postgresql"
__postgresql_data_dir: "/var/lib/postgresql/{{ __postgresql_version }}/data"
__postgresql_bin_path: "/usr/lib/postgresql/"
__postgresql_config_path: "/etc/postgresql/"
__postgresql_user: "postgres"
__postgresql_group: "postgres"
__postgresql_packages:
- postgresql
- postgresql-contrib
В main.yml у меня есть следующий код (включены только соответствующие части):
- delegate_to: "{{ inventory_hostname }}"
block:
# Variable configuration.
- include_vars: debos.yml
#Using import_ vs. include_ for the sake of tags.
- import_tasks: initialize-postgresql.yml
tags: init-db
initialize-postgresql.yml выглядит примерно так:
---
# Variable configuration.
- include_vars: alpine.yml
- name: define local vars
set_fact:
postgresql_data_dir: "{{ __postgresql_data_dir }}"
postgresql_group: "{{ __postgresql_group }}"
postgresql_user: "{{ __postgresql_user }}"
postgresql_config_path: "{{ __postgresql_config_path }}"
postgresql_daemon: "{{ __postgresql_daemon }}"
Для того, чтобы запустить программу, можно воспроизвести книгу с таким тегом:
ansible-playbook -i inventory/dbs installpsqldb.yml --tags "init-db"
Мне нужно снова включить файл debos.yml в файл initialize-postgresql.yml. Если нет, я получаю ошибки о неопределенных переменных.
В конечном итоге в задачах у меня будет больше файлов yml, и все они будут использовать одни и те же переменные. Поэтому я хотел бы убедиться, что я настроил все правильно, где правильно:
- с возможностью разбивать задачи на отдельные файлы yml.
- вызывать файлы ymlпо тэгу.
Спасибо.