Я новичок в ansible, и я создал небольшой ansible-playbook, который добавляет ключ хоста github ssh к known_hosts на каждом сервере:
---
- hosts: all
tasks:
- name: Add github to ssh known-hosts
known_hosts:
name: "TS_github"
key: "github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="
Но по некоторым причинам этот playbook не работает для каждого хоста с ошибкой:
fatal: [clusterapp-1]: FAILED! => {"changed": false, "cmd": "/usr/bin/ssh-keygen -F TS_github -f /tmp/tmpgROT5p", "failed": true, "msg": "", "rc": 1, "stderr": "", "stdout": "", "stdout_lines": []}
По некоторым причинам он использует /tmp/tmpgROT5p
как ключевой файл, что по очевидным причинам неверно. Как указано в доступный документ Модуль known_hosts должен использовать "(homedir) + /. ssh / known_hosts", но этого не произошло.
Я запускаю playbook следующим образом:
ansible-playbook -i hosts github_keys.yml
Я также пытался запустить playbook с ключом -vvv, но не получил никакой полезной информации.
Мой файл ansible.cfg:
[defaults]
transport=ssh
host_key_checking=false
В name
должно быть имя хоста.
Итак, в вашем случае имя должно быть github.com
и key
должно быть github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAA...
---
- hosts: all
tasks:
- name: Add github to ssh known-hosts
known_hosts:
name: github.com
key: "github.com,192.30.252.129 ssh-rsa AAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="
В качестве альтернативы вы можете использовать файл .ssh / config, чтобы конкретный пользователь игнорировал known_hosts, если вы просто пытаетесь избежать запроса, а это не соответствует вашим требованиям безопасности.
Хост * StrictHostKey Проверка нет
Возможным обходным решением может быть использование blockinfile.
- name: Add github to ssh known-hosts
blockinfile:
path: ~/.ssh/known_hosts
block: "github.com,192.30.252.129 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ=="
marker: "# {mark} github"
Конечно, рекомендуется использовать known_hosts, но этот работает достаточно хорошо. Также подходит для управления / etc / hosts