Как игнорировать проверку подлинности Ansible SSH?
есть ли способ игнорировать проверку подлинности SSH, сделанную Ansible? Например, когда я только что установил новый сервер, я должен ответить " да " на этот вопрос:
GATHERING FACTS ***************************************************************
The authenticity of host 'xxx.xxx.xxx.xxx (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is xx:yy:zz:....
Are you sure you want to continue connecting (yes/no)?
Я знаю, что это вообще плохая идея, но я включаю это в сценарий, который сначала создает новый виртуальный сервер в моем облачном провайдере, а затем автоматически вызывает мой ansible playbook для его настройки. Я хочу избежать любого вмешательства человека в середине выполнения сценария.
3 ответов
два варианта-первый, как вы сказали в своем собственном ответе, устанавливает переменную окружения ANSIBLE_HOST_KEY_CHECKING
в False.
второй способ установить его-поместить его в ансибль.cfg-файл, и это действительно полезная опция, потому что вы можете установить ее глобально (на уровне системы или пользователя, в /etc/ansible/ansible.cfg
или ~/.ansible.cfg
) или в конфигурационном файле в том же каталоге, что и playbook, который вы запускаете.
делать, что делать ansible.cfg
файл в одном из этих местоположений и включает это:
[defaults]
host_key_checking = False
вы также можете установить множество других удобных значений по умолчанию, например, собирать ли факты в начале игры, объединять ли хэши, объявленные в нескольких местах, или заменять один на другой, и так далее. Существует целый большой список опций здесь в документах Ansible.
Edit: примечание по безопасности.
проверка ключа хоста SSH является значимым уровнем безопасности для постоянные хозяева - если вы подключаясь к одной и той же машине много раз, полезно принимать ключ хоста локально.
для более долгоживущих экземпляров EC2 имело бы смысл принять ключ хоста с задачей run только один раз при первоначальном создании экземпляра:
- name: Write the new ec2 instance host key to known hosts
connection: local
shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"
там нет значения безопасности для проверки ключей хоста на экземплярах, которые вы встаете динамически и удалить сразу после выполнения playbook, но есть значение безопасности в проверке ключей хоста для постоянных машины. Таким образом, вы должны управлять проверкой ключа хоста по-разному для каждой логической среды.
- оставьте проверку включенной по умолчанию (в
~/.ansible.cfg
) - отключить проверку ключа хоста в рабочем каталоге для playbooks вы запускаете против эфемерных экземпляров (
./ansible.cfg
наряду с playbook для модульных тестов против бродячих VMs, автоматизация для кратковременных экземпляров ec2)
Я нашел ответ, вам нужно установить переменную окружения ANSIBLE_HOST_KEY_CHECKING
to False
. Например:
ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook ...
вперед nikobelia
для тех, кто использует Дженкинса для запуска книги воспроизведения, я просто добавил в свою работу Дженкинса перед запуском ansible-playbook переменную среды he ANSIBLE_HOST_KEY_CHECKING = False Например это:
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook 'playbook.yml' \
--extra-vars="some vars..." \
--tags="tags_name..." -vv