我有一个相当简单的剧本,可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
到单个密钥中,以便我可以保持排他性并在必要时适当地删除密钥?
这将串联多个文件,并用换行符分隔其内容:
{% for filename in lookup('fileglob', 'public_keys/*.pub', wantlist=true) -%} {{ lookup('file', filename) }} {% endfor %}
使用默认的Ansible / Jinja2设置,无论*.pub
文件是否以尾行结尾,输出都将仅由一个换行符分隔。
-%}
在第一个表达式中,防止在每行的开头添加空格字符。