我有一个相当简单的剧本,为Ansible中的给定用户创建authorized_keys
条目:
- 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
我在该目录中有大约六个公钥文件。我尝试使用换行符分隔的所有键格式化单个文件内容。
这是what is suggested by the Ansible docs:
独家
是否从authorized_keys文件中删除所有其他未指定的键。通过用换行符分隔多个键,可以在单个键字符串值中指定它们。 此选项不是循环识别的,因此如果您使用
with_
,它将在循环的每次迭代中是独占的,如果您需要文件中的多个键,则需要将它们全部传递到key
如上所述批次。
如何使用fileglob将匹配public_keys/*.pub
的所有文件连接到一个密钥中,以便在必要时保持排他性并正确删除密钥?
答案 0 :(得分:4)
这将连接多个文件,用换行符分隔它们的内容:
{% for filename in lookup('fileglob', 'public_keys/*.pub', wantlist=true) -%}
{{ lookup('file', filename) }}
{% endfor %}
使用默认的Ansible / Jinja2设置,无论*.pub
文件是否以尾随行结尾,输出都将由一个换行符分隔。
-%}
可防止在每行的开头添加空格字符。