当前位置:  开发笔记 > 编程语言 > 正文

如何使用glob模式将文件串联为单个值?

如何解决《如何使用glob模式将文件串联为单个值?》经验,为你挑选了1个好方法。

我有一个相当简单的剧本,可authorized_keys在Ansible中为给定的用户创建条目:

 - name: chat user authorized keys
   authorized_key:
     user: chat
     key: |
       {% for filename in lookup('fileglob', 'public_keys/*.pub') %}
       # {{ filename }}
       {{ lookup('file', filename ) }}
       {% endfor %}
     exclusive: true

我在该目录中大约有六个公钥文件。我正在尝试使用换行符分隔的所有键来格式化单个文件内容。

这是Ansible docs建议的:

独家

是否从authorized_keys文件中删除所有其他未指定的密钥。可以通过换行符将多个键指定在单个键字符串值中。此选项不是循环感知的,因此,如果使用with_,则它将在循环的每次迭代中独占,如果要在文件中包含多个键,则需要key如上所述将它们全部传递给一个批处理。

如何在这里使用fileglob将所有匹配的文件连接public_keys/*.pub到单个密钥中,以便我可以保持排他性并在必要时适当地删除密钥?



1> techraf..:

这将串联多个文件,并用换行符分隔其内容:

{% for filename in lookup('fileglob', 'public_keys/*.pub', wantlist=true) -%}
{{ lookup('file', filename) }}

{% endfor %}

使用默认的Ansible / Jinja2设置,无论*.pub文件是否以尾行结尾,输出都将仅由一个换行符分隔。

-%} 在第一个表达式中,防止在每行的开头添加空格字符。

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有