如何使用 puppet 自动安装特定版本的 git?
apt-get update && apt-get install git-core
在我的 12.04 ubuntu 服务器上,git 版本为 1.7.9。
我必须拥有 1.7.10 或更新版本。
我能看到两个选项。1. 添加 ppa
2. 从源代码安装 git
我认为添加 ppa 比从源代码编译更容易,所以这就是我正在尝试的。
我尝试过使用puppetlabs/apt 模块安装git-core ppa,但是puppet运行后我的git版本仍然是1.7.9。
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
答案1
git-core
不是该 PPA 中的软件包 — — 您想要的是git
(并且可能要从git-core
Ubuntu 存储库中删除)。
答案2
正如 Shane 提到的,您应该在包定义中使用git
而不是。git-core
另外,没有必要创建Exec['apt-get update']
依赖关系,因为模块已经处理好了这个问题。
模块代码:
exec { "add-apt-repository-${name}":
...
notify => Exec['apt_update'],
...
}
所以如果你想要让 git 一直保持最新状态你应该做这样的事情:
class {'ntp': always_apt_update => true, }
和
package {'git':
ensure => latest,
require => Apt::Ppa['ppa:git-core/ppa'],
}