Ansible

Как использовать SSH-вход на основе пароля в Ansible с помощью sshpass

Как использовать SSH-вход на основе пароля в Ansible с помощью sshpass
В этой статье я покажу вам, как запускать плейбуки Ansible, используя SSH-пароль для входа в систему с помощью sshpass.

Предпосылки

Если вы хотите попробовать примеры, обсуждаемые в этой статье,

1) На вашем компьютере должен быть установлен Ansible.
2) У вас должен быть хотя бы хост Ubuntu / Debian, к которому вы можете подключиться из Ansible.

На LinuxHint есть много статей, посвященных установке Ansible. Вы можете проверить их, если необходимо установить необходимые программы в вашей системе.

Вам также понадобится sshpass установлен на вашем компьютере, где у вас должен быть установлен Ansible. Я покажу вам, как установить sshpass на Ubuntu / Debian и CentOS / RHEL в этой статье. Не волнуйтесь, если в вашей системе еще не установлены эти программы.

Установка sshpass в Ubuntu / Debian

Программа sshpass доступен в официальном репозитории пакетов Ubuntu / Debian. Вы можете легко установить эту программу на свой компьютер.

Сначала обновите кеш репозитория пакетов APT с помощью следующей команды:

$ sudo подходящее обновление

Теперь установите sshpass с помощью следующей команды:

$ sudo apt install sshpass -y

sshpass теперь должен быть установлен.

Установка sshpass на CentOS 8 / RHEL 8

sshpass доступен в репозитории EPEL CentOS 8 / RHEL 8. У вас должен быть включен репозиторий EPEL для установки sshpass.

Сначала обновите кеш репозитория пакетов DNF с помощью следующей команды:

$ sudo dnf makecache

Затем установите пакет репозитория EPEL с помощью следующей команды:

$ sudo dnf install epel-release -y

Теперь должен быть установлен пакет репозитория EPEL и должен быть включен репозиторий EPEL.

Снова обновите кеш репозитория пакетов DNF, как показано ниже:

$ sudo dnf makecache

Установить sshpass с помощью следующей команды:

$ sudo dnf установить sshpass -y

sshpass должен быть установлен.

Настройка каталога проектов Ansible

Прежде чем мы продолжим, было бы неплохо создать структуру каталогов проекта, чтобы все было немного организовано.

Чтобы создать каталог проекта sshpass / и все необходимые подкаталоги (в вашем текущем рабочем каталоге), выполните следующую команду:

$ mkdir -pv sshpass / файлы, пьесы

Перейдите в каталог проекта следующим образом:

$ cd sshpass /

Создать хозяева файл инвентаризации, как показано ниже:

$ nano хосты

Добавьте IP-адрес или DNS-имя вашего хоста в файл инвентаризации.

По завершении этого шага сохраните файл, нажав + Икс, с последующим Y а также .

Создайте файл конфигурации Ansible в каталоге проекта, как показано ниже:

$ нано доступный.cfg

Теперь введите следующие строки в анзибль.cfg файл.

По завершении этого шага сохраните файл, нажав + Икс, с последующим Y а также .

Тестирование входа по SSH на основе пароля в Ansible

Затем попробуйте пропинговать хосты в файле инвентаризации, как показано ниже:

$ ansible all -u shovon -m ping

ПРИМЕЧАНИЕ: Здесь -ты опция используется, чтобы указать ansible, какой пользователь должен войти в систему как. В этом случае это будет пользователь Шовон. С этого момента замените это имя пользователя своим на протяжении всей демонстрации.

Как видите, я не могу войти на хост и выполнить какие-либо команды.

Чтобы заставить Ansible запрашивать пароль пользователя, запустите анзибль команда с -спросить-пройти аргумент следующим образом:

$ ansible all -u shovon --ask-pass -m ping

Как видите, Ansible запрашивает пароль SSH пользователя. Теперь введите свой пароль SSH (пароль для входа в систему) и нажмите .

Хост можно пропинговать следующим образом:

SSH-вход Ansible на основе пароля для Playbooks

Вы можете использовать SSH-вход на основе пароля при запуске Ansible playbooks. Давайте посмотрим на пример.

Сначала создайте новую пьесу askpass1.ямл в пьесы / каталог, а именно:

$ nano playbooks / askpass1.ямл

Введите следующие строки в askpass1.ямл файл playbook:

- хосты: все
пользователь: shovon
задачи:
- name: пинговать все хосты
пинг:
- имя: Распечатать сообщение
отлаживать:
msg: 'Все готово'

По завершении этого шага сохраните файл, нажав + Икс, с последующим Y а также .

Запустить askpass1.ямл playbook, как показано ниже:

Плейбуки $ ansible-playbook / askpass1.ямл

Как видите, я не могу подключиться к хосту. Как видите, это потому, что я не запускал Ansible-playbook команда с -спросить-пройти вариант.

Запустить askpass1.ямл пьеса с -спросить-пройти вариант, а именно:

$ ansible-playbook -ask-pass playbooks / askpass1.ямл

Как видите, Ansible запрашивает пароль SSH. Введите свой пароль SSH и нажмите .

Пособие askpass1.ямл теперь должен работать успешно.

Ansible sudo пароль для входа в Playbooks

В -спросить-пройти опция запросит только пароль для входа в SSH. Что делать, если вы также хотите ввести пароль sudo? Вы увидите, как это сделать, на следующих шагах.

Сначала создайте новую пьесу askpass2.ямл в пьесы / каталог, а именно:

Плейбуки $ nano / askpass2.ямл

Введите следующие строки в askpass2.ямл файл.

- хосты: все
пользователь: shovon
становятся истинными
задачи:
- имя: Установить пакет apache2
apt:
имя: apache2
состояние: последнее
- имя: Убедитесь, что служба apache2 запущена
услуга:
имя: apache2
состояние: запущено
enabled: True
- имя: Копировать индекс.html файл на сервер
копия:
src:… / files / index.html
место назначения: / var / www / html / index.html
режим: 0644
владелец: www-data
группа: www-data

Здесь я использовал команду становятся истинными чтобы сказать Ansible запустить эту пьесу с привилегиями sudo. Когда вы закончите с этим шагом, сохраните askpass2.ямл файл, нажав + Икс, с последующим Y а также .

Создать индекс.html файл в файлы / каталог, а именно:

$ nano файлы / индекс.html

Введите следующие коды HTML в поле индекс.html файл:




Домашняя страница


Привет мир


Оно работает



По завершении этого шага сохраните файл, нажав + Икс с последующим Y а также .

Вы можете запустить askpass2.ямл пьеса с -спросить-пройти вариант, а именно:

$ ansible-playbook --ask-pass playbooks / askpass2.ямл

Затем вам будет предложено ввести пароль SSH, как и раньше.

Но playbook по-прежнему может не работать, даже если вы предоставите пароль SSH. Причина в том, что вы должны указать Ansible запрашивать пароль sudo, а также пароль SSH.

Вы можете указать Ansible запросить пароль sudo с помощью -спросить-стать-передать вариант при запуске playbook, как показано ниже:

$ ansible-playbook --ask-pass --ask-стать-pass playbooks / askpass2.ямл

Теперь Ansible запросит у вас пароль SSH.

Затем Ansible запросит у вас пароль sudo. Если ваш пароль sudo совпадает с паролем SSH (что наиболее вероятно), оставьте его пустым и нажмите .

Как видите, playbook успешно запустился.

Настройка автоматического входа по SSH на основе пароля и входа по паролю sudo

Возможно, вы захотите использовать SSH на основе пароля и вход в систему sudo, но не хотите вводить пароль SSH и пароль sudo каждый раз, когда вы запускаете playbook. Если это так, то этот раздел для вас.

Чтобы использовать SSH-вход на основе пароля и вход в систему sudo без запроса паролей, все, что вам нужно сделать, это добавить ansible_ssh_pass а также ansible_become_pass переменные хоста или групповые переменные в вашем файле инвентаризации.

Сначала откройте хозяева файл инвентаризации, как показано ниже:

$ nano хосты

Если у вас есть несколько хостов в вашем файле инвентаризации и каждый из хостов имеет разные пароли, добавьте ansible_ssh_pass а также ansible_become_pass переменные как переменные хоста (после каждого хоста) следующим образом.

Обязательно замените секрет с вашим SSH и паролем sudo.

Если все или некоторые хосты имеют одинаковый пароль, вы можете добавить ansible_ssh_pass а также ansible_become_pass переменные как групповые переменные, как показано в примере ниже.

Здесь у меня только один хост, поэтому я добавил ansible_ssh_pass а также ansible_become_pass переменные для все группа (все хосты в файле инвентаризации). Но вы можете добавить эти переменные и для других конкретных групп.

Как только вы закончите добавлять ansible_ssh_pass а также ansible_become_pass переменные в хозяева файл инвентаря, сохраните хозяева файл инвентаря, нажав + Икс, с последующим Y а также .

Теперь вы можете запустить askpass2.ямл playbook, как показано ниже:

Плейбуки $ ansible-playbook / askpass2.ямл

Как видите, playbook успешно запустился, хотя не запрашивал пароль SSH или пароль sudo.

Итак, вот как вы используете sshpass для SSH на основе пароля и входа sudo в Ansible. Спасибо, что прочитали эту статью!

SuperTuxKart для Linux
SuperTuxKart - отличная игра, созданная для того, чтобы бесплатно познакомить вас с Mario Kart в вашей системе Linux. Играть в нее довольно сложно и в...
Учебник Battle for Wesnoth
Битва за Веснот - одна из самых популярных стратегических игр с открытым исходным кодом, в которую вы можете играть сейчас. Эта игра не только очень д...
0 А.D. Руководство
Из множества существующих стратегических игр 0 A.D. удается выделиться как всеобъемлющее название и очень глубокая тактическая игра, несмотря на то, ч...