Spec-Zone.ru › Ansible

Методы подключения и подробная информация

В этом разделе показано, как расширить и уточнить методы подключения, которые Ansible использует для инвентаризации.

ControlPersist и paramiko

По умолчанию Ansible использует встроенный OpenSSH, поскольку он поддерживает ControlPersist (функцию повышения производительности), Kerberos и параметры в ~/.ssh/config, например настройку Jump Host. Если на управляющем компьютере установлена более старая версия OpenSSH, не поддерживающая ControlPersist, Ansible переключится на реализацию OpenSSH на Python под названием «paramiko».

Настройка удалённого пользователя

По умолчанию Ansible подключается ко всем удалённым устройствам под именем пользователя, которое вы используете на управляющем узле. Если такого пользователя нет на удалённом устройстве, можно задать для подключения другое имя пользователя. Если вам нужно выполнить лишь некоторые задачи от имени другого пользователя, см. Общие сведения о повышении привилегий: become. Пользователя для подключения можно задать в плейбуке:

---
- name: update webservers
  hosts: webservers
  remote_user: admin

  tasks:
  - name: thing to do first in this playbook

  # ...

в качестве переменной хоста в инвентаризации:

other1.example.com     ansible_connection=ssh        ansible_user=myuser
other2.example.com     ansible_connection=ssh        ansible_user=myotheruser

или в качестве переменной группы в инвентаризации:

cloud:
  hosts:
    cloud1: my_backup.cloud.com
    cloud2: my_backup2.cloud.com
  vars:
    ansible_user: admin

См. также

ssh — подключение с помощью исполняемого файла клиента ssh

Подробная информация о ключевом слове remote_user и переменной ansible_user.

Управление поведением Ansible: правила приоритета

Подробная информация о правилах приоритета Ansible.

Настройка ключей 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 checkout.

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/inventory_guide/connection_details.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API