gpt4 book ai didi

linux - 来自 Ansible stdout_lines 结果的过滤行

转载 作者:太空狗 更新时间:2023-10-29 12:10:26 24 4
gpt4 key购买 nike

我正在尝试从 Ansible stdout_lines 结果中过滤出一行。我运行的 ansible 剧本任务是以下 shell 参数:

- name: VERIFY | Confirm that queue exists properly
shell: aws sqs list-queues --region {{region}}
environment: "{{ aws_cli_environment|d({}) }}"
register: sqs_list

为了查看结果,我进行了调试:

- debug:
msg: "{{ sqs_list.stdout_lines|list }}"

在剧本运行期间给出以下结果:

TASK [sqs : debug] ********************************************************************************************************************************************************************************************
ok: [localhost] => {
"msg": [
"{",
" \"QueueUrls\": [",
" \"sampleurl1\",",
" \"sampleurl2\",",
" \"sampleurl3\",",
" \"sampleurl4\",",
" \"https://sampleurl5/test_sqs\"",
" ]",
"}"
]
}

我只希望最后一个 url“test_sqs”出现在“msg”下:,我尝试了以下过滤器但没有成功:

- name: VERIFY | Find SQS url
command: "{{ sqs_list.stdout_lines|list }} -- formats | grep $sqs"

最佳答案

aws cli默认生成JSON输出,利用这个优势:

---
- hosts: localhost
gather_facts: no
tasks:
- shell: aws sqs list-queues --region eu-west-1
register: sqs_list
- debug:
msg: "{{ (sqs_list.stdout | from_json).QueueUrls | last }}"

输出:

PLAY [localhost] **********************************
TASK [command] ************************************
changed: [localhost]

TASK [debug] **************************************
ok: [localhost] => {
"msg": "https://eu-west-1.queue.amazonaws.com/xxxxx/test"
}

关于linux - 来自 Ansible stdout_lines 结果的过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46937538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com