В настоящее время я настраиваю систему с помощью ansible и хочу максимально ее автоматизировать.
Итак, я создаю открытые ключи на своей доступной машине и копирую их на хосты, чтобы я мог максимально контролировать хосты извне.
Теперь мне нужно настроить связь между моими хостами через открытые ключи. Я использую lineinfile
модуль, чтобы убедиться, что ключи присутствуют в authorized_keys
и known_hosts
файлы. Есть ли способ прочитать содержимое файла (на машине, с которой запущен ansible) и использовать его в качестве ввода для lineinfile
модуль?
Как указал Mxx в комментариях, lookup
это ответ. Кроме того, я бы не рекомендовал использовать lineinfile
для добавления authorized_keys. Специально для этого уже существует модуль Ansible, который вряд ли доставит вам неприятности. Вот пример игры. Он будет извлекать из локального открытого ключа и должным образом проверять, существует ли он для целевого пользователя.
tasks:
- name: Install SSH authorized key
authorized_key: >
user=root
key="{{ lookup('file', '/root/.ssh/id_rsa.pub') }}"
state=present