
¿Cómo automatizarías la instalación de una versión específica de git usando Puppet?
apt-get update && apt-get install git-core
en mi servidor ubuntu 12.04 da como resultado la versión 1.7.9 de git.
Debo tener 1.7.10 o más reciente.
Hay dos opciones que puedo ver. 1. Agregue el ppa
2. Instale git desde la fuente
Creo que agregar un ppa sería más fácil que compilar desde la fuente, así que eso es lo que estoy intentando.
He intentado usar elmódulo puppetlabs/aptpara instalar el ppa de git-core, pero mi versión de git sigue siendo 1.7.9 después de ejecutar el títere.
root@gitlab:~# puppet module list
/etc/puppet/modules
├── puppetlabs-apt (v1.2.0)
├── puppetlabs-git (v0.0.3)
├── puppetlabs-stdlib (v4.1.0)
└── ruby (???)
root@gitlab:~# cat /etc/puppet/manifests/git.pp
class { 'apt': }
apt::ppa { 'ppa:git-core/ppa':
before => Exec['apt-get update'],
}
exec{'apt-get update':
path => ['/usr/bin', '/usr/sbin'],
}
package {'git-core':
ensure => latest,
require => Exec['apt-get update'],
}
root@gitlab:~# puppet apply /etc/puppet/manifests/git.pp --verbose
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/facter_dot_d.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/pe_version.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/puppet_vardir.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/root_home.rb
Warning: Config file /etc/puppet/hiera.yaml not found, using Hiera defaults
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/facter_dot_d.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/pe_version.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/puppet_vardir.rb
Info: Loading facts in /etc/puppet/modules/stdlib/lib/facter/root_home.rb
Info: Applying configuration version '1379214336'
Notice: /Stage[main]//Exec[apt-get update]/returns: executed successfully
Notice: Finished catalog run in 5.80 seconds
root@gitlab:~# git --version
git version 1.7.9.5
Respuesta1
git-core
no es el paquete en ese PPA; en su lugar, desea git
(y probablemente eliminarlo git-core
del repositorio de Ubuntu).
Respuesta2
Como Shane mencionó, deberías usarlo git
en lugar de git-core
en la definición del paquete.
Además, no es necesario crear la Exec['apt-get update']
dependencia, porque el módulo ya se encarga de eso.
Código del módulo:
exec { "add-apt-repository-${name}":
...
notify => Exec['apt_update'],
...
}
Entonces, si quieres mantener git actualizado todo el tiempo, debes hacer algo como esto:
class {'ntp': always_apt_update => true, }
y
package {'git':
ensure => latest,
require => Apt::Ppa['ppa:git-core/ppa'],
}