كتب اللعب
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
ألاحظ أن هناك شيئًا معقدًا حول بيئة الإنتاج الخاصة بي بحيث لا يمكنني الدخول في نسخة بسيطة قابلة للمشاركة. على أي حال ، ها هي محاولة التكاثر.
مرحبا!
شكرا جزيلا على تقديمك إلى Ansible. إنه يعني بصدق الكثير بالنسبة لنا.
نعتقد أن التذكرة التي قدمتها قد أسيء فهمها إلى حد ما ، حيث يعمل شيء واحد بشكل مختلف قليلاً عما هو مذكور.
الحقائق ، مضيفات المجموعة والمضيف .. بشكل أساسي أي "متغيرات مرتبطة بالمضيف" غير متوفرة مقابل vars_files
، فقط تشغيل vars ذات النطاق أو vars الإضافية متوفرة في تلك المرحلة. استخدم مهمة include_vars
بدلاً من ذلك.
في المستقبل ، قد يكون هذا موضوعًا أكثر ملاءمة لقائمة المستخدمين ، والتي يمكنك أيضًا نشرها هنا إذا كنت ترغب في مزيد من المساعدة فيما سبق.
شكرًا لك مرة أخرى على هذا واهتمامك بـ Ansible!
ربما يجب عليك إصلاح الوثائق؟ ليس واضحًا تمامًا ...
التعليق الأكثر فائدة
ربما يجب عليك إصلاح الوثائق؟ ليس واضحًا تمامًا ...