複数のファイルの内容を変数に連結するにはどうすればよいですか?
問題は次のとおりです。リモート マシンでユーザーの公開鍵を設定しようとしています。ほとんど機能するauthorized_keyドキュメントの例:
- name: Set up authorized_keys for the deploy user
authorized_key: user=deploy
key="{{ item }}"
with_file:
- public_keys/doe-jane
- public_keys/doe-john
しかし、実際には を使用する必要があるexclusive=yes
ため、更新後、提供されていない公開鍵はすべて削除されます。
が提供されている場合exclusive=yes
、最後にリストされた公開鍵のみがファイルに残ります (バグ.ssh/authorized_keys
としても報告されています)。
私の現在のアプローチ:
- name: create empty temporary keys file
local_action: "shell > /tmp/auth_keys"
- name: concat keys to temporary file
local_action: "shell echo {{ item }} >> /tmp/auth_keys"
with_file:
- public_keys/doe-jane
- public_keys/doe-john
- name: set up authorized_keys
authorized_key: user=deploy
key="{{ lookup('file', '/tmp/auth_keys') }}"
exclusive=yes
これは機能しますが、最初の 2 つのコマンドは常に「changed」を生成します。また、これにはもっとエレガントな解決策が必要だと思います。
では、複数のファイルの内容を変数に連結する方法はありますか? または、このタスクに対する一般的なより良いアプローチはありますか?