Ansible

Cómo usar el inicio de sesión basado en contraseña SSH en Ansible usando sshpass

Cómo usar el inicio de sesión basado en contraseña SSH en Ansible usando sshpass
En este artículo, le mostraré cómo ejecutar los libros de jugadas de Ansible utilizando un inicio de sesión basado en contraseña SSH con sshpass.

Prerrequisitos

Si desea probar los ejemplos discutidos en este artículo,

1) Debes tener Ansible instalado en tu computadora.
2) Debe tener al menos un host Ubuntu / Debian al que pueda conectarse desde Ansible.

Hay muchos artículos sobre LinuxHint dedicados a la instalación de Ansible. Puede consultarlos si es necesario para instalar los programas necesarios en su sistema.

También necesitará tener sshpass instalado en su computadora, donde debería tener Ansible instalado. Te mostraré como instalar sshpass en Ubuntu / Debian y CentOS / RHEL en este artículo. No se preocupe si no tiene estos programas ya instalados en su sistema.

Instalación de sshpass en Ubuntu / Debian

El programa sshpass está disponible en el repositorio oficial de paquetes de Ubuntu / Debian. Puede instalar fácilmente este programa en su computadora.

Primero, actualice la caché del repositorio de paquetes APT mediante el siguiente comando:

actualización de $ sudo apt

Ahora instale sshpass a través del siguiente comando:

$ sudo apt install sshpass -y

sshpass ahora debería estar instalado.

Instalación de sshpass en CentOS 8 / RHEL 8

sshpass está disponible en el repositorio EPEL de CentOS 8 / RHEL 8. Debe tener el repositorio EPEL habilitado para instalar sshpass.

Primero, actualice la caché del repositorio de paquetes DNF mediante el siguiente comando:

$ sudo dnf makecache

A continuación, instale el paquete del repositorio EPEL mediante el siguiente comando:

$ sudo dnf instalar epel-release -y

El paquete del repositorio EPEL ahora debería estar instalado y el repositorio EPEL debería estar habilitado.

Actualice la caché del repositorio de paquetes DNF nuevamente, de la siguiente manera:

$ sudo dnf makecache

Instalar en pc sshpass a través del siguiente comando:

$ sudo dnf instalar sshpass -y

sshpass debe ser instalado.

Configuración de un directorio de proyectos Ansible

Antes de continuar, sería una buena idea crear una estructura de directorio de proyecto, solo para mantener las cosas un poco organizadas.

Para crear un directorio de proyecto sshpass / y todos los subdirectorios necesarios (en su directorio de trabajo actual), ejecute el siguiente comando:

$ mkdir -pv sshpass / archivos, libros de jugadas

Navegue hasta el directorio del proyecto, de la siguiente manera:

$ cd sshpass /

Crear un Hospedadores archivo de inventario, de la siguiente manera:

$ nano hosts

Agregue su IP de host o nombre DNS en el archivo de inventario.

Una vez que haya terminado con este paso, guarde el archivo presionando + X, seguido por Y y .

Cree un archivo de configuración de Ansible en el directorio del proyecto, de la siguiente manera:

$ nano ansible.cfg

Ahora, escriba las siguientes líneas en el ansible.cfg expediente.

Una vez que haya terminado con este paso, guarde el archivo presionando + X, seguido por Y y .

Prueba de inicio de sesión SSH basado en contraseña en Ansible

A continuación, intente hacer ping a los hosts en el archivo de inventario, de la siguiente manera:

$ ansible all -u shovon -m ping

NOTA: Aquí el -tu La opción se usa para decirle a ansible qué usuario iniciar sesión como. En este caso, será el usuario shovon. Reemplaza este nombre de usuario por el tuyo a partir de ahora, a lo largo de la demostración.

Como puede ver, no puedo iniciar sesión en el host y ejecutar ningún comando.

Para obligar a Ansible a solicitar la contraseña de usuario, ejecute el ansible comando con el -pedir-pasar argumento, como sigue:

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

Como puede ver, Ansible solicita la contraseña SSH del usuario. Ahora, escriba su contraseña SSH (contraseña de inicio de sesión de usuario) y presione .

Se puede hacer ping al host de la siguiente manera:

Inicio de sesión SSH basado en contraseña de Ansible para Playbooks

Puede usar un inicio de sesión SSH basado en contraseña cuando ejecuta los libros de jugadas de Ansible. Veamos un ejemplo.

Primero, crea un nuevo libro de jugadas askpass1.yaml en el libros de jugadas / directorio, de la siguiente manera:

$ nano playbooks / askpass1.yaml

Escriba las siguientes líneas en el askpass1.yaml archivo de libro de jugadas:

- hosts: todos
usuario: shovon
Tareas:
- nombre: hacer ping a todos los hosts
silbido:
- nombre: Imprime un mensaje
depurar:
msg: 'Todo listo'

Una vez que haya terminado con este paso, guarde el archivo presionando + X, seguido por Y y .

Ejecutar el askpass1.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / askpass1.yaml

Como puede ver, no puedo conectarme al host. Puede ver que esto se debe a que no ejecuté el ansible-playbook comando con el -pedir-pasar opción.

Ejecutar el askpass1.yaml libro de jugadas con el -pedir-pasar opción, de la siguiente manera:

$ ansible-playbook -ask-pass playbooks / askpass1.yaml

Como puede ver, Ansible solicita una contraseña SSH. Escriba su contraseña SSH y presione .

El libro de jugadas askpass1.yaml ahora debería ejecutarse correctamente.

Ansible sudo Contraseña de inicio de sesión para Playbooks

La -pedir-pasar La opción le pedirá la contraseña de inicio de sesión SSH solamente. ¿Qué pasa si también desea escribir la contraseña de sudo?? Verá cómo hacer esto en los siguientes pasos.

Primero, crea un nuevo libro de jugadas askpass2.yaml en el libros de jugadas / directorio, de la siguiente manera:

$ nano playbooks / askpass2.yaml

Escriba las siguientes líneas en el askpass2.yaml expediente.

- hosts: todos
usuario: shovon
hecho realidad
Tareas:
- nombre: Instale el paquete apache2
apto:
nombre: apache2
estado: último
- nombre: asegúrese de que el servicio apache2 se esté ejecutando
Servicio:
nombre: apache2
estado: iniciado
habilitado: Verdadero
- nombre: Copiar índice.archivo html al servidor
Copiar:
src:… / archivos / índice.html
dest: / var / www / html / index.html
modo: 0644
propietario: www-data
grupo: www-data

Aquí, he usado el comando hecho realidad para decirle a Ansible que ejecute este libro de jugadas con privilegios de sudo. Una vez que haya terminado con este paso, guarde el askpass2.yaml archivo presionando + X, seguido por Y y .

Crear un índice.html archivo en el archivos / directorio, de la siguiente manera:

$ nano archivos / índice.html

Escriba los siguientes códigos HTML en el índice.html expediente:




Página principal


Hola Mundo


Funciona



Una vez que haya terminado con este paso, guarde el archivo presionando + X seguido por Y y .

Puede ejecutar el askpass2.yaml libro de jugadas con el -pedir-pasar opción, de la siguiente manera:

$ ansible-playbook --ask-pass playbooks / askpass2.yaml

Luego se le pedirá la contraseña SSH, como antes.

Pero es posible que el libro de jugadas aún no se ejecute incluso si proporciona la contraseña SSH. La razón de esto es porque debe decirle a Ansible que solicite la contraseña de sudo, así como la contraseña de SSH.

Puede decirle a Ansible que solicite la contraseña de sudo usando el -preguntar-convertirse-pasar opción mientras se ejecuta el libro de jugadas, de la siguiente manera:

$ ansible-playbook --ask-pass --ask-Become-pass playbooks / askpass2.yaml

Ahora, Ansible le pedirá la contraseña SSH.

A continuación, Ansible le pedirá la contraseña de sudo. Si su contraseña de sudo es la misma que la contraseña de SSH (que es lo más probable), déjela en blanco y presione .

Como puede ver, el libro de jugadas se ejecutó correctamente.

Configuración de inicio de sesión SSH automático basado en contraseña y inicio de sesión con contraseña sudo

Es posible que desee utilizar SSH basado en contraseña y sudo login, pero no desea escribir la contraseña SSH y la contraseña sudo cada vez que ejecuta un libro de jugadas. Si ese es el caso, entonces esta sección es para ti.

Para utilizar el inicio de sesión SSH basado en contraseña y el inicio de sesión sudo sin que se le soliciten las contraseñas, todo lo que tiene que hacer es agregar el ansible_ssh_pass y ansible_become_pass variables de host o variables de grupo en su archivo de inventario.

Primero, abra el Hospedadores archivo de inventario, de la siguiente manera:

$ nano hosts

Si tiene varios hosts en su archivo de inventario y cada uno de los hosts tiene contraseñas diferentes, agregue el ansible_ssh_pass y ansible_become_pass variables como variables de host (después de cada host) de la siguiente manera.

Asegúrese de reemplazar secreto con su contraseña SSH y sudo.

Si todos o algunos de los hosts tienen la misma contraseña, puede agregar la ansible_ssh_pass y ansible_become_pass variables como variables de grupo, como se muestra en el ejemplo siguiente.

Aquí, solo tengo un host, por lo que agregué el ansible_ssh_pass y ansible_become_pass variables para el todas grupo (todos los hosts en el archivo de inventario). Pero también puede agregar estas variables para otros grupos específicos.

Una vez que haya terminado de agregar el ansible_ssh_pass y ansible_become_pass variables en el Hospedadores archivo de inventario, guarde el Hospedadores archivo de inventario presionando + X, seguido por Y y .

Ahora puede ejecutar el askpass2.yaml libro de jugadas, de la siguiente manera:

$ ansible-playbook playbooks / askpass2.yaml

Como puede ver, el libro de jugadas se ejecutó correctamente, aunque no solicitó la contraseña SSH o la contraseña de sudo.

Entonces, así es como usas sshpass para inicio de sesión SSH y sudo basado en contraseña en Ansible. Gracias por leer este artículo!

OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...
Tutorial de OpenTTD
OpenTTD es uno de los juegos de simulación empresarial más populares que existen. En este juego, necesitas crear un maravilloso negocio de transporte....
SuperTuxKart para Linux
SuperTuxKart es un gran título diseñado para ofrecerte la experiencia Mario Kart de forma gratuita en tu sistema Linux. Es bastante desafiante y diver...