Diferencia entre revisiones de «ANSIBLE»
Línea 18: | Línea 18: | ||
}} | }} | ||
== Introducción == | == Introducción == | ||
'''Ansible''' es una plataforma de software libre para configurar y administrar ordenadores. Combina instalación multi-nodo (es decir: permite desplegar configuraciones de servidores y servicios por lotes), ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación. Gestiona nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior) para instalarlo. Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente utiliza YAML para describir configuraciones re-usables de los sistemas. | '''Ansible''' es una plataforma de software libre para configurar y administrar ordenadores. Combina instalación multi-nodo (es decir: permite desplegar configuraciones de servidores y servicios por lotes), ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación. Gestiona nodos a través de [[SSH]] y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior) para instalarlo. Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente utiliza YAML para describir configuraciones re-usables de los sistemas. | ||
En resumen, ansible se ejecuta desde un equipo y se conecta por SSH al resto de una serie de equipos definidos en un fichero de inventario y sin necesitar de tener ningún cliente previamente configurado. Con Ansible podremos instalar programas, guardar configuraciones de los equipos clientes. | En resumen, ansible se ejecuta desde un equipo y se conecta por SSH al resto de una serie de equipos definidos en un fichero de inventario y sin necesitar de tener ningún cliente previamente configurado. Con Ansible podremos instalar programas, guardar configuraciones de los equipos clientes. | ||
Línea 26: | Línea 25: | ||
Siguiendo con la base de un servidor [[Fedora]] o similar basado en RHEL ejecutamos:<blockquote>sudo dnf installl ansible -y</blockquote> | Siguiendo con la base de un servidor [[Fedora]] o similar basado en RHEL ejecutamos:<blockquote>sudo dnf installl ansible -y</blockquote> | ||
== Configuraciones previas en los clientes == | == Configuraciones previas en los nodos gestionados == | ||
Los nodos gestionados son los equipos que recibirán las peticiones por '''ansible''' mediante [[SSH]], un protocolo común en todos los equipos, y perfiles elevados con [[sudo]] o [[root]]. | |||
=== Configuración SSH === | |||
Recordemos que [[SSH]] es un protocolo de comunicación seguro común en todas las distribuciones y que ya se explicó como instalar en equipos clientes y que ya viene integrado en todos los servidores. | |||
En esta práctica sí que es importante que podamos acceder sin necesidad de llave, cosa que [[SSH#Conexión con llave digital (sin contraseña)|ya se explica en esta misma wiki]]. | |||
=== Configuración sudoers === | |||
Un usuario '''sudoer''' es aquel que puede ejecutar comandos de root poniendo un "sudo" delante, por ejemplo, "''dnf update''" como tal no podríamos ejecutarlo sin ser '''root''' al no tener permisos, pero "''sudo dnf update''" permite elevar el usuario a ejecutar un comando como "'''su'''", de ahí "'''sudo'''" o "'''super user do'''". | |||
Por defecto, el primer usuario de una instalación ya tiene estos permisos, pero para llevarlo a esta práctica, vamos a crear un usuario común y que tenga permisos de administración y, por seguridad, no habilitaremos el usuario "'''root'''". | |||
Vamos a crear un usuario común llamado "'''suport'''" (en el caso de no haberlo creado durante la instalación y que será común en todos los nodos):<blockquote>sudo useradd suport</blockquote>I asignamos una contraseña:<blockquote>sudo passwd suport</blockquote>Ahora, le añadimos los grupos de administración:<blockquote>sudo usermod -a -G adm,wheel suport</blockquote>Y con esto, el usuario ya es administrador, ahora, por último, le permitiremos que el usuario pueda ejecutar comandos de "sudo" sin necesidad de volver a añadir la contraseña, considerando el riesgo de seguridad que conlleva, aunque es mejor que dar acceso libre al usuario root. Para eso editaremos el fichero de sudoers con:<blockquote>sudo visudo</blockquote>Esto abrirá el editor de sistema y añadiremos, al final por ejemplo, la línea:<blockquote>suport ALL=(ALL) NOPASSWD:ALL</blockquote>Con esto le otorgamos acceso a TODOS los comandos y a ninguno pedirá contraseña. | |||
Ahora basta con cerrar sesión, iniciar de nuevo son "suport" y ejecutar cualquier comando son "sudo" y veremos que no pide la contraseña, por ejemplo:<blockquote>sudo dnf update --refresh -y</blockquote>Que permite la actualización del sistema. | |||
== Enlaces == | == Enlaces == | ||
* [https://es.wikipedia.org/wiki/Ansible_(software) Definición en wikipedia.] | * [https://es.wikipedia.org/wiki/Ansible_(software) Definición en wikipedia.] | ||
* [https://www.ansible.com/ | * [https://www.ansible.com/ Página oficial.] | ||
* [https://docs.ansible.com/ansible/latest/ Documentación de la comunidad oficial] | * [https://docs.ansible.com/ansible/latest/ Documentación de la comunidad oficial] |
Revisión del 12:42 5 nov 2024
Ansible | |
---|---|
Definición | A gathering space to build automation skills and success |
Enlaces | |
Web | https://www.ansible.com/ |
Documentación | https://docs.ansible.com/ansible |
Introducción
Ansible es una plataforma de software libre para configurar y administrar ordenadores. Combina instalación multi-nodo (es decir: permite desplegar configuraciones de servidores y servicios por lotes), ejecuciones de tareas ad hoc y administración de configuraciones. Adicionalmente, Ansible es categorizado como una herramienta de orquestación. Gestiona nodos a través de SSH y no requiere ningún software remoto adicional (excepto Python 2.4 o posterior) para instalarlo. Dispone de módulos que trabajan sobre JSON y la salida estándar puede ser escrita en cualquier lenguaje. Nativamente utiliza YAML para describir configuraciones re-usables de los sistemas.
En resumen, ansible se ejecuta desde un equipo y se conecta por SSH al resto de una serie de equipos definidos en un fichero de inventario y sin necesitar de tener ningún cliente previamente configurado. Con Ansible podremos instalar programas, guardar configuraciones de los equipos clientes.
Instalación
Siguiendo con la base de un servidor Fedora o similar basado en RHEL ejecutamos:
sudo dnf installl ansible -y
Configuraciones previas en los nodos gestionados
Los nodos gestionados son los equipos que recibirán las peticiones por ansible mediante SSH, un protocolo común en todos los equipos, y perfiles elevados con sudo o root.
Configuración SSH
Recordemos que SSH es un protocolo de comunicación seguro común en todas las distribuciones y que ya se explicó como instalar en equipos clientes y que ya viene integrado en todos los servidores.
En esta práctica sí que es importante que podamos acceder sin necesidad de llave, cosa que ya se explica en esta misma wiki.
Configuración sudoers
Un usuario sudoer es aquel que puede ejecutar comandos de root poniendo un "sudo" delante, por ejemplo, "dnf update" como tal no podríamos ejecutarlo sin ser root al no tener permisos, pero "sudo dnf update" permite elevar el usuario a ejecutar un comando como "su", de ahí "sudo" o "super user do".
Por defecto, el primer usuario de una instalación ya tiene estos permisos, pero para llevarlo a esta práctica, vamos a crear un usuario común y que tenga permisos de administración y, por seguridad, no habilitaremos el usuario "root".
Vamos a crear un usuario común llamado "suport" (en el caso de no haberlo creado durante la instalación y que será común en todos los nodos):
sudo useradd suport
I asignamos una contraseña:
sudo passwd suport
Ahora, le añadimos los grupos de administración:
sudo usermod -a -G adm,wheel suport
Y con esto, el usuario ya es administrador, ahora, por último, le permitiremos que el usuario pueda ejecutar comandos de "sudo" sin necesidad de volver a añadir la contraseña, considerando el riesgo de seguridad que conlleva, aunque es mejor que dar acceso libre al usuario root. Para eso editaremos el fichero de sudoers con:
sudo visudo
Esto abrirá el editor de sistema y añadiremos, al final por ejemplo, la línea:
suport ALL=(ALL) NOPASSWD:ALL
Con esto le otorgamos acceso a TODOS los comandos y a ninguno pedirá contraseña. Ahora basta con cerrar sesión, iniciar de nuevo son "suport" y ejecutar cualquier comando son "sudo" y veremos que no pide la contraseña, por ejemplo:
sudo dnf update --refresh -y
Que permite la actualización del sistema.