IES Miguel Romero Esteo - Departamento de
Informática - Linux/Unix
Ansible/
Práctica 01
Comandos:
Aplicaciones:
Enunciado:
Como el alumno sabe, Ansible es un producto de orquestación
de recursos TI. Orquestación es un término muy amplio
que incluye otros como administrar, configurar, gestionar,
actualizar, instalar, etc..; todas esas tareas
encomendadas a los sysadmin
y que el alumno conoce muy bien.
Con
esta práctica el alumno trabajará en varias fases para alcanzar
un objetivo final: Crear una infraestructura de sistemas
orquestada con Ansible.
Arranque de los
sistemas
https://www.osboxes.org/
es un espacio en la red donde encontrar objetos compatibles con
VirtualBox y VMware pensados para simplificar la puesta en
marcha de máquinas virtuales. Acceder a él y descargar objetos
compatibles con VirtualBox que respondan a estas
especificaciones:
- Máquina virtual Debian GNU/Linux
(última versión estable) con una configuración pensada para
funciones de servidor.
- Máquina virtual Ubuntu Server
(última versión LTS -verificar en el sitio
oficial de ubuntu cuál es-).
Una vez descargados los archivos realizar las siguientes
operaciones:
- Verificar la integridad de los
objetos con los recursos proporcionados por el sitio
(cadenas md5 o cualquier otro).
- Descomprimir los archivos
- Modificar
los nombres originales de los archivos vdi
para normalizarlos de la siguiente forma:
- S.O. Debian GNU/Linux: Debian-20xx-xx.vdi
(20xx-xx es el identificador del alumno).
- S.O. Ubuntu Server GNU/Linux: UServer-20xx-xx.vdi
(20xx-xx es el identificador
del alumno).
- Mover Debian-20xx-xx.vdi a Debian-20xx-xx-uno.vdi
- Copiar
Debian-20xx-xx-uno.vdi
a Debian-20xx-xx-dos.vdi
- Haciendo uso del comando VboxManage
internalcommands modificar el UUID de Debian-20xx-xx-dos.vdi
para evitar que colisione con Debian-20xx.xx-uno.vdi.
- Crear sendas
máquinas virtuales (una por cada
.vdi)
con las especificaciones que
determine el alumno, a excepción
del nombre, que debe ser igual
al nombre del archivo .vdi.
Puesta a punto de
los sistemas
- Los sistemas instalados en los
discos proporcionados deberían contar con un usuario root y un
usuario ordinario de nombre osboxes, ambos con password "
osboxes.org". En
caso de no ser así (no coincide la password) y como quiera
que las intervenciones que se preven hacer con esta
práctica requieren tomar el control del usuario root,
el alumno tendrá que hacer las operaciones necesarias para
asignar una password a root, para ello, se
recomienda la intervención en los sistemas con un LIVECD.
Una vez se ha conseguido acceder al sistema como root
se puede continuar, mientras tanto no.
- Configuración de teclado, lenguaje,
codificación de caracteres y zona horaria.
- Para configurar estos cuatro
aspectos de los sistemas el alumno se remitirá al tema que
los trata estos conceptos correspondiente al primer
trimestre. En cualquier caso téngase en cuenta la
presencia del paquete console-data y el comando loadkeys
- En todos los sistemas se necesita
cliente y servidor openssh. Hacer lo necesario
para proveerlo en caso de no existir.
- Modificar /etc/ssh/sshd_config
para permitir la entrada de root via ssh.
- Asignar IP fijas a los tres
sistemas en la RedNat 10.0.2.0/24 de VBox:
- UServer-20xx-xx:
10.0.2.60
- Debian-20xx.xx-uno: 10.0.2.70
- Debian-20xx.xx-dos: 10.0.2.80
- En la RedNat, reenvíar el tráfico
al puerto 22 de cada sistema:
- UServer-20xx-xx
localhost:2260
-> 10.0.2.60:22
- Debian-20xx.xx-uno
localhost:2270 -> 10.0.2.70:22
- Debian-20xx.xx-dos
localhost:2280 -> 10.0.2.80:22
- Crear relación de confianza ssh
entre 10.0.2.60
y 10.0.2.70
- Crear relación de confianza ssh
entre 10.0.2.60
y 10.0.2.80
- Instalar ansible en 10.0.2.60 desde
el repositorio de la distro.
- Modificar el HOSTNAME del sistema de la máquina
UServer-20xx-xx a 20xx.xx-n0.
- En los tres sistemas registrar los
nodos en /etc/hosts
con los siguientes nombres:
- 10.0.2.60
nodo-0 20xx.xx-n0
- 10.0.2.70
nodo-1 20xx.xx-n1
- 10.0.2.80
nodo-2 20xx.xx-n2
- En este punto, crear copias de
seguridad de los vdi,s por si hay que dar marcha
atrás en el desarrollo de las tareas con ansible.
Ansible entra en
acción
Antes de proceder
téngase en cuenta que ansible ha sido instalado
desde los repositorios de una distro, con lo cual, el despliegue
de archivos sobre el sistema de ficheros es distinto al que se
obtuvo con la instalación manual descrita en ansible_director.pdf
(podría no haberse hecho manualmente dependiendo de las
instancias de AWS usadas), ahora, entre otras cosas, se cuenta
con varios ficheros por defecto (p.e. /etc/ansible/hosts).
También es importante observar la notable ampliación que ha
experimentado el catálogo de módulos disponibles (verifíquese
con el comando help
invocado desde el prompt que proporciona ansible-console).
Se aconseja al alumno que antes de insertar
lineas de texto en los playbooks para luego ir depurando por
el procedimiento de ejecución->error->depuración y
vuelta a empezar, utilice al comando ansible para probar
prototipos de argumentación de módulos antes de llevar la
versión definitiva al fichero de texto. Esto le ahorrará tiempo
y malos ratos.
- Crear el inventario de ansible de
acuerdo a las siguientes especificaciones:
- El nodo de control es nodo-0
- Los nodos administrados son nodo-1
y nodo-2
- Insertar entradas en el
inventario que permitan actuar sobre los dos nodos como
grupo y de forma independiente en cada uno
- Crear un directorio de nombre /root/ansible/playbooks/
y en su interior crear los playbooks descritos a
continuación:
- Nombre: hostname-nodo-1.apb
- Función: Modifica el HOSTNAME
de 10.0.2.70
por 20xx.xx-n1.
- Indicaciones: El módulo lineinfile
sirve para esto.
- Nombre: hostname-nodo-2.apb
- Función: Modifica el HOSTNAME
de 10.0.2.80
por 20xx.xx-n2.
- Indicaciones: El módulo lineinfile
sirve para esto.
- Nombre: dnssetup.apb
- Función: En los dos nodos
administrados establece como servidor DNS primario 1.1.1.1
y secundario 8.8.8.8
- Indicaciones: El módulo lineinfile
sirve para esto.
- Nombre: repositorysetup.apb
- Antes de proceder con este
playbook verifica que el archivo http://asir.sudo.es/export/sources.list
apunta a los repositorios de la versión de Debian de
los nodos 1 y 2 (en el
momento de redactar este parráfo ese archivo apunta
a Debian11 -bullseye-) En caso
contrario informa al profesor para que lo corrija.
- funcion: En nodo-1
copia /etc/apt/sources.list
a /etc/apt/sources.list.old
y sustituye /etc/apt/sources.list por http://asir.sudo.es/export/sources.list.
En nodo-2 copia /etc/apt/sources.list
a /etc/apt/sources.list.old
y sustituye /etc/apt/sources.list por http://asir.sudo.es/export/sources.list.
En ambos nodos sincronizar la cache apt con los nuevos
repositorios.
- Indicaciones: El módulo shell
para hacer la copia de seguridad y el módulo get_url
para descargar el archivo de la red y posicionarlo en su
sitio.
- Nombre: xserverdelete.apb
- Función: Elimina de los nodos
el entorno gráfico.
- Indicaciones: Se trata de
eliminar los paquetes con el prefijo xserver*
y todas sus dependencias en caso de que existan. Con
ello aseguramos un poco más la máquina.
Ansible en
escenarios alternativos
Hasta ahora, se ha
planteado un escenario de trabajo donde el alumno tiene acceso
como root
a todas las máquinas de la infraestuctura (1 nodo de
control + 2 nodos administrados). Esto no tiene porqué ser
siempre así. Es indudable que para hacer una administración
integral en los nodos administrados es necesario tener
privilegios de root pero no se necesitan en
el nodo de control para invocar las herramientas ansible,
de hecho, los comandos de la familia ansible* contemplan esta
posibilidad.
Dicho esto, el alumno deberá operar en el
nodo de control con la identidad de un usuario convencional
(p.e. operador) conjugando debidamente el
comando ansible-playbook
para ejecutar con éxito los playbooks creados en el apartado
anterior. Para conseguirlo, se proporcionan más abajo
referencias a modo de pistas en el apartado Como operador
en nodo-0 y como root
en nodos administrados.
¡OJO! Excepto las
indicadas en el apartado Como root
en nodo-0 todas las demas
operaciones en nodo-0 se
harán como operador
¡TODAS!. Se trata de no tener privilegios de root en nodo-0, de
no ser así, el alumno no adquirirá las competencias necesarias
para superar trabajos más comprometidos en el futuro.
Como root
en nodo-0
- Eliminar la referencia
al actual al fichero de inventario renombrando /etc/ansible/hosts
como /etc/ansible/hosts.old
- Insertar el usuario operador
en nodo-0.
Debe estar dotado de $HOME, passwd y una shell bash
para interactuar con el sistema.
Como
operador en nodo-0
y como root
en nodos administrados
- El usuario operador
necesita tener en su poder la parte privada de una par
de claves creadas al efecto por root en los
nodos administrados. Obsérvese que son pares nuevos, la
que se ha usado con anterioridad ya no está accesible
puesto que está almacenada en /root/.ssh/id_rsa.
- El usuario operador
debe crear su propio fichero de inventario.
- los modificadores
-i -u --key-file
del comando ansible-playbook permiten a
un usuario sin privilegios actuar como root
en las máquinas objetivo.