2017-07-06 11 views
0

mongodbのデータを安全な方法で印刷することができます。しかしここで私の必要条件は、印刷されたデータを不可能な変数として使用することです。ここmongoDBコレクションの出力を変数として変数として使用する方法

は、私がansible脚本出力を取得しています出力されます。ここ

ansible playbook output

は私ansible脚本です。

--- 
- hosts: localhost 
    vars: 
    - i: "db.repo.find({ $and: [{'product': 'Admin'}, {'env':'SHK'}] }).pretty()" 

    tasks: 
    - name: Printing the retrieved data 
    command: mongo Advantage --quiet --eval "{{i}}" 
    register: temp 

    - name: Printing the retrieved data 
    set_fact: 
    "{{item}}" 
    with_items: 
     - [ "{{temp.stdout.split('\t')[0] }}", "{{temp.stdout.split('\t')[1] }}", "{{temp.stdout.split('\t')[2] }}", "{{temp.stdout.split('\t')[3] }}", "{{temp.stdout.split('\t')[4] }}", "{{temp.stdout.split('\t')[5] }}", "{{temp.stdout.split('\t')[6] }}", "{{temp.stdout.split('\t')[7] }}", "{{temp.stdout.split('\t')[8] }}", "{{temp.stdout.split('\t')[9] }}" ] 


- include: /etc/ansible/roles/patchdeployment_3_11_2/tasks/applypatch/applypatch_windows_websphere.yml PR_ID={{PR_ID}} 
#- include: /etc/ansible/roles/patchdeployment_3_11_2/tasks/applypatch/applypatch_linux_websphere.yml  

同じように私を助けてください。

答えて

0

クエリーでカスタムタイプ(_idなど)のすべてのフィールドを無効にすることで、mongo出力が純粋なJSONになります。
次に、from_json可能なフィルタを使用して出力を解析します。

- hosts: localhost 
    vars: 
    qry: "db.repo.findOne({ $and: [{'product': 'Admin'}, {'env':'SHK'}] },{_id:false})" 

    tasks: 
    - name: Get data 
     command: mongo Advantage --quiet --eval "{{qry}}" 
     register: temp 

    - name: Save parsed data 
     set_fact: 
     mongo_result: "{{ temp.stdout | from_json }}" 

    - name: Print some data 
     debug: 
     var: mongo_result.appName 
+0

あなたのお返事ありがとうございますKonstantin suvorov。あなたのスクリプトは私のために単一の変数まで動作します。 appName、appFolder、env、productのようなmongodbには複数の変数がありますが、どのようにスクリプト内の複数の変数を記述できますか?あなたの応答はappriciatedされます。私は数日からこの問題について作業していましたが、これを解決できませんでした。私を助けてください。 – monu

+0

'mongo_results.appFolder'などの変数を参照できます。 –

+0

ありがとう。 @コンスタンチン・スヴォロフ – monu

関連する問題