Puppet - 기본 패키지에 없는 git 1.8.x를 설치하는 방법

Puppet - 기본 패키지에 없는 git 1.8.x를 설치하는 방법

Puppet을 사용하여 특정 버전의 git 설치를 어떻게 자동화합니까?

apt-get update && apt-get install git-core내 12.04 우분투 서버에서는 git 버전 1.7.9가 생성됩니다.
1.7.10 이상이 있어야 합니다.

내가 볼 수 있는 두 가지 옵션이 있습니다. 1. ppa 추가
2. 소스에서 git 설치

소스에서 컴파일하는 것보다 ppa를 추가하는 것이 더 쉬울 것이라고 생각하므로 이것이 제가 시도하는 것입니다.

나는puppetlabs/apt 모듈git-core ppa를 설치했지만 꼭두각시 실행 후에도 내 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-coreUbuntu 저장소에서 제거하려고 할 것입니다).

답변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'],
}

관련 정보