Cómo configurar nodos administrados ansibles y ejecutar comandos ad -hoc - Parte 3
- 737
- 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-passAnsible 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 = TecMintAnsible 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:
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 WebserversAnsible 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" todoTiempo 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" todoUso 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 yumAnsible 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 httpdConfirmar 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 httpdConfirmar 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 -kEscalada 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 -kAnsible 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ónHechos 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.