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

- 777
- 55
- Sra. Lorena Sedillo
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

--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

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:

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

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

Para verificar el uso del disco de los hosts remotos se ejecuta.
# ansible -a "df -th" todo

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

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"

Para verificar la instalación del servidor web Apache, inicie sesión en el cliente remoto y ejecute.
# rpm -qa | grep httpd

Para desinstalar Apache, cambia el estado simple desde presente a ausente.
# ANSible WebServers -M YUM -A "name = httpd state = ausente"

Nuevamente, para confirmar la eliminación de la ejecución de HTTPD.
# rpm -qa | grep httpd

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"

Para confirmar la creación del nuevo usuario, ejecute el comando:
# Ansible Database_Servers -A "ID James"

Para eliminar al usuario, ejecute el comando:
# ansible database_servers -m user -a "name = james state = ausent"

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

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

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

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/"

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"

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"

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"

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.