Estou tentando instalar o Jenkins com o Puppet usando os manifestos abaixo.
# init.pp
class jenkins {
include jenkins::install, jenkins::service
}
# service.pp
class jenkins::service {
service { "jenkins":
ensure => running,
hasstatus => true,
hasrestart => true,
enable => true,
require => Class["jenkins::install"],
}
}
# install.pp
class jenkins::install {
include jenkins::install::repo
include jenkins::install::java
package { "jenkins":
ensure => present,
require => Class['jenkins::install::repo','jenkins::install::java'],
}
}
# install/repo.pp
class jenkins::install::repo {
file { "/etc/pki/rpm-gpg/jenkins-ci.org.key":
owner => root,
group => root,
mode => 0600,
source => "puppet:///jenkins/jenkins-ci.org.key"
}
yumrepo { "jenkins":
baseurl => "http://pkg.jenkins-ci.org/redhat",
descr => "Jenkins",
enabled => 1,
gpgcheck => 1,
gpgkey => "file:///etc/pki/rpm-gpg/jenkins-ci.org.key",
require => File["/etc/pki/rpm-gpg/jenkins-ci.org.key"]
}
}
# install/java.pp
class jenkins::install::java {
package { "java-1.6.0-openjdk":
ensure => present,
}
}
O repositório é adicionado e a chave é gravada no sistema de arquivos. No entanto, recebo o seguinte erro.
err: /Stage[main]/Jenkins::Install/Package[jenkins]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install jenkins' returned 1: warning: rpmts_HdrFromFdno: Header V4 DSA signature: NOKEY, key ID d50582e6
Traceback (most recent call last):
File "/usr/bin/yum", line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File "/usr/share/yum-cli/yummain.py", line 309, in user_main
errcode = main(args)
File "/usr/share/yum-cli/yummain.py", line 261, in main
return_code = base.doTransaction()
File "/usr/share/yum-cli/cli.py", line 410, in doTransaction
if self.gpgsigcheck(downloadpkgs) != 0:
File "/usr/share/yum-cli/cli.py", line 510, in gpgsigcheck
self.getKeyForPackage(po, lambda x, y, z: self.userconfirm())
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 3519, in getKeyForPackage
keys = self._retrievePublicKey(keyurl, repo)
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 3484, in _retrievePublicKey
keys_info = misc.getgpgkeyinfo(rawkey, multiple=True)
File "/usr/lib/python2.4/site-packages/yum/misc.py", line 375, in getgpgkeyinfo
raise ValueError(str(e))
ValueError: unknown pgp packet type 17 at 706
Isso sugere que a chave não está sendo importada com sucesso e rpm -qa gpg-pubkey
não mostra a chave. Se eu manualmente yum install jenkins
sem a chave importada, recebo o mesmo erro. Com a chave importada, a instalação manual é bem-sucedida.
Estou instalando com sucesso outros repositórios yum e chaves independentes (basicamente o install/repo.pp
manifest como seu próprio módulo), como o EPEL, mas como este repo é apenas para Jenkins, eu queria incluí-lo no meu módulo Jenkins. / p>
Há algo de errado com meus manifestos? Ou algum outro problema?
UPDATE :
O manifesto a seguir resulta na instalação dos repositórios jenkins e epel, rpm -qa gpg-pub*
mostra a chave epel mas não a chave jenkins, e o git é instalado, mas não o jenkins.
class jenkins {
yumrepo {"jenkins":
baseurl => "http://pkg.jenkins-ci.org/redhat",
descr => "Jenkins",
enabled => 1,
gpgcheck => 1,
gpgkey => "http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key",
}
package {"jenkins":
ensure => latest,
require => Yumrepo["jenkins"]
}
}
class git {
yumrepo {"epel":
baseurl => "http://mirror.aarnet.edu.au/pub/epel/5/i386",
descr => "Extra Packages for Enterprise Linux (EPEL)",
enabled => 1,
gpgcheck => 1,
gpgkey => "http://keys.gnupg.net:11371/pks/lookup?search=0x217521F6&op=get",
}
package {"git":
ensure => latest,
require => Yumrepo["epel"]
}
}
include jenkins
include git
UPDATE :
Deveria ter incluído versões de software:
- CentOS 5.7
- ruby 1.8.5 (2006-08-25)
- Puppet v2.7.9
- yum-3.2.22
- rpm-4.4.2.3