En este tutorial, vamos a aprender sobre uno de los módulos importantes de Ansible que está autorizado_key. Aprenderemos cómo transferimos la clave de descifrado SSH que se almacena en el archivo de inventario a los hosts remotos en Ansible.
Para lograr las tareas en el libro de jugadas Ansible en dispositivos de host remoto distantes, debemos eliminar las credenciales de la conexión SSH al host remoto o podemos suministrar las credenciales y claves para autenticarse a medida que se ejecuta el libro de jugadas. En Ansible, tenemos dos claves diferentes que son la clave pública y la clave privada conocida como el par de claves SSH. Para establecer una conexión con los hosts remotos de destino, debemos intercambiar nuestra clave SSH pública con ellos mientras mantenemos la tecla SSH privada en máquinas locales. El OpenSSH es el mecanismo de conectividad predeterminado en la herramienta Ansible. Ansible supone que estamos conectando a los hosts remotos de destino utilizando las teclas SSH.
Diferentes pasos de conexión SSH usando las teclas en Ansible
Los siguientes son los pasos que vamos a usar para construir la conexión SSH entre el controlador Ansible y los hosts remotos utilizando la clave pública y la clave privada:
Paso 1: Haga un par de claves generando las claves privadas y públicas con los nombres respectivos, ID, RSA y PUB.
Paso 2: Si no especificamos nada, Ansible se produce automáticamente bajo el /.carpeta ssh.
Paso 3: Pastando el pub de clave pública al final del documento /.SSH/claves autorizadas, puede transmitirlo a hosts remotos distantes.
Etapa 4: Conectarse a través de SSH al host remoto de destino. Luego, confirme la solicitud de agregar las huellas digitales de los hosts de destino al /.Documento de hosts SSH/conocido. Si no cumple con esto, el software le solicitará que especifique una contraseña cada vez que se inicie la conexión SSH.
Prerrequisitos de Autorización Ansible_Key
Suponemos que tiene un servidor de control Ansible con un Ansible instalado, así como los hosts remotos de destino para construir la conexión SSH entre todos los módulos Ansible.
Vamos a aclarar más aspectos implementando el ejemplo simple de una clave de autorización en Ansible estableciendo una conexión SSH utilizando claves públicas y privadas.
Ejemplo:
Aquí está el primer ejemplo que vamos a implementar en Ansible utilizando el módulo Authorization_Key. Para construir la conexión, necesitamos un libro de jugadas donde escribamos los hosts y tareas para establecer la conexión entre el servidor de control Ansible y los hosts remotos de destino. El siguiente comando se usa para crear el libro de jugadas en la herramienta Ansible:
[root@master ansible]# nano autorization_key_1.YML
Después de escribir el comando proporcionado, el libro de jugadas se crea y se abre. Ahora, primero proporcionamos los hosts remotos con los que queremos construir la conexión SSH, que es los hosts remotos de "todos" de destino. Luego, usamos el parámetro "Recopilar_facts" de la herramienta Ansible. El argumento de gatción_fact se usa para llamar al módulo de configuración de Ansible. En esta situación, no queremos recopilar los hechos, por lo que proporcionamos el valor "falso" al argumento de "recolectar_facts" porque los hechos se recopilan de forma predeterminada en Ansible.
A continuación, enumeramos las tareas en el libro de jugadas que queremos hacer. Escribimos el "nombre" de la tarea que es "recopilar hechos". Luego, escribimos el módulo de configuración y el "Recopate_subset" porque queremos recopilar parte de la información relacionada con la administración de hosts remotos en lugar de obtener toda la información de todos los hosts remotos. Utilizamos otra variable de Ansible, que es la variable de "registro" que preserva los resultados de las tareas del libro de jugadas y las utiliza para tareas posteriores.
Ahora, queremos imprimir el nombre de los dispositivos host remotos, por lo que usamos una variable de "nombre" nuevamente. Entonces, depuramos las tareas. Si la tarea se completa, muestra la salida con el mensaje relacionado. Las siguientes son las tareas completas de la autorización_key_1.YML Playbook:
- Hospedadores:
- todo
gather_facts: falso
tareas:
- Nombre: Reunir hechos
configuración:
gather_subset:
- 'todo'
Registrarse: gather_fact_data
- Nombre: nombre de host de impresión de la máquina de destino
depurar:
Msg: "gather_fact_data.ansible_facts.ansible_hostname "
Después de eso, usamos los botones Ctrl+X para finalizar el libro de jugadas. La información sobre el host remoto dirigido se escribe luego en el archivo de inventario creando el archivo. Escribimos el siguiente comando para generar el inventario:
[root@master ansible]# nano host.YML
En el anfitrión.Archivo de inventario YML, proporcionamos la información del host dando la información básica como la dirección IP Ansible, el nombre de usuario, el nombre de la conexión, el número de puerto del host ansible, etc.
Todo:
Hospedadores:
Anfitrión1:
ansible_host: 192.168.7.10
Ansible_user: Iris
ansible_connection: ssh
ansible_port: 22
Cierre el host.archivo de inventario YML. Ahora que el anfitrión.El archivo YML se actualiza, ejecutamos el libro de jugadas Ansible para verificar si la conexión se ha realizado o no. Escribimos el siguiente comando:
[root@master ansible]# ansible-playbook autorized_key_1.yml -i anfitrión.YML
Después de ejecutar el comando anterior, obtenemos el siguiente resultado. Como puede ver, obtenemos el error que dice que no pudo conectarse al host a través de una conexión SSH y no se puede obtener. Esto se debe a que no proporcionamos el par de claves SSH al controlador Ansible.
Ejecutamos el comando que sigue para dar al controlador el par de teclas SSH:
[root@maestro ansible]# ssh -keygen -q -t rsa
Aquí está la salida de ingresar al comando anterior:
Simplemente golpeamos Enter. Después de esto, muestra los dos archivos raíz con las teclas SSH en la salida:
Ahora, creamos otro libro de jugadas para el servidor de control Ansible y establecemos la conexión SSH del servidor de controladores. Para crear otro libro de jugadas, escribimos el siguiente comando "nano":
[root@master ansible]# nano autorized_key_2.YML
Después de generar otro libro de jugadas, ahora enumeramos los hosts y luego usamos el módulo autorizado Ansible. En este módulo, primero escribimos el nombre del host y el estado del usuario. Luego, pasamos el archivo de clave pública producida del dispositivo del controlador que recientemente generamos al host remoto de destino.
- Hospedadores:
- todo
gather_facts: falso
tareas:
- Nombre: Agregue la clave pública a autorized_keys usando el módulo Ansible
autorizado_key:
Usuario: Iris
Estado: presente
Clave: 'item'
with_file:
- ~/.ssh/id_rsa.pub
Use el siguiente comando para ejecutar el autorizado_key_2.Libro de jugadas YML junto con el anfitrión.Archivo de inventario YML y el archivo de clave privada:
[root@master ansible]# ansible-playbook autorized_key_2.yml -i anfitrión.YML-Private-Key /TMP /Host.pem
La siguiente salida es el resultado de ejecutar el libro de jugadas mencionado con el archivo de inventario:
Como puede ver en el ejemplo proporcionado, implementamos con éxito el segundo libro de jugadas, que es el autorizado_key_2. Ahora que tenemos una conexión establecida entre el controlador y el host remoto, verifiquemos la ejecución del libro de jugadas que es el libro de jugadas autorizado_key_1 y vea si se está ejecutando o no:
[root@master ansible]# ansible-playbook autorized_key_1.yml -i anfitrión.YML
Aquí está el resultado del comando anterior que se ejecuta correctamente:
Conclusión
Aprendimos a conectar el controlador a los hosts remotos utilizando el módulo de clave de autorización de Ansible. Desarrollamos el ejemplo con una descripción exhaustiva para que el enfoque básico del módulo de autorización fuera simple de comprender.