Jak mogę połączyć zawartość kilku plików w zmienną?Ansible - jak łączyć zawartość plików w zmienną
Oto problem: próbuję ustawić klucze publiczne dla użytkownika na komputerze zdalnym. Przykład z authorized_key documentation że prawie działa:
- 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
Ale rzeczywiście muszę używać exclusive=yes
, więc po aktualizacji wszystkich nie-pod warunkiem klucze publiczne są usuwane.
Jeśli dostarczono exclusive=yes
, w pliku .ssh/authorized_keys
pozostaje tylko ostatni klucz publiczny (również zgłoszony jako bug).
Moje obecne podejście:
- 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
To działa, ale pierwsze dwa polecenia zawsze produkować „zmieniony”. Uważam też, że musi istnieć bardziej eleganckie rozwiązanie.
Czy istnieje sposób łączenia zawartości kilku plików w zmienną? Czy istnieje ogólnie lepsze podejście do tego zadania?
Myśląc o tym, aby pozbyć się "zmienionego" statusu 'changed_when: False' można dołączyć do dwóch pierwszych poleceń, ale nadal nie jestem zadowolony z wyniku. –