2017-09-06 11 views
0

私は単純に次のようんthe following Ansible roleありますプレイブックディレクトリでローカルファイルを解決しますか?

  1. は一時ディレクトリを作成します。
  2. サーバーテストツールであるGossをその一時ディレクトリにダウンロードします。
  3. テストのための主要なGoss YAMLファイルをアップロードします。
  4. 追加のテスト用に追加のディレクトリをアップロードします。ここで

私はそれを使用しているカップルの場所です:

を具体的に、これらのプレイブックはgoss.ymlという名前の脚本に隣接してローカルファイルをアップロードし、ディレクトリgoss.dが再度プレイブックに隣接しています。

残念ながら、Anipalロジックが最近変更されたため、テストが期待通りに機能しないように見えます。私の役割は、デフォルトのgoss.ymlで出荷されています。私はを自分のプレイブック内に設定すると、自分のプレイブックに隣接するGossファイルの代わりにdegoss/files/goss.ymlをアップロードするように見えます。

ファイルの名前をロールに渡している場合、AnBookがプレイブックや現在の作業ディレクトリのコンテキストでファイルを参照するように指定する方法はありますか?

もはや働いている実際の役割論理はこれです:

# deploy test files including the main and additional test files 
- name: deploy test files 
    copy: src={{ item }} dest={{ degoss_test_root }} mode=0644 directory_mode=0755 setype=user_tmp_t 
    with_items: "{{ [goss_file] + goss_addtl_files + goss_addtl_dirs }}" 
    changed_when: degoss_changed_when 

私はAnsible 2.3.2.0にしていると私は、ディストリビューション(すなわちCentOSの7、Ubuntuの14.04、とUbuntu 16.04)間でこれを再現することができます。

+0

ファイル名の先頭に '。/'を付けますか? – techraf

+0

これを無駄にしようとしました。 –

答えて

1

まず、ロールのスコープ内の相対パスを検索し、次にプレイブックのスコープで検索します。例えば

あなたが役割r1でファイルtest.txtをコピーしたい場合は、検索順序はこれです:

/path/to/playbook/roles/r1/files/test.txt 
/path/to/playbook/roles/r1/test.txt 
/path/to/playbook/roles/r1/tasks/files/test.txt 
/path/to/playbook/roles/r1/tasks/test.txt 
/path/to/playbook/files/test.txt 
/path/to/playbook/test.txt 

あなたはANSIBLE_DEBUG=1とansible呼び出すことにより、ごsearch_path順序を検査することができます。

は、あなたの質問に答えるためには、オプションを持っている:役割の範囲内に存在しない

  1. 使用したファイル名を。 Like:

    goss_file: local_goss.yml 
    
  2. 絶対パスを指定します。たとえば、あなたが使用することができます。パスは絶対である場合

    goss_file: '{{ playbook_dir }}/goss.yml' 
    

Ansibleは、検索ロジックを適用しません。

関連する問題