2016-06-14 4 views
0

はAnsible 2.1の脚本の一部です:Ansible:以下は他のホストのためのコンテンツが利用できない登録

- hosts: localhost 
    any_errors_fatal: true 
    tasks: 
    - name: Bla Bla 
     file: path=/var/tmp/somedir state=directory 
     #ignore_errors: no 
    - name: Create directory for every host 
     file: path=/var/tmp/somedir/{{ item }} state=directory 
     with_items: "{{ groups['XYZ'] }}" 
    - name: Get File contents of NewFile 
     shell: cat NewFile.txt executable=/bin/bash 
     register: file_contents 
- hosts: XYZ 
    #any_errors_fatal: true 
    vars: 
    num_hosts: "{{ groups['XYZ'] | length }}" 
    serial: num_hosts 
    tasks: 
    - name: Copy files to corresponding directories 
     vars: 
     path: /var/tmp/somedir/{{ item[0] }} 
     synchronize: mode=pull src={{ item[1] }} dest={{ path }} 
     with_nested: 
      - "{{ groups['XYZ'] }}" 
      - with_lines: cat NewFile.txt 

これは動作しません。 今の問題は、いくつかの簡単な方法でこれを行うにはどのような方法があり、私はlocalhostの下に登録されているfile_contentsを参照することはできませんよとAnsibleがhosts: XYZ

からcatNewFileにサポートされていないのですか?この帳でのNewFileの内容を確認してから、リモートからローカルにファイルをコピーするために同じものを使用する必要があります。

+0

set_factを使用してfile_contentsの値をいくつかの変数に代入しようとしていないのであれば、それはプレイブック全体で利用可能になります。 –

+0

iは、の値に設定set_fact' '試み「変数' lines'にfile_contents'を 'した後に同じ変数を使用する: ' with_nested: - "{{グループ[ 'XYZ']}}" --with_items:lines' 'link_stat \"/home/XYZ/with_items \ "failed:そのようなファイルやディレクトリはありません.' –

+0

デバッグモジュールを使用して、行の値を確認してください。 –

答えて

0

コメントで述べたように、事実(またはすべての変数)はホストベースで格納されます。 localhost上で実行中のタスクから値を登録した場合、グローバルhostvars dictを介して他のホストのコンテキストで実行中のタスクからアクセスできます。すべてのホストとその事実がそこに格納されています。

hostvars['localhost']['file_contents'] 

私は単に登録変数はHOSTVARSの辞書で使用可能な、完全にわかりません。そうでない場合は、ファーストプレイでset_factを使用してファクトとして保存する必要があります。

+0

のように、ファイルをコピーするリモートホスト上のパスです。 'タスク: - 名: パス:/ VAR/TMP/somedir/{{アイテム[0]}} #shell:SCP -pr OGW @ {{アイテム[0コピーログファイルノードディレクトリに VARSに対応します with_nested: with_nested:mode = pull src = {{item [1]}} dest = {{{{{{{{{}}}:{{item1}}} "{{groups ['XYZ']}}" --with_items: "{{hostvars ['localhost'] ['file_contents']}}" " でも、 'with_items'に私のエラー。 'with_items'には値は格納されません –

関連する問題