Ansible: vars_filesは、同じ役割の役割が認識できる事実やその他の変数を確認できません。

作成日 2017年08月10日  ·  3コメント  ·  ソース: ansible/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
OS /環境

OSX 10.10.5

概要

インポートされたプレイのvars_files(単体テストでは本番パスワードを使用しないでください!)の変数を使用してインポートするボールトファイルを動的に決定しようとすると、group_vars、host_vars、またはfactsのいずれかを使用してインポートできません。セットアッププレイで設定します。 ansibleコマンドライン引数しか使用できません。

再現する手順

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を使用してansibleコマンドラインで指定されている場合、スクリプトは正常に実行されます。 vault_fileがインベントリファイルから設定されているか、 unitenv_setupにファクトとして設定されている場合vault_file正常に実行されますが、そうではありません。

実績

コマンドライン以外の方法を使用して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 評価