Ansible: vars_files не может видеть факты или другие переменные, которые может сыграть роль в той же игре.

Созданный на 10 авг. 2017  ·  3Комментарии  ·  Источник: ansible/ansible

ТИП ПРОБЛЕМЫ
  • Сообщение об ошибке
КОМПОНЕНТ НАЗВАНИЕ

пьесы

ДОСТУПНАЯ ВЕРСИЯ
ansible 2.4.0
  config file = None
  configured module search path = [u'/Users/szabop/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /Library/Python/2.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 2.7.10 (default, Jul 14 2015, 19:46:27) [GCC 4.2.1 Compatible Apple LLVM 6.0
КОНФИГУРАЦИЯ

Я импортирую роли и игры из другого каталога, поэтому у меня есть файл ansible.cfg

[defaults]
roles_path = ../../../deployment/playbooks/roles
ОС / СРЕДА

OSX 10.10.5

РЕЗЮМЕ

Когда я пытаюсь динамически решить, какой файл хранилища я хочу импортировать, используя переменную в vars_files (модульные тесты не должны использовать производственные пароли!) Для импортированных игр, я не могу сделать это с помощью group_vars, host_vars или фактов. установлен в постановке. Я могу использовать только доступный аргумент командной строки.

ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ

ansible-playbook -t app_test -i inventories/localhost/local.hosts unit.yml

---
#
# network.yml
#
- name: Setup the networks
  hosts: dockerhosts
  vars_files:
     - demoVars.yml
     - "{{ vault_file }}"   # this will only be valid if declared on the ansible command line.
  roles:
    - role: debug     # note this will print out a valid {{ vault_file }} in all cases (but comment out the vars_files line or it will error first)
    - role: network_setup
      options:
        internal: "{{ networks.internal }}"
        external: "{{ networks.external }}"
        nginx: "{{ networks.nginx }}"
  tags:
    - setup
    - standalone
    - app_test
# unit.yml
---
- name: create facts used to compose variables later in this playbook
  hosts: dockerhosts
  vars:
    esTmpDir: "/tmp/es"
  roles:
    - role: unitenv_setup
  tags:
    - app_test
- import_playbook: ../../../deployment/playbooks/network.yml
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

Если переменная vault_file указана в командной строке ansible с помощью --extra-vars сценарий работает нормально. Он должен работать нормально, если vault_file задано из файла инвентаризации или установлено как факт в unitenv_setup , но это не так.

ФАКТИЧЕСКИЕ РЕЗУЛЬТАТЫ

Используя любой метод, кроме командной строки, для установки vault_file , я получаю следующую ошибку:

PLAY [Setup the networks] *********************************************************************
ERROR! vars file {{ vault_file }} was not found

чрезвычайно подробный режим:

ETA: ran handlers
META: ran handlers
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable
Read vars_file 'demoVars.yml'
skipping vars_file '{{ vault_file }}' due to an undefined variable

PLAY [Setup the networks] *********************************************************************
Read vars_file 'demoVars.yml'
ERROR! vars file {{ vault_file }} was not found

affects_2.4 bug core

Самый полезный комментарий

возможно стоит поправить документацию? Не совсем очевидно ...

Все 3 Комментарий

Я замечаю, что в моей производственной среде есть что-то сложное, что я не могу передать простым совместным воспроизведением. Во всяком случае, вот попытка воспроизвести.

Возможное недоразумение

Привет!

Большое спасибо за отправку в Ansible. Это очень много значит для нас.

Мы считаем, что поданный вами билет неправильно поняли, поскольку одно работает немного иначе, чем указано.

факты, переменные хоста и группы .. в основном любые «связанные с хостом переменные» недоступны для vars_files , на этом этапе доступны только переменные с ограниченным объемом воспроизведения или дополнительные переменные. Вместо этого используйте задачу include_vars .

В будущем эта тема может быть более подходящей для списка пользователей, который вы также можете опубликовать здесь, если вам нужна дополнительная помощь по вышеуказанному.

Еще раз спасибо за это и за проявленный интерес к Ansible!

возможно стоит поправить документацию? Не совсем очевидно ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги