Diferencia entre revisiones de «Yum Repos»
(4 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 6: | Línea 6: | ||
Además, puedo sacar ventaja de esto también para las máquinas vagrant, para al igual que en el primer punto que explico arriba tener un repositorio común para todos los clientes que usen nuestras definiciones de vagrant y puppet tiren de los mismos paquetes o se instalen paquetes que hemos generado nosotros mismos. | Además, puedo sacar ventaja de esto también para las máquinas vagrant, para al igual que en el primer punto que explico arriba tener un repositorio común para todos los clientes que usen nuestras definiciones de vagrant y puppet tiren de los mismos paquetes o se instalen paquetes que hemos generado nosotros mismos. | ||
− | == Enlaces de | + | == Enlaces de interes == |
http://www.howtoforge.com/creating_a_local_yum_repository_centos | http://www.howtoforge.com/creating_a_local_yum_repository_centos | ||
− | + | http://wiki.centos.org/es/HowTos/CreateLocalRepos | |
== Primeros pasos en mis pruebas == | == Primeros pasos en mis pruebas == | ||
− | Lo primero que he descubierto es que existe un comando createrepo que ayuda a crear los metadatos necesarios para los repositorios YUM. Este comando se instala con el propio yum | + | Lo primero que he descubierto es que existe un comando, '''createrepo''', que ayuda a crear los metadatos necesarios para los repositorios YUM. Este comando se instala con el propio yum |
<pre> | <pre> | ||
Línea 20: | Línea 20: | ||
En primero lugar he creado el directorio '''/var/www/yum/centos/6/ardemans/x86_64/RPMS'''. | En primero lugar he creado el directorio '''/var/www/yum/centos/6/ardemans/x86_64/RPMS'''. | ||
+ | |||
+ | La primera prueba ha sido copiando un RPM cualquiera (en mi caso un RPM de collectd) en el direcotorio RPMS, y después he ejecutando el comando createrepo: | ||
+ | |||
+ | <pre> | ||
+ | createrepo /var/www/yum/centos/6/ardemans/x86_64 | ||
+ | </pre> | ||
+ | |||
+ | Lo cual ha generado el directorio repodata, con los ficheros y los DB propios de un repo yum. | ||
+ | |||
+ | Para probar este primer repositorio lo he aplicado a mano en una de mis máquinas virtuales locales, dentro del directorio /etc/yum.repos.d/. Simplemente copiando alguno de los que ya había pero modificando los datos por los de mi nuevo repo: | ||
+ | |||
+ | <pre> | ||
+ | [ardemans] | ||
+ | name=Ardemans RPMS | ||
+ | baseurl=http://yum.ardemans.com/centos/$releasever/ardemans/$basearch | ||
+ | enabled=1 | ||
+ | gpgcheck=0 | ||
+ | </pre> | ||
+ | |||
+ | Si añadimos un paquete nuevo y volvemos a ejecutar el createrepo nos actualizará los metadatos en repodata | ||
+ | |||
+ | Si hemos actualizado los metadatos del repo tendremos que limpiar nuestra db local con: | ||
+ | <pre> | ||
+ | yum clean all (seguramente se puede afinar algo más y no borrar todas las caches) | ||
+ | </pre> | ||
+ | Se pueden poner varias versiones de un mismo paquete en el mismo repositorio, que cuando hagamos el '''createrepo''' va a tener en cuenta todas. Lo único que cuando queramos instalarlo tendremos que especificar la versión: | ||
+ | <pre> | ||
+ | yum install aplicacion-0.11.37 | ||
+ | </pre> | ||
+ | Lo que si perdemos con Yum, o por lo menos no he encontrado una solución, es a especificar un --prefix a la hora de instalar un paquete, así que irá siempre al path por defecto. |
Última revisión de 14:52 7 ago 2015
La idea es crear repositorios personales, ya sean replicas de los repositorios oficiales o nuevos repositorios con paquetes compilados por nosotros. Esta idea surge a raíz de dos hechos
- Con puppet, cada vez que tenemos que levantar una máquina se instalan los paquetes que necesiten desde repositorios remotos, por lo general los oficiales de CentOS, y estos pueden haber sido actualizados, con lo cual cada vez que levantamos una máquina nueva puede que haya paquetes nuevos (por ejemplo nueva versión de php) sin que lo hayamos probado. Si conseguimos tener nuestros repos siempre tendreos la oportunidad de probar un paquete en nuestros sistemas.
- También relacionado con puppet y con un aspecto importante de seguridad: No tener porqué dar acceso a navegación a nuestros servidores que no lo necesiten, como por ejemplo los servidores de DB's. Hasta ahora entrabamos en conflicto en el método de instalación de nuestras máquinas con puppet, mediante los manfiestos de instalación, que actualmente tiran contra los repos de internet, y el departamento de comunicaciones y seguridad siempre se queja de que con este método siempre tenemos que dejar abierta la navegación de estas máqiunas a internet. Un método alternativo sería tener un servidor proxy solo para estas máquinas, y al menos tener el control de por donde navegan, pero si conseguimos tener en local los origenes de los repositorios ya no hará falta ni siquiera eso.
Además, puedo sacar ventaja de esto también para las máquinas vagrant, para al igual que en el primer punto que explico arriba tener un repositorio común para todos los clientes que usen nuestras definiciones de vagrant y puppet tiren de los mismos paquetes o se instalen paquetes que hemos generado nosotros mismos.
Enlaces de interes
http://www.howtoforge.com/creating_a_local_yum_repository_centos http://wiki.centos.org/es/HowTos/CreateLocalRepos
Primeros pasos en mis pruebas
Lo primero que he descubierto es que existe un comando, createrepo, que ayuda a crear los metadatos necesarios para los repositorios YUM. Este comando se instala con el propio yum
yum install createrepo
También es necesario tener una estructura de directorios donde estarán los paquetes. En mi caso, esa estructura estará en el document root de un vhost de apache. Este document root estará en el directorio /var/www/yum. Estas pruebas iniciales van a ser sobre un servidor apache público, yum.ardemans.com
En primero lugar he creado el directorio /var/www/yum/centos/6/ardemans/x86_64/RPMS.
La primera prueba ha sido copiando un RPM cualquiera (en mi caso un RPM de collectd) en el direcotorio RPMS, y después he ejecutando el comando createrepo:
createrepo /var/www/yum/centos/6/ardemans/x86_64
Lo cual ha generado el directorio repodata, con los ficheros y los DB propios de un repo yum.
Para probar este primer repositorio lo he aplicado a mano en una de mis máquinas virtuales locales, dentro del directorio /etc/yum.repos.d/. Simplemente copiando alguno de los que ya había pero modificando los datos por los de mi nuevo repo:
[ardemans] name=Ardemans RPMS baseurl=http://yum.ardemans.com/centos/$releasever/ardemans/$basearch enabled=1 gpgcheck=0
Si añadimos un paquete nuevo y volvemos a ejecutar el createrepo nos actualizará los metadatos en repodata
Si hemos actualizado los metadatos del repo tendremos que limpiar nuestra db local con:
yum clean all (seguramente se puede afinar algo más y no borrar todas las caches)
Se pueden poner varias versiones de un mismo paquete en el mismo repositorio, que cuando hagamos el createrepo va a tener en cuenta todas. Lo único que cuando queramos instalarlo tendremos que especificar la versión:
yum install aplicacion-0.11.37
Lo que si perdemos con Yum, o por lo menos no he encontrado una solución, es a especificar un --prefix a la hora de instalar un paquete, así que irá siempre al path por defecto.