From cb20a40ad2ed15cc9ff035a8d9f8a41c6221ad41 Mon Sep 17 00:00:00 2001 From: Oleksandr Kuzminskyi Date: Sun, 18 Jan 2026 10:11:02 -0800 Subject: [PATCH] Add Percona repository profile and role - Add role::percona_server - Add profile::percona and profile::percona::repo - Install Percona repo via percona-release package - Add Hiera data for percona_server role Closes #233 --- debian/changelog | 6 +++ .../development/data/percona_server.yaml | 3 ++ .../modules/profile/manifests/percona.pp | 6 +++ .../modules/profile/manifests/percona/repo.pp | 41 +++++++++++++++++++ modules/role/manifests/percona_server.pp | 7 ++++ 5 files changed, 63 insertions(+) create mode 100644 environments/development/data/percona_server.yaml create mode 100644 environments/development/modules/profile/manifests/percona.pp create mode 100644 environments/development/modules/profile/manifests/percona/repo.pp create mode 100644 modules/role/manifests/percona_server.pp diff --git a/debian/changelog b/debian/changelog index cbf76f7..e531c61 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +puppet-code (0.1.0-1build276) noble; urgency=medium + + * commit event. see changes history in git log + + -- root Sun, 18 Jan 2026 18:11:05 +0000 + puppet-code (0.1.0-1build275) noble; urgency=medium * commit event. see changes history in git log diff --git a/environments/development/data/percona_server.yaml b/environments/development/data/percona_server.yaml new file mode 100644 index 0000000..410c544 --- /dev/null +++ b/environments/development/data/percona_server.yaml @@ -0,0 +1,3 @@ +--- +classes: + - role::percona_server \ No newline at end of file diff --git a/environments/development/modules/profile/manifests/percona.pp b/environments/development/modules/profile/manifests/percona.pp new file mode 100644 index 0000000..9e44365 --- /dev/null +++ b/environments/development/modules/profile/manifests/percona.pp @@ -0,0 +1,6 @@ +# @summary: Installs Percona Server and related components +class profile::percona () { + + include 'profile::percona::repo' + +} \ No newline at end of file diff --git a/environments/development/modules/profile/manifests/percona/repo.pp b/environments/development/modules/profile/manifests/percona/repo.pp new file mode 100644 index 0000000..5f4f825 --- /dev/null +++ b/environments/development/modules/profile/manifests/percona/repo.pp @@ -0,0 +1,41 @@ +# @summary: Installs Percona repository using percona-release package. +class profile::percona::repo () { + $release_package_url = 'https://repo.percona.com/apt/percona-release_latest.generic_all.deb' + $release_package_path = '/var/tmp/percona-release_latest.generic_all.deb' + + package { ['gnupg2', 'curl', 'lsb-release']: + ensure => 'installed', + } + + exec { 'download-percona-release': + path => '/usr/bin', + command => "curl -o ${release_package_path} ${release_package_url}", + creates => $release_package_path, + require => Package['curl'], + } + + exec { 'install-percona-release': + path => '/usr/bin:/usr/sbin:/sbin:/bin', + command => "dpkg -i ${release_package_path}", + unless => 'dpkg -l percona-release', + require => [ + Exec['download-percona-release'], + Package['gnupg2'], + Package['lsb-release'], + ], + notify => Exec['percona-release-setup'], + } + + exec { 'percona-release-setup': + path => '/usr/bin:/usr/sbin:/sbin:/bin', + command => 'percona-release setup ps80 -y', + refreshonly => true, + notify => Exec['update-percona-repo'], + } + + exec { 'update-percona-repo': + path => '/usr/bin', + command => 'apt-get update', + refreshonly => true, + } +} \ No newline at end of file diff --git a/modules/role/manifests/percona_server.pp b/modules/role/manifests/percona_server.pp new file mode 100644 index 0000000..3c16402 --- /dev/null +++ b/modules/role/manifests/percona_server.pp @@ -0,0 +1,7 @@ +# @summary: Puppet role for a Percona Server node +class role::percona_server () { + + include 'profile::base' + include 'profile::percona' + +} \ No newline at end of file