Как игнорировать проверку подлинности 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