Cómo configurar los nodos administrados de Ansible y ejecutar comandos ad-hoc-Parte 3

Cómo configurar los nodos administrados de Ansible y ejecutar comandos ad-hoc-Parte 3

En los dos artículos anteriores de esta serie de Ansible, explicamos los componentes básicos de Ansible y la configuración del nodo de control de Ansible. En esta parte 3, demostraremos cómo puede configurar los nodos administrados de Ansible para ejecutar comandos ad-hoc en hosts remotos.

Configurar la autenticación SSH sin contraseña para los nodos administrados de Ansible

Como resumen En nuestro último tema, la administración de hosts remotos con Ansible requiere la configuración de autenticación SSH sin contraseña entre el nodo de control de Ansible y los hosts administrados. Esto implica la generación de un par de claves (par de claves SSH pública y privada) en el nodo de Ansible Control y copiar la clave pública a todos los hosts remotos. Este será un paso crucial en el futuro y hará su trabajo mucho más fácil.

Configurar el aumento de privilegios en nodos administrados

Cuando inicie sesión como usuario regular, es posible que deba realizar ciertas tareas en los nodos administrados que requieren privilegios elevados o privilegios de root. Estas tareas incluyen la administración de paquetes, la adición de nuevos usuarios y grupos y la modificación de las configuraciones del sistema, por mencionar solo algunas. Para lograr esto, debe invocar ciertas directivas en el libro de jugadas para ejecutar las tareas como un usuario privilegiado en los hosts remotos.

convertirse en

Ansible le permite ‘convertirse’. en otro usuario en el nodo administrado diferente del que está conectado actualmente. La directiva Become: yes eleva sus privilegios y le permite realizar tareas que requieren privilegios de root, como instalar y actualizar paquetes y reiniciar el sistema.

Considere una libro de jugadas httpd.yml que instala e inicia el servidor web Apache como se muestra:

—-nombre: instala e inicia el servidor web Apache hosts: tareas del servidor web:-nombre: instala httpd yum: nombre = httpd estado = último convertido : sí. nombre: verifique el estado del servicio httpd: nombre = estado httpd = iniciado freestar.config.enabled_slots.push (nombre de ubicación: “tecmint_incontent”, slotId: “tecmint_incontent”);

El convertido: sí la directiva le permite ejecutar comandos como usuario root en el host remoto.

Become_user

Otra directiva que puede utilizar para convertirse en otro usuario es Become_user. Esto le permite cambiar a un usuario sudo en el host remoto al iniciar sesión y no al usuario con el que inicia sesión.

Por ejemplo, para ejecutar un comando como usuario tecmint. en el control remoto usa la directiva como se muestra.

-nombre: Ejecuta un comando como el comando de usuario de apache: algún comando se convierte en: sí se convierte en_usuario: tecmint. se convierte en método

Esta directiva anulará el conjunto de métodos predeterminado en el archivo ansible.cfg. que generalmente se establece en sudo.

Become_flags

Se usan a nivel de juego o tarea, por ejemplo, cuando necesitas cambiar a un usuario cuando el shell está establecido en nologin.

Por ejemplo,

-nombre: Ejecuta un comando como nadie comando: algún comando se convierte en: verdadero se convierte en método: su se convierte en usuario: nadie se convierte en banderas: ‘-s/bin/sh ‘

Opciones de la línea de comandos en la intensificación de privilegios

Echemos un vistazo a algunas de las opciones de la línea de comandos que puede utilizar para elevar sus privilegios al ejecutar comandos:

  • –ask-Become-pass,-K-Esto le solicita la contraseña del usuario sudo en el sistema remoto que está intentando conectarse.

$ ansible-playbook myplaybook.yml–ask-Become-pass Ansible Become Pass  Ansible Become Pass Ansible Become Pass

  • –become,-b: esto le permite ejecutar la tarea como usuario root sin solicitar una contraseña.

$ ansible-playbook myplaybook.yml–become

  • –become-user = BECOME_USER-Te permite ejecutar tareas como otro usuario.

$ ansible-playbook myplaybook.yml–become-user = tecmint  Ansible Become User  Ansible Become User Ansible Conviértase en usuario

Valide una configuración de trabajo usando comandos Ansible Ad-Hoc

A veces, es posible que desee realizar tareas rápidas y tareas simples en hosts o servidores remotos en Ansible sin tener que crear necesariamente un libro de jugadas. En ese caso, necesitaría ejecutar un comando ad-hoc.

¿Qué es un comando adhoc?

Un comando ad-hoc. ansible es un comando de una línea que te ayuda a ejecutar tareas simples de una manera simple pero eficiente sin la necesidad de crear manuales. Tales tareas incluyen copiar archivos entre hosts, reiniciar servidores, agregar y eliminar usuarios e instalar un solo paquete.

En este tutorial, exploramos varias aplicaciones de comandos Ansible Ad-Hoc. Vamos a utilizar el archivo de inventario. a continuación para una demostración.

[webservers] 173.82.115.165 [database_servers] 173.82.202.239 Uso básico de comandos ad hoc

El uso más básico de Ansible-Los comandos Adhoc hacen ping a un host o un grupo de hosts.

# ansible-m ping all

En el comando anterior, el parámetro-m es la opción del módulo. Ping es el comando adhoc y el segundo parámetro representa todos los hosts en el archivo de inventario. El resultado del comando se muestra a continuación:

Ansible Ping a todos los hosts  Ansible Ping a todos los hosts Ansible Ping a todos los hosts

Para hacer ping, un grupo particular de hosts, reemplace el parámetro ‘todos’. por el nombre del grupo. En el siguiente ejemplo, estamos probando la conectividad con hosts en el grupo de servidores web.

# ansible-m ping servidores web Ansible Ping Group of Hosts  Ansible Ping Group of Hosts Ansible Ping Group of Hosts

Además, puede utilizar el atributo-a para especificar los comandos normales de Linux entre comillas dobles. Por ejemplo, para verificar el tiempo de actividad del sistema de sistemas remotos, ejecute:

# ansible-a “uptime” all Ansible Check Uptime of Remote Host Ansible Check Uptime of Remote Host Ansible Check Uptime of Remote Host

Para verificar el uso del disco de los hosts remotos, ejecute.

# ansible-a” df-Th “all  Ansible Check Disk Usage of Remote Hosts  Ansible Check Disk Usage of Remote Hosts Ansible Check Disk Uso de hosts remotos

Hay cientos y cientos de módulos que puede usar con el comando Adhoc . Para ver la lista completa de módulos con sus descripciones, ejecute el comando a continuación.

# ansible-doc-l

Para ver información detallada sobre un módulo en particular, ejecute el comando.

# ansible-doc module_name

Por ejemplo, para buscar más detalles sobre el módulo yum. ejecute:

# ansible-doc yum  Ansible Check Yum Module  Módulo Ansible Check Yum Módulo Ansible Check Yum Gestión de paquetes/servicios con Ansible

Los comandos adhoc de Ansible se pueden utilizar para la instalación y eliminación de paquetes utilizando yum. y apto. administradores de paquetes.

Para instalar el servidor web Apache en el host CentOS 7. en el grupo de servidores web en el archivo de inventario, ejecute el comando:

# ansible webservers-m yum-a “nombre = httpd estado = presente”  Ansible Instalar Apache en hosts remotos  Ansible Instalar Apache en hosts remotos Ansible Instalar Apache en hosts remotos

Para verificar la instalación del servidor web Apache, inicie sesión en el cliente remoto y ejecútelo.

# rpm-qa | grep httpd  Confirmar instalación de Apache  Confirmar la instalación de Apache Confirmar la instalación de Apache

Para desinstalar Apache, simplemente cambie el estado de presente. a ausente.

# servidores web ansible-m yum-a “name = httpd state = absent”  Ansible Quitar Apache  Ansible Eliminar Apache Ansible Eliminar Apache

De nuevo, para confirmar la eliminación de httpd run.

# rpm-qa | grep httpd  Confirmar eliminación de Apache  Confirmar eliminación de Apache Confirmar eliminación de Apache

Como se observó, los paquetes del servidor web Apache se han purgado.

Creación de usuarios y grupos con Ansible

Al crear usuarios, el módulo ‘ usuario. resulta útil. Para crear un nuevo usuario james. con la contraseña redhat. en el sistema cliente servidor_basedatos, emita el comando.

# ansible servidor_basedatos-m usuario-a “nombre = contraseña james = redhat “ Ansible Create User en hosts remotos  Ansible Crear usuario en hosts remotos Ansible Create User on Remote-Hosts

Para confirmar la creación del nuevo usuario, ejecute el comando:

# ansible database_servers-a “id james”  Ansible Confirmar creación de usuario  Ansible Confirm User Creation Ansible Confirm Creación de usuario

Para eliminar el usuario, ejecute el comando:

# ansible database_servers-m user-a “name = j ames state = absent “ Ansible Eliminar usuario  Ansible Remove User Ansible Remove User Privilege Escalation

Si está ejecutando Ansible como un usuario regular, Ansible proporciona una escala de privilegios en hosts remotos que usan la opción–become para adquirir privilegios de root y-k para solicitar la contraseña.

Por ejemplo, para ejecutar el comando adhoc de Ansible ‘ netstat-pnltu. con la opción privilegiada –-become y la opción-K para solicitar la contraseña del usuario root para ejecutar el comando.

$ ansible webservers-m shell-a ‘netstat-pnltu’–conviértase en-K  Escalada de privilegios de Ansible  Escalada de privilegios de Ansible Ansible Privilege Escalation

Para convertirse en otro usuario que no sea root, use el atributo–become-user.

Por ejemplo, para ejecutar ‘ df-Th. como usuario tecmint. en los hosts remotos y solicita la contraseña ejecute:

$ ansible all-m shell-a ‘df-Th’–conviértase en usuario tecmint-K  Ansible Become Otro usuario  Ansible Conviértete en otro usuario Ansible Conviértete en otro usuario Recopilación de datos sobre sistemas host

Hechos. se refiere a información detallada sobre un sistema. Esto incluye información sobre la dirección IP, la arquitectura del sistema, la memoria y la CPU, por mencionar algunos.

Para recuperar información sobre hosts remotos, ejecute el comando:

$ ansible all-m setup  Ansible Gather System Facts  Ansible Gather System Facts Ansible Gather System Facts Transferencia de archivos/Copia de archivos

Ansible usa el módulo copy. para copiar de forma segura archivos desde el control Ansible a múltiples hosts remotos.

A continuación se muestra un ejemplo de una operación de copia:

# ansible webservers-m copy-a “src =/var/log/secure dest =/tmp/”  Copiar archivos de Ansible en el host remoto  Ansible Copiar archivos a un host remoto Ansible Copiar archivos a Host remoto

El comando copia el archivo /var/log/secure. en el nodo de Ansible Control a hosts remotos en el grupo de servidores web en el destino /tmp.

Puede usar el módulo de archivo. para cambiar los permisos y la propiedad del archivo.

# ansible webservers-m file-a “dest =/tmp/secure mode = 600”  Ansible Change File Permissions  Ansible Change File Permissions Ansible Change File Permissions

Además, puede agregar los argumentos de propietario y grupo como se muestra: