diff --git a/REFERENCE.md b/REFERENCE.md
index 87f9e474..c3d378b3 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -27,7 +27,7 @@
* [`php::repo::debian`](#php--repo--debian): Configure debian apt repo === Parameters [*location*] Location of the apt repository [*repos*] Apt repository names [*include_src*]
* [`php::repo::redhat`](#php--repo--redhat)
* [`php::repo::suse`](#php--repo--suse): Configure suse repo === Parameters [*reponame*] Name of the Zypper repository [*baseurl*] Base URL of the Zypper repository
-* [`php::repo::ubuntu`](#php--repo--ubuntu): Configure ubuntu ppa === Parameters [*version*] PHP version to manage (e.g. 5.6)
+* [`php::repo::ubuntu`](#php--repo--ubuntu): Configure ubuntu apt repo (packages.sury.org) === Parameters [*location*] Location of the apt repository [*repos*] Apt repository name
### Defined types
@@ -1834,6 +1834,7 @@ The following parameters are available in the `php::repo::debian` class:
* [`key`](#-php--repo--debian--key)
* [`dotdeb`](#-php--repo--debian--dotdeb)
* [`sury`](#-php--repo--debian--sury)
+* [`key_source`](#-php--repo--debian--key_source)
##### `location`
@@ -1890,6 +1891,14 @@ Data type: `Boolean`
Default value: `true`
+##### `key_source`
+
+Data type: `String[1]`
+
+
+
+Default value: `'https://packages.sury.org/php/apt.gpg'`
+
### `php::repo::redhat`
The php::repo::redhat class.
@@ -1945,26 +1954,75 @@ Default value: `'http://download.opensuse.org/repositories/home:/mayflower:/php5
### `php::repo::ubuntu`
-Configure ubuntu ppa
+Configure ubuntu apt repo (packages.sury.org)
=== Parameters
+[*location*]
+ Location of the apt repository
+
+[*repos*]
+ Apt repository names
+
+[*include_src*]
+ Add source repository
+
+[*key_source*]
+ URL of the GPG key file
+
[*version*]
- PHP version to manage (e.g. 5.6)
+ Removed. PHP version selection via PPA is no longer supported.
+ All PHP versions are available from a single repository.
#### Parameters
The following parameters are available in the `php::repo::ubuntu` class:
+* [`location`](#-php--repo--ubuntu--location)
+* [`repos`](#-php--repo--ubuntu--repos)
+* [`include_src`](#-php--repo--ubuntu--include_src)
+* [`key_source`](#-php--repo--ubuntu--key_source)
* [`version`](#-php--repo--ubuntu--version)
+##### `location`
+
+Data type: `String[1]`
+
+
+
+Default value: `'https://packages.sury.org/php/'`
+
+##### `repos`
+
+Data type: `String[1]`
+
+
+
+Default value: `'main'`
+
+##### `include_src`
+
+Data type: `Boolean`
+
+
+
+Default value: `false`
+
+##### `key_source`
+
+Data type: `String[1]`
+
+
+
+Default value: `'https://packages.sury.org/php/apt.gpg'`
+
##### `version`
-Data type: `Pattern[/^\d\.\d/]`
+Data type: `Optional[String]`
-Default value: `'5.6'`
+Default value: `undef`
## Defined types
diff --git a/manifests/init.pp b/manifests/init.pp
index 56d98984..9182f44f 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -203,6 +203,11 @@
if $manage_repos {
contain php::repo
+ if $facts['os']['family'] == 'Debian' {
+ Class['php::repo'] -> Class['apt::update'] -> Class['php::packages']
+ } else {
+ Class['php::repo'] -> Class['php::packages']
+ }
}
class { 'php::packages': }
diff --git a/manifests/repo/debian.pp b/manifests/repo/debian.pp
index 6baa9000..3c62bc14 100644
--- a/manifests/repo/debian.pp
+++ b/manifests/repo/debian.pp
@@ -30,6 +30,7 @@
},
Boolean $dotdeb = true,
Boolean $sury = true,
+ String[1] $key_source = 'https://packages.sury.org/php/apt.gpg',
) {
assert_private()
@@ -51,6 +52,10 @@
}
if ($sury and versioncmp($facts['os']['release']['major'], '9') >= 0) {
+ apt::keyring { 'packages-sury-org.gpg':
+ source => $key_source,
+ }
+
apt::source { 'source_php_sury':
location => 'https://packages.sury.org/php/',
repos => 'main',
@@ -58,10 +63,8 @@
'src' => $include_src,
'deb' => true,
},
- key => {
- name => 'php-sury.gpg',
- source => 'https://packages.sury.org/php/apt.gpg',
- },
+ keyring => '/etc/apt/keyrings/packages-sury-org.gpg',
+ require => Apt::Keyring['packages-sury-org.gpg'],
}
}
}
diff --git a/manifests/repo/ubuntu.pp b/manifests/repo/ubuntu.pp
index 9be7ea0f..cf105d6d 100644
--- a/manifests/repo/ubuntu.pp
+++ b/manifests/repo/ubuntu.pp
@@ -1,28 +1,52 @@
-# Configure ubuntu ppa
+# Configure ubuntu apt repo (packages.sury.org)
#
# === Parameters
#
+# [*location*]
+# Location of the apt repository
+#
+# [*repos*]
+# Apt repository names
+#
+# [*include_src*]
+# Add source repository
+#
+# [*key_source*]
+# URL of the GPG key file
+#
# [*version*]
-# PHP version to manage (e.g. 5.6)
+# Removed. PHP version selection via PPA is no longer supported.
+# All PHP versions are available from a single repository.
#
class php::repo::ubuntu (
- Pattern[/^\d\.\d/] $version = '5.6',
+ String[1] $location = 'https://packages.sury.org/php/',
+ String[1] $repos = 'main',
+ Boolean $include_src = false,
+ String[1] $key_source = 'https://packages.sury.org/php/apt.gpg',
+ Optional[String] $version = undef,
) {
if $facts['os']['name'] != 'Ubuntu' {
fail("class php::repo::ubuntu does not work on OS ${facts['os']['name']}")
}
- include 'apt'
- if ($version == '5.5') {
- fail('PHP 5.5 is no longer available for download')
+ if $version != undef {
+ fail('php::repo::ubuntu: the $version parameter has been removed. packages.sury.org provides all PHP versions in a single repository.')
}
- $version_repo = $version ? {
- '5.4' => 'ondrej/php5-oldstable',
- default => 'ondrej/php'
+ include 'apt'
+
+ apt::keyring { 'packages-sury-org.gpg':
+ source => $key_source,
}
- ::apt::ppa { "ppa:${version_repo}":
- package_manage => true,
+ apt::source { 'source_php_sury':
+ location => $location,
+ repos => $repos,
+ include => {
+ 'src' => $include_src,
+ 'deb' => true,
+ },
+ keyring => '/etc/apt/keyrings/packages-sury-org.gpg',
+ require => Apt::Keyring['packages-sury-org.gpg'],
}
}
diff --git a/spec/classes/php_repo_debian_spec.rb b/spec/classes/php_repo_debian_spec.rb
index b74e86cb..6a96778b 100644
--- a/spec/classes/php_repo_debian_spec.rb
+++ b/spec/classes/php_repo_debian_spec.rb
@@ -26,9 +26,11 @@
if facts[:os]['release']['major'].to_i < 9
it { is_expected.to contain_apt__source('source_php_dotdeb') }
it { is_expected.not_to contain_apt__source('source_php_sury') }
+ it { is_expected.not_to contain_apt__keyring('packages-sury-org.gpg') }
elsif facts[:os]['release']['major'].to_i >= 9
it { is_expected.not_to contain_apt__source('source_php_dotdeb') }
it { is_expected.to contain_apt__source('source_php_sury') }
+ it { is_expected.to contain_apt__keyring('packages-sury-org.gpg') }
end
else
it { is_expected.to compile.and_raise_error(%r{class php::repo::debian does not work on OS}) }
diff --git a/spec/classes/php_repo_ubuntu_spec.rb b/spec/classes/php_repo_ubuntu_spec.rb
index 8c752095..4d0cf020 100644
--- a/spec/classes/php_repo_ubuntu_spec.rb
+++ b/spec/classes/php_repo_ubuntu_spec.rb
@@ -12,11 +12,20 @@
describe 'works without params' do
if facts[:os]['name'] == 'Ubuntu'
it { is_expected.to compile.with_all_deps }
- it { is_expected.to contain_apt__ppa('ppa:ondrej/php') }
+ it { is_expected.to contain_apt__keyring('packages-sury-org.gpg') }
+ it { is_expected.to contain_apt__source('source_php_sury') }
else
it { is_expected.to compile.and_raise_error(%r{class php::repo::ubuntu does not work on OS}) }
end
end
+
+ describe 'fails when version is specified' do
+ if facts[:os]['name'] == 'Ubuntu'
+ let(:params) { { version: '8.1' } }
+
+ it { is_expected.to compile.and_raise_error(%r{version parameter has been removed}) }
+ end
+ end
end
end
end