Parameters 如何访问Ansible输出作为其输入参数

Parameters 如何访问Ansible输出作为其输入参数,parameters,ansible,output,Parameters,Ansible,Output,我得到这样的稳定输出 ok: [localhost] => { "ansible_facts": { "filter3": [ "id = 1", "type = DM", "status = started", "provisioning = completed", "build = yes", 我的要求是将此输出用作ansible脚本中的参数 例如,id作为变量名,10001作为id的值 在这里,我遵循这样的方式,将输出存储到一个文件中,如 [

我得到这样的稳定输出

ok: [localhost] => {
"ansible_facts": {
"filter3": [
    "id = 1",
    "type = DM",
    "status = started",
    "provisioning = completed",
    "build = yes",
我的要求是将此输出用作ansible脚本中的参数

例如,id作为变量名,10001作为id的值

在这里,我遵循这样的方式,将输出存储到一个文件中,如

[prod]
id = 1
type = DM
status = started
provisioning = completed
build = yes
我就像

- set_fact: id="{{ lookup('ini', 'id section=prod file=/home/var.properties') }}"
- set_fact: provisioning="{{ lookup('ini', 'provisioning section=prod file=/home/var.properties') }}"
- set_fact: build="{{ lookup('ini', 'build section=prod file=/home/var.properties') }}"
将来有可能在输出中获得更多的额外参数。所以每次我必须在set_fact添加代码来访问这些参数


为了避免这种情况,我必须直接从输出中访问这些参数,并在下一个任务执行中使用它们。请在这方面帮助我。

我不确定你是否理解你的问题,但基本上,你要找的是Register的用法

它们的工作方式与事实相同,但如果您有动态内容,它们会更灵活

然后,您可以使用查询语言访问寄存器的任何部分。 (在线语法测试仪:)

例如:

---
- name:  List packages
  shell: /usr/bin/dpkg-query -l '*{{ item }}*' | grep '^ii ' | awk 'BEGIN { OFS = "-" } { print $2,$3,$4 }'
  with_items: 
    - openssh
    - openssl
    - vim
    - python
  failed_when: false
  register: pkg

- debug:
    msg: |
      {{ "Installed packages found #" | comment('plain', prefix='############################', postfix='############################')}}
      {{ pkg | json_query(query) | to_nice_yaml }}
  vars:
    query: "results[].{name: item, version: stdout_lines}"
...