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
En
la dirección http://192.168.50.70/ansible_p01/
se encuentran tres archivos con extensión 7z y nombre descriptivo
del sistema operativo que encierran. Estos archivos han sido
descargados previamente del sitio https://www.osboxes.org/,
un espacio en la red donde encontrar objetos compatibles con
VirtualBox y VMware pensados para simplificar la puesta en
marcha de máquinas virtuales. En el archivo http://192.168.50.70/ansible_p01/README
y al pie de este párrafo se indican las
URL,s de descargas desde Internet. Los alumnos que se encuentren
el centro educativo deben descargar los archivos desde el
servidor HTTP de la Intranet; los que lo hagan desde sus
domicilios desde las URL,s indicadas. Tanto unos como otros
deben verificar los códigos md5 comparándolos con los existentes
en el servidor HTTP de la Intranet para asegurarnos de que
el paso del tiempo no a roto la simetria entre los archivos de
ambos lugares.
9764.7z |
https://sourceforge.net/projects/osboxes/files/v/vb/14-D-b/9.7/9764.7z/download |
81164.7z |
https://sourceforge.net/projects/osboxes/files/v/vb/14-D-b/8.11/81164.7z/download |
Ubnt-Svr-20.04-VB-64bit.7z |
https://sourceforge.net/projects/osboxes/files/v/vb/55-U-u/20.04/Ubnt-20.04-VB-64bit.7z/download |
Puesta a punto de
los sistemas
- Modificación de los nombres
originales de los archivos vdi para normalizarlos
de la siguiente forma:
- S.O. Debian GNU/Linux jessie:
Debian8-20??-??.vdi
- S.O. Debian GNU/Linux stretch: Debian9-20??-??.vdi
- S.O. Ubuntu Server GNU/Linux: UServer-20??-??.vdi
- Los sistemas instalados en los
discos proporcionados cuentan con un usuario root
desprovisto de password. Sí cuentan con un usuario
ordinario de nombre osboxes con
password "
osboxes.org". Como
es obvio, las intervenciones que se preven hacer con esta
práctica requieren tomar el control del usuario root,
así que el alumno tendrá que hacer las operaciones
necesarias para conseguirlo, 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.
- 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:
- UbuntuServer: 10.0.2.60
- Debian8: 10.0.2.70
- Debian9: 10.0.2.80
- En la RedNat, reenvíar el tráfico
al puerto 22 de cada sistema:
- UbuntuServer localhost:2260
-> 10.0.2.60:22
- Debian8
localhost:2270 -> 10.0.2.70:22
- Debian9
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 de
UbuntuServer a 20??-??-n0
- En las tres VM,s registrar los
nodos en /etc/hosts
con los siguientes nombres:
- 10.0.2.60
nodo-0 20??-??-n0
- 10.0.2.70
nodo-1 20??-??-n1
- 10.0.2.80
nodo-2 20??-??-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 (como se hizo en el guión
descrito en ansible_director.odp),
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 20??-??-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 20??-??-n2.
- Indicaciones: El módulo lineinfile
sirve para esto.
- Nombre: dnssetup.apb
- Función: En los dos nodos
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
- 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/varios/sources.list.jessie.
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/varios/sources.list.stretch.
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 las dependencias y paquetes inservibles a
continuación
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í, este planteamiento no le proporcionará al alumno 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.