ansible playbook - как избежать многократного включения файла var - PullRequest
0 голосов
/ 09 ноября 2019

Проблема

У меня есть книга игр, которую я хотел бы запустить с определенными тегами. В настоящее время происходит сбой с неопределенной ошибкой переменной. Переменная определена в файле, который я включаю в 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по тэгу.

Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2019

Просмотрите документацию о tags.

Существует специальная программа под названием always, которая всегда запускает задачу, как следует из ее названия.

Просто поместите этот тег в задачу include_vars, и это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...