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

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

Requisitos previos

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

1) Debe tener Ansible instalado en su computadora.
2) Debe tener al menos un host de Ubuntu/Debian al que puede conectarse desde Ansible.

Hay muchos artículos sobre Linuxhint dedicados a instalar Ansible. Puede consultarlos si es necesario para instalar los programas necesarios en su sistema.

También necesitarás tener sshpass Instalado en su computadora, donde debe tener Ansible instalado. Te mostraré cómo instalar sshpass sobre 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 el caché del repositorio del paquete APT a través del siguiente comando:

$ sudo apt actualización

Ahora, instale sshpass a través del siguiente comando:

$ sudo apt instalación sshpass -y

ahora se debe instalar sshpass.

Instalación de SSHPass en Centos 8/Rhel 8

sshpass está disponible en el repositorio de Epel de Centos 8/Rhel 8. Debe tener habilitado el repositorio EPEL para instalar SSHPass.

Primero, actualice el caché del repositorio del paquete DNF a través del siguiente comando:

$ sudo dnf makecache

A continuación, instale el paquete de repositorio EPEL a través del siguiente comando:

$ sudo dnf instalación Epel -Lelease -y

El paquete de repositorio de EPEL ahora debe instalarse y el repositorio de EPEL debe habilitarse.

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

$ sudo dnf makecache

Instalar sshpass a través del siguiente comando:

$ sudo dnf instalación sshpass -y

sshpass debe instalarse.

Configuración de un directorio de proyectos Ansible

Antes de avanzar más, sería una buena idea crear una estructura de directorio de proyectos, solo para mantener las cosas un poco organizadas.

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

$ mkdir -pv sshpass/archivos, libros de jugadas

Navegue al directorio del proyecto, como sigue:

$ CD sshpass/

Crear un Hospedadores archivo de inventario, como sigue:

$ nano anfitriones

Agregue su nombre de IP o DNS de host 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 Ansible en el directorio del proyecto, como sigue:

$ nano ansible.CFG

Ahora, escriba las siguientes líneas en el ansible.CFG archivo.

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

Prueba de SSH basado en contraseña Iniciar sesión 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 -u La opción se usa para decirle a Ansible qué usuario iniciar sesión como. En este caso, será el usuario pala. Reemplace este nombre de usuario con el tuyo de ahora en adelante, 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 solicitar la contraseña del usuario, ejecute el ansible comando con el -pasaje de solicitud 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 del usuario) y presione .

El anfitrión se puede hacer sonar, como sigue:

Iniciar sesión SSH basado en contraseña de Ansible para libros de jugadas

Puede usar un inicio de sesión SSH basado en contraseña cuando ejecute Ansible Playbooks. Veamos un ejemplo.

Primero, crea un nuevo libro de jugadas AskPass1.yaml en el Libros de jugadas/ Directorio, como sigue:

$ Nano Playbooks/AskPass1.yaml

Escriba las siguientes líneas en el AskPass1.yaml Archivo del libro de jugadas:

- Anfitriones: todos
Usuario: Shovon
tareas:
- Nombre: Ping Todos los anfitriones
silbido:
- Nombre: Imprima un mensaje
depurar:
Msg: 'todo establecido'

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

Ejecutar el AskPass1.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/AskPass1.yaml

Como puede ver, no puedo conectarme al host. Puedes ver que esto es porque no ejecuté el Ansible-Playbook comando con el -pasaje de solicitud opción.

Ejecutar el AskPass1.yaml Libro de jugadas con el -pasaje de solicitud Opción, como sigue:

$ Ansible-Playbook -Aste-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 funcionar con éxito.

Inicio de sesión de contraseña de sudo de sudo para libros de jugadas

El -pasaje de solicitud La opción solo solicitará la contraseña de inicio de sesión de SSH. ¿Qué pasa si también desea escribir la contraseña de sudo?? Verás cómo hacer esto en los próximos pasos.

Primero, crea un nuevo libro de jugadas AskPass2.yaml en el Libros de jugadas/ Directorio, como sigue:

$ Nano Playbooks/AskPass2.yaml

Escriba las siguientes líneas en el AskPass2.yaml archivo.

- Anfitriones: 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: comenzó
habilitado: verdadero
- Nombre: Índice de copia.archivo html al servidor
Copiar:
SRC: ... /archivos /índice.html
Dest:/var/www/html/índice.html
Modo: 0644
Propietario: Data www
Grupo: Data www

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, como sigue:

$ nano archivos/índice.html

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




Página principal


Hola Mundo


Funciona



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

Puedes ejecutar el AskPass2.yaml Libro de jugadas con el -pasaje de solicitud Opción, como sigue:

$ Ansible-Playbook --Sark-Pass Playbooks/AskPass2.yaml

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

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

Puede decirle a Ansible que solicite la contraseña de sudo utilizando el -aservador Opción Al ejecutar el libro de jugadas, como sigue:

$ Ansible-playbook --ask-pass --ask-become-pass playbooks/askpass2.yaml

Ahora, Ansible le solicitará la contraseña de SSH.

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

Como puede ver, el libro de jugadas se ejecutó con éxito.

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

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

Para usar el inicio de sesión de SSH basado en la contraseña y el inicio de sesión de sudo sin recibir 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, como sigue:

$ nano anfitriones

Si tiene múltiples hosts en su archivo de inventario y cada uno de los hosts tiene diferentes contraseñas, 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 de SSH y sudo.

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

Aquí, solo tengo un anfitrión, así que he agregado el ansible_ssh_pass y ansible_become_pass Variables para el todo Grupo (todos los hosts en el archivo de inventario). Pero, también puede agregar estas variables para otros grupos específicos.

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

Ahora puede ejecutar el AskPass2.yaml Libro de jugadas, como sigue:

$ Ansible-Playbook Playbooks/AskPass2.yaml

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

Entonces, así es como te usas sshpass Para SSH y sudo basados ​​en contraseña, inicie sesión en Ansible. Gracias por leer este artículo!