Способы и детали подключения
В этом разделе показано, как расширять и уточнять методы подключения, которые Ansible использует для вашего инвентаря.
ControlPersist и paramiko
По умолчанию Ansible использует родной OpenSSH, поскольку он поддерживает ControlPersist (функция производительности), Kerberos и параметры в ~/.ssh/config , такие как настройка промежуточного хоста. Если ваш управляющий компьютер использует более старую версию OpenSSH, которая не поддерживает ControlPersist, Ansible переключится на реализацию OpenSSH на Python под названием «paramiko».
Настройка ключей SSH
По умолчанию Ansible предполагает, что вы используете ключи SSH для подключения к удалённым машинам. Рекомендуется использовать ключи SSH, но при необходимости вы можете использовать аутентификацию по паролю с помощью опции --ask-pass. Если вам нужно предоставить пароль для эскалации привилегий (sudo, pbrun и т. д.), используйте --ask-become-pass.
Примечание
Ansible не предоставляет канал для связи между пользователем и процессом ssh, чтобы принять пароль вручную для расшифровки ключа ssh при использовании плагина подключения ssh (который является по умолчанию). Настоятельно рекомендуется использовать ssh-agent.
Для настройки агента SSH, чтобы избежать повторного ввода паролей, можно сделать следующее:
$ ssh-agent bash $ ssh-add ~/.ssh/id_rsa
В зависимости от вашей настройки, вы можете использовать командную опцию Ansible --private-key для указания файла pem вместо этого. Также можно добавить файл закрытого ключа:
$ ssh-agent bash $ ssh-add ~/.ssh/keypair.pem
Ещё один способ добавить файлы закрытых ключей без использования ssh-agent — это использовать ansible_ssh_private_key_file в файле инвентаря, как описано здесь: Как составить свой инвентарь.
Запуск против localhost
Вы можете запускать команды против управляющего узла, используя «localhost» или «127.0.0.1» в качестве имени сервера:
$ ansible localhost -m ping -e 'ansible_python_interpreter="/usr/bin/env python"'
Вы можете явно указать localhost, добавив это в свой файл инвентаря:
localhost ansible_connection=local ansible_python_interpreter="/usr/bin/env python"
Проверка ключа хоста
Ansible по умолчанию включает проверку ключа хоста. Проверка ключей хоста защищает от подмены сервера и атак «человек посередине», но требует некоторого обслуживания.
Если хост переустановлен и имеет другой ключ в ‘known_hosts’, это приведёт к сообщению об ошибке до тех пор, пока проблема не будет исправлена. Если новый хост отсутствует в ‘known_hosts’, ваш управляющий узел может запросить подтверждение ключа, что приводит к интерактивному опыту при использовании Ansible, например, из cron. Возможно, вы этого не захотите.
Если вы понимаете последствия и хотите отключить это поведение, вы можете сделать это, отредактировав /etc/ansible/ansible.cfg или ~/.ansible.cfg:
[defaults] host_key_checking = False
Также это можно установить с помощью переменной среды ANSIBLE_HOST_KEY_CHECKING:
$ export ANSIBLE_HOST_KEY_CHECKING=False
Обратите внимание, что проверка ключа хоста в режиме paramiko относительно медленная, поэтому рекомендуется переключиться на ‘ssh’, если вы используете эту функцию.
Другие методы подключения
Ansible может использовать различные методы подключения помимо SSH. Вы можете выбрать любой плагин подключения, включая локальное управление и управление контейнерами chroot, lxc и jail. Режим под названием «ansible-pull» также может инвертировать систему и заставить системы «звонить домой» через запланированные git-чек-ауты для извлечения директив конфигурации из центрального репозитория.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/user_guide/connection_details.html