プレイブック
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、または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
私の本番環境には、単純な共有可能な複製には入り込めないような複雑なものがあることに気づきました。 とにかく、これが再現
こんにちは!
Ansibleにご提出いただきありがとうございます。 それは私たちにとって心から大きな意味があります。
あなたが提出したチケットは、記載されているものとは少し異なる動作をするため、多少誤解されていると思われます。
ファクト、ホストおよびグループ変数..基本的に、「ホスト関連変数」はvars_files
で使用できません。その時点では、再生スコープの変数または追加の変数のみが使用可能です。 代わりにinclude_vars
タスクを使用してください。
将来的には、これはユーザーリストにより適したトピックになる可能性があります。上記についてさらにサポートが必要な場合は、ここに投稿することもできます。
これとAnsibleに関心をお寄せいただき、ありがとうございます。
おそらくあなたはドキュメントを修正する必要がありますか? 正確には明らかではありません...
最も参考になるコメント
おそらくあなたはドキュメントを修正する必要がありますか? 正確には明らかではありません...