2016-10-30 21 views
0

在庫ファイルのグループvarとして定義した変数にアクセスできないのはなぜですか?playbook.yml?ここで 可変変数が定義されていません

playbook.ymlの内容です:

--- 
- name: test ansible local provisioning 
    hosts: all 
    vars: 
    playbook_var: "playbook_var" 
    tasks: 
    - name: Test ansible is working 
     debug: msg="Ansible seems to be working, this variable is from plabook {{ playbook_var }} and this variable is from hosts file {{ hosts_file_var }}" 

そしてここhostsです:

TASK [Test ansible is working] ************************************************* 
fatal: [ansible_host]: FAILED! => {"failed": true, "msg": "the field 'args' has an invalid value, which appears to include a variable that is undefined. The error was: 'hosts_file_var' is undefined 

The error appears to have been in '/vagrant/provisioning/ansible_host/playbook.yml': line 7, column 7, but may 
be elsewhere in the file depending on the exact syntax problem. 

The offending line appears to be: 
    tasks: 
    - name: Test ansible is working 
    ^here 
"} 

私は「ドン、いくつかの側面があります:

[all:vars] 
hosts_file_var="hosts_file_var" 

Ansibleは、次のエラーがスローされますどのようにAncersプロセス変数について理解していますか?

こちらはansible.cfgです。

[defaults] 
inventory = hosts 
remote_user = vagrant 
+0

localhostエントリのためansible_connection=localホスト/グループのVARを宣言することも必要ですされ

ansible_host.vm.provision "ansible_local" do |ansible| ansible.playbook = "playbook.yml" ansible.provisioning_path = "/vagrant/provisioning/ansible_host" ansible.inventory_path = "hosts" ansible.limit = "all" ansible.verbose = true end 

注意を仕事得るために必要なすべての構成です。結果は次のようになります: '' msg ":" Ansibleは動作しているようですが、この変数はplabookのplaybook_varからのもので、この変数はhostsファイルhosts_file_var "からです。あなたの主なエラーメッセージは '' hosts_file_var 'は未定義です.''なので、投稿したインベントリファイルを使用していないようです。 – techraf

+0

あなたのエラーメッセージは、 'anipal-playbook'呼び出しで' -i'引数を省略したときのエラーメッセージです。 – techraf

+0

それに加えて、あなたが質問に投稿した 'hosts'が完成した場合、Anipalはエラーを投げるべきで、もしエラーが出なければ、あなたのAnabilitiesは別のものを使います。 – techraf

答えて

2

問題は、インベントリファイルが使用された間違っていた、これ変数どこ未定義:私はベイグラントプロビジョニングにAnsibleを使用して喜びました。それがなぜ最初に起こったのか、長い説明があります。

バゲントがansible-playbookコマンドをどのように実行するかが問題です。ゲストでコマンドを実行するデフォルトの作業ディレクトリは、ansible.playbookの設定で指定されたパスではなく、/vagrant(既定ではVagrantfileと相対的に同期しています)です。これは次のような構成によって与えられた出力調べることによって確認することができます。

ansible.verbose = true

ソリューションは、コンフィギュレーション、以下を提供することでしたが(ansible.playbookがゲストで、このディレクトリからの相対であり、ホストに何もする必要はありませんのでご注意場所。

ansible.provisioning_path = "/vagrant/provisioning/ansible_host"

ベイグラントはまた、自身のインベントリファイルの生成および追加設定が指定されていない場合、以下のコマンドを実行します。

Running ansible-playbook... 
cd /vagrant/provisioning/ansible_host && PYTHONUNBUFFERED=1 ANSIBLE_FORCE_COLOR=true ansible-playbook --limit="ansible-host" --inventory-file=/tmp/vagrant-ansible/inventory -v playbook.yml 
Using /vagrant/provisioning/ansible_host/ansible.cfg as config file 

はここで物事があなたの脚本や在庫ファイルはOKです

+0

あなたの質問とあなたの答えとのつながりは、フッタのあなたのアカウント名に限られます。 – techraf

+0

私を許してください、私は答えをより明確にするように書式を設定しました。 –

関連する問題