繁体   English   中英

我正在尝试将 ansible output 格式化为 item1 - item2 而不是两个单独的项目列表

[英]I'm trying to get ansible output formatted like item1 - item2 instead of two separate lists of items

我有一个正常运行的 ansible 脚本,它连接到 AWS 并从指定的 state 中的实例打印标签。

我遇到的问题是打印出来的是两个单独的列表,例如

我得到的是:

name1
name2
name3

description1
description2
description3

我想要的是:

name1 - description1
name2 - description2
name3 - description3

我试过将这一切都塞进字典,但在尝试中迷路了。 必须有更简单的方法。

这是我的代码:


 - name: print stopped systems
   hosts: all
   become: false
   tasks:

   - name: Gather ec2_metadata_facts (use -vv to show all)
     action: ec2_metadata_facts

   - name: pull instance info with ec2_instance_info
     ec2_instance_info:
       region: "{{ lookup('env','AWS_DEFAULT_REGION') }}"
       aws_access_key: "{{ lookup('env','AWS_ACCESS_KEY_ID') }}"
       aws_secret_key: "{{ lookup('env','AWS_SECRET_ACCESS_KEY') }}"
       filters:
         instance-state-name: [ "shutting-down", "stopping", "stopped" ]
     register: ec2_info

   - name: print Instance Info
     debug:
       msg:
         - "{{ ec2_info | json_query(name_tag) }}"
         - "{{ ec2_info | json_query(description_tag) }}"
     vars:
       name_tag: "instances[*].tags.Name"
       description_tag: "instances[*].tags.Description"

调试语句的 output 如下所示:

TASK [print Instance Info] **********************************************************************************************************************
ok: [tools-server-01] => 
  msg:
  - - server-01
    - server-02
  - - Description for server one
    - Description for server two

谢谢@Rickkwa

我有这个主要工作。 这是我当前的代码

 - name: Print stopped systems
   hosts: all
   become: false
   tasks:

   - name: Gather ec2_metadata_facts (use -vv to show all)
     action: ec2_metadata_facts

   - name: pull instance info with ec2_instance_info
     ec2_instance_info:
       region: "{{ lookup('env','AWS_DEFAULT_REGION') }}"
       aws_access_key: "{{ lookup('env','AWS_ACCESS_KEY_ID') }}"
       aws_secret_key: "{{ lookup('env','AWS_SECRET_ACCESS_KEY') }}"
       filters:
         instance-state-name: [ "shutting-down", "stopping", "stopped" ]
     register: ec2_info

   - name: Create Name list
     no_log: true
     set_fact: 
       name_l: "{{ec2_info | json_query(name_tag)}}"
     vars:
       name_tag: "instances[*].tags.Name"

   - name: Create Description list
     no_log: true
     set_fact: 
       desc_l: "{{ ec2_info | json_query(description_tag) }}"
     vars:
       description_tag: "instances[*].tags.Description"

   - name: print together
     debug:
       msg: "{{item.0}} --- {{item.1}}"
     loop: "{{ name_l|zip(desc_l)|list}}"

不幸的是,最后的调试语句包含一些我想删除的“垃圾”……有人建议删除“u”后面的东西吗?

这是 output:'

TASK [print together] ***************************************************************************************************************************
ok: [dev-bsd-01] => (item=[u'server-01', u'server one description']) => 
  msg: server-01 --- server one description
ok: [dev-bsd-01] => (item=[u'server-02', u'server two description']) => 
  msg: server-02 --- server two description

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM