@@ -28,33 +28,58 @@ def installed_postgresql_major_version
2828
2929 raise 'Unable to determine installed PostgreSQL version' if nil_or_empty? ( pgsql_package )
3030
31- pgsql_package_version = pgsql_package . first [ 1 ] . fetch ( 'version' ) . to_i
32- Chef ::Log . info ( "Deteched PostgreSQL version: #{ pgsql_package_version } " )
31+ pgsql_package = pgsql_package . values . first
32+ pgsql_package_version = pgsql_package . fetch ( 'version' ) . to_i
33+ pgsql_package_source = if pgsql_package . key? ( 'release' )
34+ pgsql_package . fetch ( 'release' ) . match? ( 'PGDG' ) ? :repo : :os
35+ else
36+ pgsql_package . fetch ( 'version' ) . match? ( 'pgdg' ) ? :repo : :os
37+ end
38+
39+ Chef ::Log . info ( "Detected installed PostgreSQL version: #{ pgsql_package_version } installed from #{ pgsql_package_source } " )
3340
3441 pgsql_package_version
3542 end
3643
37- def data_dir ( version = installed_postgresql_major_version )
44+ def installed_postgresql_package_source
45+ pgsql_package = node [ 'packages' ] . filter { |p | p . match? ( /postgresql-?(\d +)?$/ ) }
46+
47+ raise 'Unable to determine installed PostgreSQL version' if nil_or_empty? ( pgsql_package )
48+
49+ pgsql_package = pgsql_package . values . first
50+ pgsql_package_version = pgsql_package . fetch ( 'version' ) . to_i
51+ pgsql_package_source = if pgsql_package . key? ( 'release' )
52+ pgsql_package . fetch ( 'release' ) . match? ( 'PGDG' ) ? :repo : :os
53+ else
54+ pgsql_package . fetch ( 'version' ) . match? ( 'pgdg' ) ? :repo : :os
55+ end
56+
57+ Chef ::Log . info ( "Detected installed PostgreSQL version: #{ pgsql_package_version } installed from #{ pgsql_package_source } " )
58+
59+ pgsql_package_source
60+ end
61+
62+ def data_dir ( version : installed_postgresql_major_version , source : installed_postgresql_package_source )
3863 case node [ 'platform_family' ]
3964 when 'rhel' , 'fedora' , 'amazon'
40- "/var/lib/pgsql/#{ version } /data"
65+ source . eql? ( :repo ) ? "/var/lib/pgsql/#{ version } /data" : '/var/lib/pgsql/data'
4166 when 'debian'
4267 "/var/lib/postgresql/#{ version } /main"
4368 end
4469 end
4570
46- def conf_dir ( version = installed_postgresql_major_version )
71+ def conf_dir ( version : installed_postgresql_major_version , source : installed_postgresql_package_source )
4772 case node [ 'platform_family' ]
4873 when 'rhel' , 'fedora' , 'amazon'
49- "/var/lib/pgsql/#{ version } /data"
74+ source . eql? ( :repo ) ? "/var/lib/pgsql/#{ version } /data" : '/var/lib/pgsql/data'
5075 when 'debian'
5176 "/etc/postgresql/#{ version } /main"
5277 end
5378 end
5479
5580 # determine the platform specific service name
56- def default_platform_service_name ( version = installed_postgresql_major_version )
57- if platform_family? ( 'rhel' , 'fedora' , 'amazon' )
81+ def default_platform_service_name ( version : installed_postgresql_major_version , source : installed_postgresql_package_source )
82+ if platform_family? ( 'rhel' , 'fedora' , 'amazon' ) && source . eql? ( :repo )
5883 "postgresql-#{ version } "
5984 else
6085 'postgresql'
@@ -73,24 +98,37 @@ def initialized?
7398 def secure_random
7499 r = SecureRandom . hex
75100 Chef ::Log . debug "Generated password: #{ r } "
101+
76102 r
77103 end
78104
79- def default_server_packages
105+ def default_server_packages ( version : nil , source : :os )
80106 case node [ 'platform_family' ]
81107 when 'rhel' , 'fedora' , 'amazon'
82- %W( postgresql#{ version . delete ( '.' ) } -contrib postgresql#{ version . delete ( '.' ) } -libs postgresql#{ version . delete ( '.' ) } -server )
108+ {
109+ os : %w( postgresql-contrib postgresql-server ) ,
110+ repo : %W( postgresql#{ version . delete ( '.' ) } -contrib postgresql#{ version . delete ( '.' ) } -server ) ,
111+ } . fetch ( source , nil )
83112 when 'debian'
84- %W( postgresql-#{ version } postgresql-common )
113+ {
114+ os : %w( postgresql postgresql-common ) ,
115+ repo : %W( postgresql-#{ version } postgresql-common ) ,
116+ } . fetch ( source , nil )
85117 end
86118 end
87119
88- def default_client_packages
120+ def default_client_packages ( version : nil , source : :os )
89121 case node [ 'platform_family' ]
90122 when 'rhel' , 'fedora' , 'amazon'
91- %W( postgresql#{ version . delete ( '.' ) } postgresql#{ version . delete ( '.' ) } -libs )
123+ {
124+ os : %w( postgresql ) ,
125+ repo : %W( postgresql#{ version . delete ( '.' ) } ) ,
126+ } . fetch ( source , nil )
92127 when 'debian'
93- %W( postgresql-client-#{ version } )
128+ {
129+ os : %w( postgresql-client ) ,
130+ repo : %W( postgresql-client-#{ version } ) ,
131+ } . fetch ( source , nil )
94132 end
95133 end
96134
@@ -102,11 +140,11 @@ def dnf_module_platform?
102140 # initdb defaults to the execution environment.
103141 # https://www.postgresql.org/docs/9.5/static/locale.html
104142 def rhel_init_db_command ( new_resource )
105- cmd = "/usr/pgsql-#{ new_resource . version } /bin/initdb"
143+ cmd = new_resource . source . eql? ( :repo ) ? "/usr/pgsql-#{ new_resource . version } /bin/initdb" : '/usr/bin/initdb'
106144 cmd << " --locale '#{ new_resource . initdb_locale } '" if new_resource . initdb_locale
107145 cmd << " -E '#{ new_resource . initdb_encoding } '" if new_resource . initdb_encoding
108146 cmd << " #{ new_resource . initdb_additional_options } " if new_resource . initdb_additional_options
109- cmd << " -D '#{ data_dir ( new_resource . version ) } '"
147+ cmd << " -D '#{ data_dir } '"
110148 end
111149
112150 # Given the base URL build the complete URL string for a yum repo
0 commit comments