Diferencia entre revisiones de «Puppet R10K»
(→Hiera) |
|||
(3 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 74: | Línea 74: | ||
Cada uno de esos directorios tendrá su puppetfile (el que haya en el branch en concreto), y r10k lo interpretará y descargará todos los módulos que estén definidos en cada uno de ellos. | Cada uno de esos directorios tendrá su puppetfile (el que haya en el branch en concreto), y r10k lo interpretará y descargará todos los módulos que estén definidos en cada uno de ellos. | ||
− | |||
== Actualización de entornos == | == Actualización de entornos == | ||
Línea 91: | Línea 90: | ||
Esto hará que antes de ponerse a actualizar módulos actualizará primero los puppetfile's que haya en el repositorio de Git, por si hemos cambiado alguno con un branch diferente o con un nuevo commit. | Esto hará que antes de ponerse a actualizar módulos actualizará primero los puppetfile's que haya en el repositorio de Git, por si hemos cambiado alguno con un branch diferente o con un nuevo commit. | ||
+ | |||
+ | |||
+ | == Hiera == | ||
+ | |||
+ | También se puede gestionar los datos de hiera con r10k, añadiendo una nueva entrada en nuestro fichero de configuración: algo como esto: | ||
+ | |||
+ | <pre> | ||
+ | --- | ||
+ | :cachedir: 'r10k/cache' | ||
+ | |||
+ | :sources: | ||
+ | :envmodules: | ||
+ | :remote: 'git@gitlab.local:DevOps/ENVIRONMENTS_r10k.git' | ||
+ | :basedir: 'environments' | ||
+ | :envhieradata: | ||
+ | :remote: 'git@gitlab.local:DevOps/HIERA_r10k.git' | ||
+ | :basedir: '/etc/puppetlabs/hiera/' | ||
+ | |||
+ | </pre> | ||
+ | |||
+ | De esta forma nos tendremos que preocupar de que el repositorio de hiera tenga los mismos branches que el repositorio de entornos, | ||
+ | |||
+ | Más info [https://github.com/puppetlabs/r10k/blob/master/doc/dynamic-environments/configuration.mkd aqui] |
Última revisión de 10:48 25 abr 2016
Contenido
Instalación
Hay diferentes alternativas como se puede ver en esta página.
He hecho una primera instalación como gema de la siguiente forma:
$ gem install r10k
Puppetfile
Puppetfile es el fichero que define los módulos que va a tener un entorno. Este fichero tiene una estructura en la que se definen directorios y módulos que va a tener cada uno de ellos.
Como ejemplo:
He creado un directorio puppet/environments/develop/ y ahí dentro he creado el fichero Puppetfile
moduledir 'modules' mod 'apache', :git => 'ssh://git@gitlab.local/DevOps/THIRDPARTY_puppetlabs_apache.git', :branch => 'master' moduledir 'profiles', mod 'mymodule', :git => 'ssh://git@gitlab.local/DevOps/PROFILES_mymodule.git', :tag => '0.1.0'
Sobre ese directorio se ejecuta:
r10k puppetfile install
Y aparece mágicamente el directorio modulos con el módulo de apache
Entornos dinámicos
Usando esta técnica se pueden crear lo que se llama entornos dinámicos. Podemos crear un directorio de environment, como el del ejemplo de antes, y este lo podemos meter en un repositorio de git. En ese repositorio de git podemos crear diferentes ramas, uno por cada entorno que queramos tener, y podemos hacer los cambios que creamos neceasrios en cada una de las ramas.
Después, r10k, se encargará de descargarse cada una de esas ramas como si fuera un environment diferente, con el mismo nombre de la rama, y ejecutará por cada uno de esos environments el Puppetfile con sus módulos.
Además, podemos combinar esta técnica con la de tener un fichero de configuración de entorno, el environment.conf, para poder configurar cada entorno con varios directorios de módulos, y así tener separados en cada environment los móduos de terceros, los módulos propios, los perfiles, etc...
Fichero de configuración de entornos dinamicos r10k
Para definir un entorno dinámico solo tenemos que crear un fichero yaml, r10k.yaml, donde indicaremos los datos de origen de nuestro repositorio Puppetfile.
Por ejemplo, en nuestro servidor de puppet master podemos tener el fichero en /etc/puppetlabs/puppet/r10k.yaml, y éste conteniendo lo siguiente:
--- :cachedir: 'r10k/cache' :sources: :eci: :remote: 'git@gitlab.local:DevOps/ENVIRONMENTS_r10k.git' :basedir: 'environments'
En este fichero estamos definiendo cual es el repo Git de origen donde están nuestros puppetfiles. También definimos el directorio donde se van a crear nuestros entornos.
Posicionandonos sobre el directorio /etc/puppetlabs/puppet/ ejecutamos lo siguiente:
$ r10k deploy environment
Esto creará un working directory diferente por cada uno de los branches que tenga el repo de Git en el directorio que hemos definido como nuestro basedir, que será el directorio que tengamos configurado en puppet como directorio de "environments"
Cada uno de esos directorios tendrá su puppetfile (el que haya en el branch en concreto), y r10k lo interpretará y descargará todos los módulos que estén definidos en cada uno de ellos.
Actualización de entornos
Una vez que ya tenemos nuestros entornos descargados puede que con el tiempo tengamos que actualizarlos, porque algún módulo tenga una versión nueva, por ejemplo. Si solo queremos actualizar los módulos que están definidos en los Puppetfile que ya teníamos podremos volver a ejecutar la orden:
$ r10k deploy environment
Si además, hemos modificado algún puppetfile de alguno de los branches que tenemos en nuestro repositorio Git, tendremos que añadir el parámetro --puppetfile
$ r10k deploy environment --puppetfile
Esto hará que antes de ponerse a actualizar módulos actualizará primero los puppetfile's que haya en el repositorio de Git, por si hemos cambiado alguno con un branch diferente o con un nuevo commit.
Hiera
También se puede gestionar los datos de hiera con r10k, añadiendo una nueva entrada en nuestro fichero de configuración: algo como esto:
--- :cachedir: 'r10k/cache' :sources: :envmodules: :remote: 'git@gitlab.local:DevOps/ENVIRONMENTS_r10k.git' :basedir: 'environments' :envhieradata: :remote: 'git@gitlab.local:DevOps/HIERA_r10k.git' :basedir: '/etc/puppetlabs/hiera/'
De esta forma nos tendremos que preocupar de que el repositorio de hiera tenga los mismos branches que el repositorio de entornos,
Más info aqui