El comando Ad-Hoc es el comando ansible de una sola línea que realiza una tarea en el host de destino. Le permite ejecutar una tarea simple de una línea contra uno o un grupo de hosts definidos en la configuración del archivo de inventario. Un comando Ad-Hoc solo tendrá dos parámetros, el grupo de un host que desea realizar la tarea y el módulo Ansible para ejecutar.
El comando Ad-Hoc le brinda más ventajas para explorar ansible en sí. Puede realizar tareas sin crear primero un libro de jugadas, como reiniciar servidores, administrar servicios, editar la configuración de línea, copiar un archivo en un solo host, instalar solo un paquete.
En este tutorial, mostraré el uso básico del comando Ansible Ad-Hoc. Usaré el comando Ad-Hoc para realizar tareas simples que pueden ser necesarias para su día a día como administrador del sistema.
Requisitos
Para esta guía, usaremos dos servidores Ubuntu 18.04 LTS, Bionic Beaver. El servidor ansible obtendrá el nombre de host 'ansible-node' con la dirección IP 10.5.5.20 y el servidor Provision con el nombre de host 'provision' y la dirección IP 10.5.5.21.
¿Qué haremos?
- Comando ad-hoc básico
- Transferencia de archivos
- Actualizar y Actualizar
- Administrar paquete
- Administrar servicios
- Sistema de control
Uso básico de comandos ad-hoc
Primero, aprenderemos el uso básico de Ansible Ad-Hoc para administrar servidores. Aprenderemos el comando básico de Ansible Ad-Hoc, usando el comando Ad-Hoc con autenticación de contraseña ssh, la escalada de privilegios y usando el comando Ad-Hoc contra un grupo de hosts.
1. Comando Básico
El comando básico de ansible ad-hoc contra 'todos' los hosts en el archivo de inventario y usando el módulo 'ping'.
ansible all -m ping
- El primer parámetro 'todos' para todos los hosts en el archivo de inventario.
- El segundo parámetro dentro de la opción '-m' para el módulo, ejecutando el módulo ping.
Ahora obtendrá el resultado como se muestra a continuación.
Un comando Ad-Hoc contra el servidor de aprovisionamiento ha sido 'ÉXITO' sin ningún cambio realizado en el servidor y obtenemos el resultado del módulo 'ping' del servidor de aprovisionamiento 'pong'.
2. Filtrar grupo de hosts y host único
Ahora puede usar el comando Ad-Hoc contra un grupo de hosts que ya están definidos en el archivo de inventario. Puede usar su archivo de inventario personalizado o usar el archivo de inventario predeterminado '/etc/ansible/hosts'.
A continuación, se muestra un ejemplo para ejecutar el comando ad-hoc contra el grupo de hosts llamado 'hakase-testing' que ya están definidos en el archivo de configuración de inventario predeterminado.
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
Si está utilizando el archivo de inventario personalizado, agregue la opción '-i' después del nombre del archivo de inventario.
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
Obtendrás el mismo resultado.
Ahora, si desea ejecutar contra un solo host en la configuración de inventario, puede usar el nombre del host como se muestra a continuación.
ansible provision -m setup -a "filter=ansible_distribution*"
Y el comando ad-hoc se ejecutará solo en el servidor de 'provisión'.
3. Uso de la contraseña SSH
Ahora ejecutaremos un comando Ad-Hoc utilizando la autenticación de contraseña ssh solicitada. Y para hacer esto, necesita instalar el paquete adicional llamado 'sshpass' en el 'ansible-node'.
Instale el paquete sshpass usando el comando apt a continuación.
sudo apt install sshpass -y
Ahora ejecute el comando ad-hoc y agregue la opción '--ask-pass' al final.
ansible hakase-testing -m ping --ask-pass
Y se le pedirá la 'Contraseña SSH' para el servidor.
Escriba su contraseña ssh y el comando ad-hoc se ejecutará contra el servidor.
4. Escalada de privilegios
Ansible proporciona características para la escalada de privilegios contra servidores. Si desea ejecutar el comando ad-hoc como usuario no root, puede usar la opción '--become' para obtener los privilegios de root y la opción '-K' para solicitar la contraseña.
Ejecute el comando ad-hoc 'fdisk -l' como usuario 'hakase' con la opción de privilegio '--become' y '-K' para solicitar la 'Contraseña SUDO'.
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
A continuación se muestra el resultado.
Transferencia de archivos
Ahora vamos a usar el comando Ad-Hoc para Transferencia de archivos hacia y desde el servidor. Podemos transferir un archivo al servidor de aprovisionamiento con el módulo 'copiar' y descargar el archivo del servidor usando el módulo 'buscar'.
1. Subir archivo al servidor
Para este ejemplo, ejecutaremos el comando ad-hoc y usaremos el módulo 'copiar' para cargar la configuración de sudoers para el usuario hakase en el directorio '/etc/sudoers.d' en el grupo 'hakase-testing'.
Ejecute el comando ad-hoc a continuación.
ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K
Ahora se le pedirá la 'Contraseña SUDO' para el usuario hakase. Escriba la contraseña y obtendrá el resultado que se muestra a continuación.
El archivo se cargó en el directorio de destino 'dest' y obtienes el resultado 'modificado' como 'verdadero'.
2. Descargar archivo desde el host
Ahora vamos a utilizar un comando ad-hoc con el módulo 'fetch' para descargar el archivo desde el servidor de aprovisionamiento al servidor local 'ansible-node'.
Descargue el archivo de configuración '/etc/sudoers.d/hakase' del servidor 'provision' al directorio local llamado 'backup'.
ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'
Y obtendrá el archivo llamado 'hakase-sudoers' en el directorio 'backup'.
Paso 3:actualización del repositorio y paquetes de actualización
Para actualizar y actualizar el repositorio de los servidores de Ubuntu, podemos usar el comando ad-hoc con el módulo apt.
Actualice el repositorio en el grupo hakase-testing.
ansible hakase-testing -m apt -a 'update_cache=yes' --become
Ahora actualice los repositorios y actualice todos los paquetes a la última versión usando la opción 'upgrade=dist'.
ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become
Espere a que se actualicen todos los paquetes.
Gestionar paquetes
Esto es muy útil cuando intenta crear y depurar su propio libro de jugadas. Porque a veces es necesario instalar un paquete adicional en el sistema. Por lo tanto, este comando ad-hoc le brindará una manera fácil de instalar ese paquete sin iniciar sesión en cada servidor.
1. Paquete de instalación
Instale un solo paquete usando el comando ad-hoc con el módulo apt como se muestra a continuación.
ansible hakase-testing -m apt -a 'name=nginx state=latest' --become
2. Eliminar paquete
Quite el paquete y purgue toda la configuración relacionada con el paquete.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3. Eliminación automática
El siguiente ejemplo es eliminar el paquete nginx y purgar toda la configuración relacionada y luego eliminar todos los paquetes no utilizados en el sistema.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
Administrar servicios
En este paso, usaremos el módulo de servicio en el comando ad-hoc para administrar el servicio del sistema en el servidor de aprovisionamiento.
1. Servicios de inicio
Inicie el servicio nginx y agréguelo al tiempo de arranque.
ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become
Obtendrá el resultado 'cambiado' y 'habilitado' como 'verdadero'.
2. Reiniciar servicio
Si desea reiniciar el servicio, puede utilizar el siguiente comando.
ansible hakase-testing -m service -a 'name=nginx state=restarted' --become
El servicio nginx se ha reiniciado.
3. Detener un servicio
Para detener el servicio, cambie el valor de 'estado' a 'detenido'.
ansible hakase-testing -m service -a 'name=nginx state=stopped' --become
El servicio nginx en los servidores 'hakase-testing' se ha detenido.
Revisando el Sistema
Ahora vamos a usar el módulo 'shell' dentro del comando ad-hoc. Y haremos un monitoreo simple del sistema usando un comando simple de Linux a través de Ansible ad-hoc.
En primer lugar, instale el paquete 'sysstat' en todos los servidores mediante el siguiente comando ad-hoc.
ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become
Espere a que se instale el paquete 'sysstat'.
Una vez que esté completo, estará listo para verificar todos los servidores.
1. Disco disponible
Verifique el disco disponible en la partición raíz usando el comando fdisk.
ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become
Cambie '/dev/sda2' con su propia ruta.
2. Uso de memoria RAM
Ahora verifique el uso de la memoria RAM en todos los servidores usando el comando 'free -m'.
ansible hakase-testing -m shell -a 'free -m' --become
Y se le mostrará el resultado de la siguiente manera.
3. Uso de CPU
Comprobación del uso de la CPU de todos los servidores mediante el comando mpstat.
ansible hakase-testing -m shell -a 'mpstat -P ALL' --become
El comando mpstat es parte del paquete 'sysstat'.
4. Puertos abiertos
Verificando los puertos abiertos en todos los sistemas usando netstat a través del comando ad-hoc.
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5. Tiempo de actividad
Ahora comprueba el tiempo de actividad de cada servidor.
ansible hakase-testing -m shell -a 'uptime' --become