From f68fc295243fbaf1693a1f6a6591d7386fdeae51 Mon Sep 17 00:00:00 2001 From: Emilien Macchi Date: Thu, 25 Jun 2015 20:16:02 -0400 Subject: [PATCH] repo: install keyring with an exec We absolutely need: Exec['apt_update'] -> Package<||> To have the right OpenStack packages installed on Ubuntu and Debian. So rather than installing with a Package resource, let's use an exec so we are sure 'apt-get update' is run before any Package puppet resource. Change-Id: Ic99304d546d1153e3244c1191bbfc52c2118dd5f --- manifests/repo/debian/debian.pp | 15 ++++++++++----- manifests/repo/debian/ubuntu.pp | 15 ++++++++++----- .../openstack_extras_repo_debian_debian_spec.rb | 10 +++++----- .../openstack_extras_repo_debian_ubuntu_spec.rb | 10 +++++----- 4 files changed, 30 insertions(+), 20 deletions(-) diff --git a/manifests/repo/debian/debian.pp b/manifests/repo/debian/debian.pp index ffd1914..ce9602a 100644 --- a/manifests/repo/debian/debian.pp +++ b/manifests/repo/debian/debian.pp @@ -38,10 +38,15 @@ class openstack_extras::repo::debian::debian( $package_require = false ) inherits openstack_extras::repo::debian::params { if $manage_whz { - package { 'gplhost-archive-keyring': - ensure => 'present', - name => $::openstack_extras::repo::debian::params::whz_required_packages, - } -> + exec { 'installing gplhost-archive-keyring': + command => '/usr/bin/apt-get -y install gplhost-archive-keyring', + logoutput => 'on_failure', + tries => 3, + try_sleep => 1, + refreshonly => true, + subscribe => File["/etc/apt/sources.list.d/${::openstack_extras::repo::debian::params::whz_name}.list"], + notify => Exec['apt_update'], + } apt::source { $::openstack_extras::repo::debian::params::whz_name: location => $::openstack_extras::repo::debian::params::whz_location, release => $release, @@ -56,7 +61,7 @@ class openstack_extras::repo::debian::debian( create_resources('apt::source', $source_hash, $source_defaults) - if $package_require and ! $manage_whz { + if $package_require { Exec['apt_update'] -> Package<||> } } diff --git a/manifests/repo/debian/ubuntu.pp b/manifests/repo/debian/ubuntu.pp index c50d2b7..346a73a 100644 --- a/manifests/repo/debian/ubuntu.pp +++ b/manifests/repo/debian/ubuntu.pp @@ -38,10 +38,15 @@ class openstack_extras::repo::debian::ubuntu( $package_require = false ) inherits openstack_extras::repo::debian::params { if $manage_uca { - package { 'ubuntu-cloud-keyring': - ensure => 'present', - name => $::openstack_extras::repo::debian::params::uca_required_packages, - } -> + exec { 'installing ubuntu-cloud-keyring': + command => '/usr/bin/apt-get -y install ubuntu-cloud-keyring', + logoutput => 'on_failure', + tries => 3, + try_sleep => 1, + refreshonly => true, + subscribe => File["/etc/apt/sources.list.d/${::openstack_extras::repo::debian::params::uca_name}.list"], + notify => Exec['apt_update'], + } apt::source { $::openstack_extras::repo::debian::params::uca_name: location => $::openstack_extras::repo::debian::params::uca_location, release => "${::lsbdistcodename}-updates/${release}", @@ -51,7 +56,7 @@ class openstack_extras::repo::debian::ubuntu( create_resources('apt::source', $source_hash, $source_defaults) - if $package_require and ! $manage_uca { + if $package_require { Exec['apt_update'] -> Package<||> } } diff --git a/spec/classes/openstack_extras_repo_debian_debian_spec.rb b/spec/classes/openstack_extras_repo_debian_debian_spec.rb index a9422ae..b3f33b5 100644 --- a/spec/classes/openstack_extras_repo_debian_debian_spec.rb +++ b/spec/classes/openstack_extras_repo_debian_debian_spec.rb @@ -46,7 +46,7 @@ describe 'openstack_extras::repo::debian::debian' do :repos => 'main' )} - it { should contain_package('gplhost-archive-keyring') } + it { should contain_exec('installing gplhost-archive-keyring') } end describe 'with overridden release' do @@ -66,7 +66,7 @@ describe 'openstack_extras::repo::debian::debian' do :repos => 'main' )} - it { should contain_package('gplhost-archive-keyring') } + it { should contain_exec('installing gplhost-archive-keyring') } end describe 'when not managing wheezy repo' do @@ -74,7 +74,7 @@ describe 'openstack_extras::repo::debian::debian' do default_params.merge!({ :manage_whz => false }) end - it { should_not contain_package('gplhost-archive-keyring') } + it { should_not contain_exec('installing gplhost-archive-keyring') } end describe 'with overridden source hash' do @@ -110,7 +110,7 @@ describe 'openstack_extras::repo::debian::debian' do :key_server => 'pgp.mit.edu' )} - it { should contain_package('gplhost-archive-keyring') } + it { should contain_exec('installing gplhost-archive-keyring') } end describe 'with overridden source default' do @@ -135,7 +135,7 @@ describe 'openstack_extras::repo::debian::debian' do :include_src => 'true' )} - it { should contain_package('gplhost-archive-keyring') } + it { should contain_exec('installing gplhost-archive-keyring') } end end end diff --git a/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb b/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb index 4dff63d..a201c37 100644 --- a/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb +++ b/spec/classes/openstack_extras_repo_debian_ubuntu_spec.rb @@ -41,7 +41,7 @@ describe 'openstack_extras::repo::debian::ubuntu' do :repos => 'main', )} - it { should contain_package('ubuntu-cloud-keyring') } + it { should contain_exec('installing ubuntu-cloud-keyring') } end @@ -56,7 +56,7 @@ describe 'openstack_extras::repo::debian::ubuntu' do :repos => 'main', )} - it { should contain_package('ubuntu-cloud-keyring') } + it { should contain_exec('installing ubuntu-cloud-keyring') } end describe 'when not managing UCA' do @@ -64,7 +64,7 @@ describe 'openstack_extras::repo::debian::ubuntu' do default_params.merge!({ :manage_uca => false }) end - it { should_not contain_package('ubuntu-cloud-keyring') } + it { should_not contain_exec('installing ubuntu-cloud-keyring') } end describe 'with overridden source hash' do @@ -100,7 +100,7 @@ describe 'openstack_extras::repo::debian::ubuntu' do :key_server => 'pgp.mit.edu' )} - it { should contain_package('ubuntu-cloud-keyring') } + it { should contain_exec('installing ubuntu-cloud-keyring') } end describe 'with overridden source default' do @@ -118,7 +118,7 @@ describe 'openstack_extras::repo::debian::ubuntu' do :repos => 'main', )} - it { should contain_package('ubuntu-cloud-keyring') } + it { should contain_exec('installing ubuntu-cloud-keyring') } end end end