以下任务:
- name: Set fact
ansible.builtin.uri:
url: https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.24.5/sealed-secrets_0.24.5_checksums.txt
return_content: true
register: checksums
- name: Output checksums
ansible.builtin.debug:
var: checksums.content
返回此格式:
TASK [Output checksums] *********
ok: [localhost] =>
checksums.content: |-
0a5d37bfb646f31dc2d7270ba57aca1bd129bf975baf24dbce5576893e199948 kubeseal-0.24.5-linux-arm.tar.gz
1ecaffe84c0c7c9db7fcd9c3a004f916e218c1cae48df26a87fa27842201ebec kubeseal-0.24.5-darwin-arm64.tar.gz
6bc27346b2f32c85e230161070ffe5c8502360b94aee4cfcedfc512de32543f8 kubeseal-0.24.5-linux-arm64.tar.gz
90c28047caa071fc017c477b94e99d92f2ba2c8b800504f9ca9b87cbecffca77 kubeseal-0.24.5-darwin-amd64.tar.gz
f3ba81d754f0c67e4bd13118d334cbdb816573e943395532dce674cdbe923710 kubeseal-0.24.5-linux-amd64.tar.gz
f94d643194a5500ba19540e8b7a953f5c050387ddd0dd78a135de085a28c2fee kubeseal-0.24.5-windows-amd64.tar.gz
我的目标是提取与linux-arm64
正则表达式匹配的校验和并将其设置为事实:
TASK [Result] *********
ok: [localhost] =>
result: 6bc27346b2f32c85e230161070ffe5c8502360b94aee4cfcedfc512de32543f8
感谢您的帮助。
这有效:
我们通过拆分输出将其转换为列表。每个换行符都是列表中的一个项目,因此是循环。然后,对于列表中的每个项目,我们只需要“linux-arm64”行,因此有该
when
子句。最后,我们只想要该行中的第一项,为我们提供所需的结果。
请注意,前往罗马有多种方式。
也可以通过使用选择过滤器以及很可能的其他过滤器来解决。
您可以
select
按照 Kevin 的建议使用过滤器。它比循环更简单、更安全,因为您可能会将它们包含到其他任务中,从而形成嵌套循环,因此必须loop_control
在各处引入和自定义循环标签来区分循环变量。请注意,我格式化了模板以使其更具可读性,但它不是多行模板。