Введение
Ansible - это мощный инструмент автоматизации IT, который упрощает управление инфраструктурой и развертывание. Однако при работе с удаленными хостами проверка ключей хоста по умолчанию в Ansible может иногда создать проблемы. В этом руководстве вы узнаете, как отключить проверку ключей хоста в Ansible, чтобы обеспечить плавный и эффективный процесс автоматизации.
Понимание проверки ключей хоста
Проверка ключей хоста - это функция безопасности в Ansible, которая помогает подтвердить идентичность удаленных хостов, к которым вы подключаетесь. Когда вы впервые подключаетесь к удаленному хосту, Ansible сохраняет открытый ключ этого хоста в файле known_hosts. При последующих подключениях Ansible сравнивает открытый ключ хоста с тем, который хранится в файле known_hosts, чтобы убедиться, что вы подключаетесь к тому же удаленному хосту, к которому подключались ранее.
Этот процесс помогает предотвратить атаки "человек посередине", когда злоумышленник может перехватить ваше соединение и представиться удаленным хостом. Путем проверки идентичности хоста Ansible может гарантировать, что вы общаетесь с правильным удаленным хостом.
Однако в некоторых случаях вы можете захотеть отключить проверку ключей хоста, например, при работе с временными или динамически подготовленными хостами или при тестировании своих Ansible-плейбуков. Отключение проверки ключей хоста может сделать процесс подключения быстрее и удобнее, но также увеличивает риск атаки "человек посередине".
graph LR
A[Client] -- Connect --> B[Remote Host]
B -- Public Key --> A
A -- Verify Public Key --> C[Known Hosts File]
| Действие | Описание |
|---|---|
| Connect | Клиент подключается к удаленному хосту. |
| Public Key | Удаленный хост отправляет свой открытый ключ клиенту. |
| Verify Public Key | Клиент сравнивает полученный открытый ключ с тем, который хранится в файле known_hosts. |
Отключение проверки ключей хоста
Для отключения проверки ключей хоста в Ansible вы можете использовать следующие методы:
Переменная окружения
Вы можете установить переменную окружения ANSIBLE_HOST_KEY_CHECKING в значение False, чтобы отключить проверку ключей хоста глобально:
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook my_playbook.yml
Файл конфигурации Ansible
Вы также можете отключить проверку ключей хоста, установив параметр host_key_checking в файле конфигурации Ansible (/etc/ansible/ansible.cfg или ~/.ansible.cfg):
[defaults]
host_key_checking = False
Параметр командной строки Ansible
В качестве альтернативы вы можете отключить проверку ключей хоста для конкретной команды Ansible, используя параметр --ask-vault-pass или -k:
ansible-playbook my_playbook.yml --ask-vault-pass -k
При этом вам будет предложено ввести пароль для хранилища (vault) и проверка ключей хоста будет отключена для текущей команды.
graph LR
A[Ansible] -- Set Environment Variable --> B[ANSIBLE_HOST_KEY_CHECKING=False]
A -- Set Configuration File --> C[ansible.cfg]
A -- Use Command-line Option --> D[--ask-vault-pass/-k]
Отключив проверку ключей хоста, вы можете упростить процесс подключения и облегчить работу с динамическими или временными хостами. Однако важно отметить, что это также увеличивает риск атаки "человек посередине", поэтому рекомендуется отключать проверку ключей хоста только в не-продакшн окружениях или когда вы уверены в том, что удаленные хосты являются надежными.
Настройка проверки ключей хоста
Если вы предпочитаете оставить включенной проверку ключей хоста, вы можете настроить ее в соответствии с вашими потребностями. Вот несколько вариантов:
Ручное принятие ключей хоста
Когда вы впервые подключаетесь к удаленному хосту, Ansible попросит вас принять открытый ключ хоста. Вы можете вручную принять ключ, введя "yes", когда появится запрос:
The authenticity of host 'example.com (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:abcd1234efgh5678.
Are you sure you want to continue connecting (yes/no)? yes
Это добавит открытый ключ хоста в файл known_hosts, и Ansible будет использовать его для проверки идентичности хоста при последующих подключениях.
Автоматическое принятие ключей хоста
В качестве альтернативы вы можете настроить Ansible на автоматическое принятие ключей хоста, установив параметр host_key_auto_add в файле конфигурации Ansible:
[defaults]
host_key_auto_add = True
Это автоматически добавит новые ключи хоста в файл known_hosts без запроса подтверждения.
Указание пользовательского файла known_hosts
По умолчанию Ansible использует файл ~/.ssh/known_hosts для хранения ключей хоста. Однако вы можете указать пользовательский файл known_hosts, установив переменную окружения ANSIBLE_SSH_ARGS:
export ANSIBLE_SSH_ARGS="-o UserKnownHostsFile=/path/to/custom/known_hosts"
ansible-playbook my_playbook.yml
Это может быть полезно, если вы хотите поддерживать отдельные файлы known_hosts для разных окружений или проектов.
graph LR
A[Ansible] -- Prompt for Manual Acceptance --> B[known_hosts file]
A -- Automatically Accept --> C[known_hosts file]
A -- Specify Custom File --> D[/path/to/custom/known_hosts]
Настраивая проверку ключей хоста, вы можете найти баланс между безопасностью и удобством, обеспечивая безопасность ваших соединений в Ansible при одновременном сохранении эффективного рабочего процесса.
Резюме
Отключив проверку ключей хоста в Ansible, вы можете упростить свои автоматизированные рабочие процессы, уменьшить препятствия и повысить общую эффективность управления инфраструктурой. В этом руководстве был представлен комплексный обзор процесса, включая понимание проверки ключей хоста, шаги по ее отключению и доступные параметры настройки. С учетом этих знаний вы можете уверенно применить эту технику и повысить свои возможности автоматизации с использованием Ansible.


