Cómo configurar nodos administrados ansibles y ejecutar comandos ad -hoc - Parte 3

Cómo configurar nodos administrados ansibles y ejecutar comandos ad -hoc - Parte 3

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

Configuración de autenticación SSH sin contraseña en nodos administrados Ansible

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

Configurar la escalada de privilegios en los nodos administrados

Cuando se inicia sesión como usuario regular, es posible que deba realizar ciertas tareas en nodos administrados que requieren privilegios o privilegios raíz elevados. Estas tareas incluyen administración de paquetes, agregar nuevos usuarios y grupos y modificar configuraciones del sistema para 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

Ansible te permite 'convertirse en' otro usuario en el nodo administrado diferente al que actualmente inició sesión. El convertirse en: si La directiva eleva sus privilegios y le permite realizar tareas que requieren privilegios raíz, como instalar y actualizar paquetes y reiniciar el sistema.

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

--- - Nombre: Instalar e iniciar Apache WebServer Hosts: Tareas de servidores web: - Nombre: Instalar httpd yum: name = httpd state = Último convertirse en: si - Nombre: Verifique el servicio de estado httpd: nombre = httpd state = iniciado 

El convertirse en: si La directiva le permite ejecutar comandos como usuario root en el host remoto.

convertirse en_user

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

Por ejemplo, para ejecutar un comando como tecmenta Usuario en el control remoto Use la Directiva como se muestra.

- Nombre: Ejecute un comando como el comando de usuario apache: somecommand se convierte en: sí convertirse en_user: tecmint 

convertirse en_method

Esta directiva anulará el método predeterminado establecido en ansible.CFG archivo que generalmente se establece en sudo.

convertirse en_flags

Estos se usan a nivel de juego o tarea, por ejemplo, cuando necesita cambiar a un usuario cuando el shell está configurado en nologin.

Por ejemplo,

- Nombre: Ejecute un comando como nadie comando: SomeCommand se convierte en: true convertirse en_method: su convertirse en_user: nadie se convierte en_flags: '-s /bin /sh' 

Opciones de línea de comandos en la escalada de privilegios

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

  • --aservador, -K - Esto le solicita la contraseña del usuario de sudo en el sistema remoto que está intentando conectar.
$ Ansible-Playbook MyPlaybook.YML --Become-pass 
Ansible se convierte en pase
  • --convertirse, -b - Esto le permite ejecutar la tarea como usuario raíz sin solicitar una contraseña.
$ Ansible-Playbook MyPlaybook.YML - -Become 
  • --convertirse en user = convertirse en_user - Le permite ejecutar tareas como otro usuario.
$ Ansible-Playbook MyPlaybook.YML--Become-User = TecMint 
Ansible se convierte en usuario

Validar una configuración de trabajo utilizando comandos ansibles ad-hoc

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

¿Qué es un comando adhoc??

Un ansible comando ad-hoc es un comando de una línea que lo ayuda a ejecutar tareas simples de una manera simple pero eficiente sin la necesidad de crear libros de jugadas. Dichas 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 ad-hoc ansibles. Vamos a usar el archivo de inventario a continuación para una demostración.

[servidores web] 173.82.115.165 [Database_Servers] 173.82.202.239 

Uso básico de los comandos ADHOC

El uso más básico de los comandos de ADHOC ansible es hacer ping a un anfitrión o un grupo de hosts.

# ansible -m ping todo 

En el comando anterior, el -metro El parámetro 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. La salida del comando se muestra a continuación:

Ansible ping todos los anfitriones

A ping, un grupo particular de hosts, reemplazar 'todo' Parámetro con el nombre del grupo. En el ejemplo a continuación, estamos probando conectividad con hosts bajo el grupo de servidores web.

# Ansible -M Ping Webservers 
Ansible Ping Group de anfitriones

Además, puede usar el -a Atributo para especificar comandos de Linux regulares en comillas dobles. Por ejemplo, para verificar el tiempo de espera del sistema de los sistemas remotos, ejecute:

# ansible -a "tiempo de actividad" todo 
Tiempo de excursión de chequeo ansible de host remoto

Para verificar el uso del disco de los hosts remotos se ejecuta.

# ansible -a "df -th" todo 
Uso de disco de cheques ansibles 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 la 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 correr:

# ansible-doc yum 
Ansible Check Yum módulo

Administrar paquetes / servicios con Ansible

Los comandos ADHOC ansibles se pueden utilizar para la instalación y eliminación de paquetes utilizando beque y apto gerentes de paquetes.

Para instalar el servidor web Apache en el Centos 7 Host en el grupo WebServers en el archivo de inventario Ejecute el comando:

# servidores web ansible -m yum -a "name = httpd state = presente" 
Ansible Instalar Apache en hosts remotos

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

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

Para desinstalar Apache, cambia el estado simple desde presente a ausente.

# ANSible WebServers -M YUM -A "name = httpd state = ausente" 
Ansible eliminar apache

Nuevamente, para confirmar la eliminación de la ejecución de HTTPD.

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

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

Creación de usuarios y grupos utilizando Ansible

Al crear usuarios, el 'usuario'El módulo es útil. Para crear un nuevo usuario Jaime con contraseña sombrero rojo En la base de datos del sistema de cliente_server, emita el comando.

# Ansible Database_Server -m user -a "name = James Password = Redhat" 
Ansible Crear usuario en hosts remotos

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

# Ansible Database_Servers -A "ID James" 
Ansible confirmar la creación de usuarios

Para eliminar al usuario, ejecute el comando:

# ansible database_servers -m user -a "name = james state = ausent" 
Ansible Eliminar usuario

Escalada de privilegios

Si está ejecutando Ansible como un usuario normal, Ansible proporciona escalada de privilegios en hosts remotos utilizando el --convertirse opción para adquirir privilegios raíz y -k Para solicitar la contraseña.

Por ejemplo, para ejecutar el comando adhoc ansible 'netstat -pnltu'Con la opción privilegiada --convertirse y opción -K Para solicitar la contraseña del usuario root para ejecutar el comando.

$ Ansible WebServers -M Shell -a 'netstat -pnltu' - -Become -k 
Escalada de privilegio ansible

Para convertirse en otro usuario que no sea root, use el --convertirse en usuarios atributo.

Por ejemplo para ejecutar 'df -th' como tecmenta Usuario en los hosts remotos y solicite la Contraseña Ejecutar:

$ ansible all -m shell -a 'df -th' - -become -user tecmint -k 
Ansible se convierte en otro usuario

Recopilar hechos sobre los sistemas de host

Hechos Consulte información detallada sobre un sistema. Esto incluye información sobre la dirección IP, la arquitectura del sistema, la memoria y la CPU para mencionar algunos.

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

$ Ansible All -M Configuración 
Hechos del sistema recopilados ansibles

Archivos de transferencia / copia de archivos

Ansible usa el módulo Copiar Para copiar de forma segura los archivos del 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/segura dest =/tmp/" 
Ansible Copy archivos al host remoto

El comando copia el /var/log/seguro Archivo en el nodo de control Ansible a hosts remotos en el grupo de servidores web en el /TMP destino.

Puedes usar el módulo de archivo para cambiar los permisos y la propiedad de archivos.

# ANSible WebServers -M File -A "Dest =/TMP/Secure Mode = 600" 
Permisos de archivo de cambio ansible

Además, puede agregar los argumentos del propietario y grupal como se muestra:

# ANSible WebServers -M File -A "Dest =/TMP/Secure Mode = 600 Owner = TecMint Group = TecMint" 
Atributos de los usuarios y grupos de adjunta de Ansible

También puede crear directorios, de manera similar a mkdir -p como se muestra.

$ Ansible WebServers -M File -A "Dest =/Path/TO/Directory Mode = 755 Owner = TecMint Group = TecMint State = Directory" 

Por ejemplo,

$ Ansible WebServers -M File -A "Dest =/Home/TecMint/Data Mode = 755 Owner = TecMint Group = TecMint State = Directory" 
Ansible crear un directorio
Conclusión

En este artículo, arrojamos luz sobre cómo puede configurar nodos administrados para ejecutar comandos ad-hoc ansibles para administrar hosts remotos. Esperamos que lo hayas encontrado útil. Dale una oportunidad y háganos saber cómo fue.