Ansible: لا تستطيع vars_files رؤية الحقائق أو المتغيرات الأخرى التي يمكن أن يؤديها الدور في نفس المسرحية

تم إنشاؤها على ١٠ أغسطس ٢٠١٧  ·  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 في سطر الأوامر غير المناسب باستخدام --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 ، فقط تشغيل vars ذات النطاق أو vars الإضافية متوفرة في تلك المرحلة. استخدم مهمة include_vars بدلاً من ذلك.

في المستقبل ، قد يكون هذا موضوعًا أكثر ملاءمة لقائمة المستخدمين ، والتي يمكنك أيضًا نشرها هنا إذا كنت ترغب في مزيد من المساعدة فيما سبق.

شكرًا لك مرة أخرى على هذا واهتمامك بـ Ansible!

ربما يجب عليك إصلاح الوثائق؟ ليس واضحًا تمامًا ...

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات