
You can't have two different classes install the same package (FAIL) But you can have two different classes include the same class, so by encapsulating the "install pip" code into a module, we can safely consume it across multiple modules. Sometimes I really hate puppet. Change-Id: I3467c52b6887298c1b4d01a29873c63edf0adfd3
46 lines
1.1 KiB
Puppet
46 lines
1.1 KiB
Puppet
class jenkins_jobs($url, $username, $password, $site) {
|
|
|
|
include pip
|
|
|
|
package { 'python-yaml':
|
|
ensure => 'present'
|
|
}
|
|
|
|
file { '/usr/local/jenkins_jobs':
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => 755,
|
|
ensure => 'directory',
|
|
recurse => true,
|
|
source => ['puppet:///modules/jenkins_jobs/'],
|
|
require => Package['python-yaml']
|
|
}
|
|
|
|
file { '/usr/local/jenkins_jobs/jenkins_jobs.ini':
|
|
owner => 'root',
|
|
group => 'root',
|
|
mode => 440,
|
|
ensure => 'present',
|
|
content => template('jenkins_jobs/jenkins_jobs.ini.erb'),
|
|
replace => 'true',
|
|
require => File['/usr/local/jenkins_jobs']
|
|
}
|
|
|
|
exec { "jenkins_job_${site}":
|
|
command => "python /usr/local/jenkins_jobs/jenkins_jobs.py update /usr/local/jenkins_jobs/projects/${site}",
|
|
cwd => '/usr/local/jenkins_jobs/',
|
|
path => '/bin:/usr/bin',
|
|
require => [
|
|
File['/usr/local/jenkins_jobs/jenkins_jobs.ini'],
|
|
Package['python-jenkins']
|
|
]
|
|
}
|
|
|
|
package { "python-jenkins":
|
|
ensure => latest, # okay to use latest for pip
|
|
provider => pip,
|
|
require => Class[pip]
|
|
}
|
|
|
|
}
|