Отговорни

Как да използвам SSH базиран на парола вход в Ansible с помощта на sshpass

Как да използвам SSH базиран на парола вход в Ansible с помощта на sshpass
В тази статия ще ви покажа как да стартирате Ansible playbooks, използвайки 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 apt актуализация

Сега инсталирайте 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 инсталирайте epel-release -y

Вече трябва да се инсталира пакетът EPEL хранилище и EPEL хранилището да се активира.

Актуализирайте отново кеша на хранилището на DNF, както следва:

$ sudo dnf makecache

Инсталирай sshpass чрез следната команда:

$ sudo dnf инсталирайте sshpass -y

sshpass трябва да се инсталира.

Създаване на Ansible Project Directory

Преди да продължим по-нататък, би било добре да създадем структура на директория на проекта, само за да поддържаме нещата малко организирани.

За да създадете директория на проекта sshpass / и всички необходими поддиректории (в текущата работна директория), изпълнете следната команда:

$ mkdir -pv sshpass / файлове, книги за игра

Придвижете се до директорията на проекта, както следва:

$ cd sshpass /

Създавам домакини инвентарен файл, както следва:

$ nano домакини

Добавете IP или DNS името на вашия хост във файла с инвентара.

След като приключите с тази стъпка, запазете файла, като натиснете + х, следван от Y и .

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

$ nano ansible.cfg

Сега въведете следните редове в ансибъл.cfg файл.

След като приключите с тази стъпка, запазете файла, като натиснете + х, следван от Y и .

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

След това опитайте да пингнете хостовете във файла с инвентара, както следва:

$ ansible all -u shovon -m ping

ЗАБЕЛЕЖКА: Ето, -u Опцията се използва, за да каже на ansible кой потребител да влезе като. В този случай това ще бъде потребителят шовон. Заменете това потребителско име с вашето отсега нататък, през цялата демонстрация.

Както можете да видите, не мога да вляза в хоста и да изпълня команди.

За да принудите Ansible да поиска потребителска парола, стартирайте ансибъл команда с -попитайте-преминете аргумент, както следва:

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

Както можете да видите, Ansible иска SSH паролата на потребителя. Сега въведете вашата SSH парола (потребителска парола за вход) и натиснете .

Хостът може да бъде пинг, както следва:

Отговаряне на SSH вход, базиран на парола за Playbooks

Можете да използвате SSH вход, базиран на парола, когато стартирате Ansible playbooks. Нека разгледаме един пример.

Първо, създайте нова книга за игри askpass1.ямъл в книги за игри / директория, както следва:

$ nano playbooks / askpass1.ямъл

Въведете следните редове в askpass1.ямъл файл на playbook:

- домакини: всички
потребител: shovon
задачи:
- name: Пинг на всички хостове
пинг:
- име: Отпечатайте съобщение
отстраняване на грешки:
msg: 'Всичко е настроено'

След като приключите с тази стъпка, запазете файла, като натиснете + х, следван от Y и .

Стартирайте askpass1.ямъл playbook, както следва:

$ ansible-playbook playbooks / askpass1.ямъл

Както можете да видите, не мога да се свържа с хоста. Можете да видите, че това е така, защото аз не стартирах ansible-playbook команда с -попитайте-преминете опция.

Стартирайте askpass1.ямъл игрална книга с -попитайте-преминете опция, както следва:

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

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

Книгата за игри askpass1.ямъл сега трябва да работи успешно.

Ansible sudo Вход за парола за Playbooks

The -попитайте-преминете опцията ще поиска само SSH парола за вход. Ами ако искате също да въведете паролата за sudo? Ще видите как да направите това в следващите стъпки.

Първо, създайте нова книга за игри askpass2.ямъл в книги за игри / директория, както следва:

$ nano playbooks / askpass2.ямъл

Въведете следните редове в askpass2.ямъл файл.

- домакини: всички
потребител: shovon
стана: Вярно
задачи:
- име: Инсталирайте пакета apache2
подходящ:
име: apache2
състояние: последно
- name: Уверете се, че услугата apache2 работи
обслужване:
име: apache2
състояние: започнало
разрешено: Вярно
- име: Копиране на индекс.html файл към сървър
копие:
src: ... / files / index.html
dest: / var / www / html / index.html
режим: 0644
собственик: www-data
група: www-данни

Тук използвах командата стана: Вярно да каже на Ansible да стартира тази книга с привилегии на sudo. След като приключите с тази стъпка, запазете askpass2.ямъл файл, като натиснете + х, следван от Y и .

Създайте индекс.html файл в файлове / директория, както следва:

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

Въведете следните HTML кодове в индекс.html файл:




Начална страница


Здравей свят


Работи



След като приключите с тази стъпка, запазете файла, като натиснете + х следван от Y и .

Можете да стартирате askpass2.ямъл игрална книга с -попитайте-преминете опция, както следва:

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

След това ще бъдете помолени за SSH парола, както преди.

Но книгата за игра все още може да не работи, дори ако предоставите SSH паролата. Причината за това е, защото трябва да кажете на Ansible да поиска паролата за sudo, както и SSH паролата.

Можете да кажете на Ansible да поиска паролата за sudo с помощта на -попитайте-станете-преминете опция при стартиране на книгата за игра, както следва:

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

Сега Ansible ще ви подкани за SSH парола.

След това Ansible ще ви подкани паролата за sudo. Ако вашата sudo парола е същата като SSH паролата (което е най-вероятно), оставете я празна и натиснете .

Както можете да видите, книгата за игри работи успешно.

Конфигуриране на автоматично базирано на парола SSH Login и sudo Password Login

Може да искате да използвате SSH и sudo вход, базиран на парола, но не искате да въвеждате SSH паролата и sudo паролата всеки път, когато стартирате книга за игра. Ако случаят е такъв, тогава този раздел е за вас.

За да използвате 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 playbooks / askpass2.ямъл

Както можете да видите, книгата за игра се изпълнява успешно, въпреки че не иска SSH парола или sudo парола.

И така, вие използвате това sshpass за SSH базиран на парола и sudo вход в Ansible. Благодаря ви, че прочетохте тази статия!

Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...
SuperTuxKart за Linux
SuperTuxKart е страхотно заглавие, създадено да ви предостави безплатно изживяването на Mario Kart във вашата Linux система. Играта е доста предизвика...
Урок за битка за Уеснот
Битката за Уеснот е една от най-популярните стратегически игри с отворен код, които можете да играете по това време. Тази игра не само се разработва о...