Используя Ansible, я стараюсь убедиться, что файлы .ssh/authorized_keys
наших серверов содержат только заданный набор ключей ssh. Независимо от аранжировки.
- Если чего-то не хватает, добавьте его (нет проблем,
lineinfile
) - Если кто-то еще подсунул лишний ключ (которого нет в списке with_items), удалите его и верните какое-нибудь предупреждение или что-то в этом роде. Что ж... "изменено" тоже может быть приемлемым, но было бы неплохо как-то различать "отсутствующие" и "проникшие" строки.
Первая часть проста:
- name: Ensure ssh authorized_keys contains the right users
lineinfile:
path: /root/.ssh/authorized_keys
owner: root
group: root
mode: 0600
state: present
line: '{{ item }}'
with_items:
- ssh-rsa AABBCC112233... [email protected]
- ssh-rsa DDEEFF112233... [email protected]
А вот вторая часть выглядит сложнее. По крайней мере, сделать это с помощью короткого и элегантного кода.
Любые идеи?