【问题标题】:How to use mongoDB collection output as variables in ansible如何在ansible中使用mongoDB集合输出作为变量
【发布时间】:2017-07-06 08:45:49
【问题描述】:

我可以使用 ansible 打印 mongodb 数据。但这里我的要求是在ansible中使用打印的数据作为变量。

这是我得到 ansible playbook 输出的输出:

这是我的 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      

请帮助我。

【问题讨论】:

    标签: json mongodb variables ansible output


    【解决方案1】:

    通过在查询中禁用所有具有自定义类型(如 _id)的字段,使 mongo 输出纯 JSON 友好。
    然后使用from_json Ansible 过滤器解析输出。

    - 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
    

    【讨论】:

    • 感谢您的回复康斯坦丁 suvorov。你的脚本对我来说最多可以使用单个变量。但是我在 mongodb 中有多个变量,例如 appName、appFolder、env、product 我如何在脚本中提及多个变量。您的回复将得到重视。请帮助我,我几天以来一直在解决这个问题,但我无法解决这个问题。请帮帮我。
    • 可以引用mongo_results.appFolder等任意变量
    • 谢谢。 @康斯坦丁·苏沃洛夫
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多