6

authorized_keysAnsible で特定のユーザーのエントリを作成するかなり単純なプレイブックがあります。

 - 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

そのディレクトリには約 6 つの公開鍵ファイルがあります。改行で区切られたすべてのキーを使用して、単一のファイルコンテンツをフォーマットしようとしています。

これは、Ansible docs で提案されているものです:

エクスクルーシブ

他のすべての指定されていないキーをauthorized_keysファイルから削除するかどうか。複数のキーを改行で区切ることにより、単一のキー文字列値に複数のキーを指定できます。このオプションはループに対応していないため、 を使用するwith_と、ループの反復ごとに排他的になります。ファイルに複数のキーが必要な場合は、key上記のように単一のバッチでそれらすべてを渡す必要があります。

ファイルグロブを使用して、public_keys/*.pubここで一致するすべてのファイルを単一のキーに連結して、排他性を維持し、必要に応じてキーを適切に削除するにはどうすればよいですか?

4

1 に答える 1

9

これにより、複数のファイルが改行文字で区切られて連結されます。

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

{% endfor %}

*.pubデフォルトの Ansible/Jinja2 設定では、ファイルが末尾の行で終わるかどうかに関係なく、出力は 1 つの改行文字で区切られます。

-%}最初の式では、各行の先頭にスペース文字が追加されるのを防ぎます。

于 2017-01-25T04:18:30.977 に答える