6

我有一个相当简单的剧本,它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 文档的建议

独家的

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

如何在此处使用 fileglob 将所有匹配的文件连接public_keys/*.pub到一个键中,以便我可以保持排他性并在必要时正确删除键?

4

1 回答 1

9

这将连接多个文件,用换行符分隔它们的内容:

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

{% endfor %}

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

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

于 2017-01-25T04:18:30.977 回答