2017-05-05 11 views
0

コンサルkvストアからキー値を取得しようとしているときにエラーが発生しました。アシスタントコンサルkvリスト再帰とキー値の比較

キー値はconfig/app-name/folderに保存されています。多くのキーがあります。領事からの鍵となるすべての価値を入手したいと思っています。 しかし、次のエラー取得:ここ

PLAY [Adding host to inventory] ********************************************************************************************************************************************************** 

TASK [Adding new host to inventory] ****************************************************************************************************************************************************** 
changed: [localhost] 

PLAY [Testing consul kv] ***************************************************************************************************************************************************************** 

TASK [show the lookups] ****************************************************************************************************************************************************************** 
fatal: [server1]: FAILED! => {"failed": true, "msg": "{{lookup('consul_kv','config/app-name/')}}: An unhandled exception occurred while running the lookup plugin 'consul_kv'. Error was a <class 'ansible.errors.AnsibleError'>, original message: Error locating 'config/app-name/' in kv store. Error was 500 No known Consul servers"} 

PLAY RECAP ******************************************************************************************************************************************************************************* 
server1    : ok=0 changed=0 unreachable=0 failed=1 
localhost     : ok=1 changed=1 unreachable=0 failed=0 

は私がしようとしているコードです。

--- 
- name: Adding host to inventory 
    hosts: localhost 
    tasks: 
    - name: Adding new host to inventory 
     add_host: 
     name: "{{ target }}" 

- name: Testing consul kv 
    hosts: "{{ target }}" 
    vars: 
    kv_info: "{{lookup('consul_kv','config/app-name/')}}" 
    become: yes 
    tasks: 
    - name: show the lookups 
     debug: msg="{{ kv_info }}" 

しかし、フォルダを削除してフォルダを追加するとうまくいきます。領事クラスターから鍵の値を得ることは誤りを投げている。ここでより良い方法を提案してください。

- name: remove folder from the store 
    consul_kv: 
    key: 'config/app-name/' 
    value: 'removing' 
    recurse: true 
    state: absent 

- name: add folder to the store 
    consul_kv: 
    key: 'config/app-name/' 
    value: 'adding' 

私はこれを試しましたが、それでも同じエラーです。

--- 
- name: Adding host to inventory 
    hosts: localhost 
    environment: 
    ANSIBLE_CONSUL_URL: "http://consul-1.abcaa.com" 
    tasks: 
    - name: Adding new host to inventory 
     add_host: 
     name: "{{ target }}" 

    - name: show the lookups 
     debug: kv_info= "{{lookup('consul_kv','config/app-name/')}}" 

答えて

0

Ansibleのすべてのlookupプラグインは常にローカルホスト上で評価され、docsを参照してください。

Note: Lookups occur on the local computer, not on the remote computer.

私はあなたがkv_infoは、領事が {{ target }}サーバからフェッチ実行することにより、取り込まれることを期待すると思います。
しかし、このルックアップは実際にあなたの危険な制御ホスト(localhost)上で実行され、ANSIBLE_CONSUL_URLが設定されていない場合、No known Consul serversエラーが発生します。

あなたはconsul_kvモジュールを(フォルダを削除/作成する)を使用すると、それはconsul_kv検索プラグインとは対照的に{{ target }}ホスト上で実行されます。

+0

ありがとうございます。だから私にこれに対処する理想的な方法を提案してもらえますか? – ryan1506

+0

コントロールホストからconsulにアクセスし、正しいURLに 'ANSIBLE_CONSUL_URL' env変数を設定してください。または、データを取り出せるようにするために、Ansibleのカスタム領事モジュールを探します。 –

+0

ありがとう、私はこれを試しましたが、依然として500のエラーを受け取っていません。 – ryan1506

関連する問題