73 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/bin/bash
 | 
						|
 | 
						|
set -eu
 | 
						|
 | 
						|
client_configure() {
 | 
						|
	sudo chmod 600 $PQSSLCERTTEST_PATH/postgresql.key
 | 
						|
}
 | 
						|
 | 
						|
pgdg_repository() {
 | 
						|
	local sourcelist='sources.list.d/postgresql.list'
 | 
						|
 | 
						|
	curl -sS 'https://www.postgresql.org/media/keys/ACCC4CF8.asc' | sudo apt-key add -
 | 
						|
	echo deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PGVERSION | sudo tee "/etc/apt/$sourcelist"
 | 
						|
	sudo apt-get -o Dir::Etc::sourcelist="$sourcelist" -o Dir::Etc::sourceparts='-' -o APT::Get::List-Cleanup='0' update
 | 
						|
}
 | 
						|
 | 
						|
postgresql_configure() {
 | 
						|
	sudo tee /etc/postgresql/$PGVERSION/main/pg_hba.conf > /dev/null <<-config
 | 
						|
		local     all         all                               trust
 | 
						|
		hostnossl all         pqgossltest 127.0.0.1/32          reject
 | 
						|
		hostnossl all         pqgosslcert 127.0.0.1/32          reject
 | 
						|
		hostssl   all         pqgossltest 127.0.0.1/32          trust
 | 
						|
		hostssl   all         pqgosslcert 127.0.0.1/32          cert
 | 
						|
		host      all         all         127.0.0.1/32          trust
 | 
						|
		hostnossl all         pqgossltest ::1/128               reject
 | 
						|
		hostnossl all         pqgosslcert ::1/128               reject
 | 
						|
		hostssl   all         pqgossltest ::1/128               trust
 | 
						|
		hostssl   all         pqgosslcert ::1/128               cert
 | 
						|
		host      all         all         ::1/128               trust
 | 
						|
	config
 | 
						|
 | 
						|
	xargs sudo install -o postgres -g postgres -m 600 -t /var/lib/postgresql/$PGVERSION/main/ <<-certificates
 | 
						|
		certs/root.crt
 | 
						|
		certs/server.crt
 | 
						|
		certs/server.key
 | 
						|
	certificates
 | 
						|
 | 
						|
	sort -VCu <<-versions ||
 | 
						|
		$PGVERSION
 | 
						|
		9.2
 | 
						|
	versions
 | 
						|
	sudo tee -a /etc/postgresql/$PGVERSION/main/postgresql.conf > /dev/null <<-config
 | 
						|
		ssl_ca_file   = 'root.crt'
 | 
						|
		ssl_cert_file = 'server.crt'
 | 
						|
		ssl_key_file  = 'server.key'
 | 
						|
	config
 | 
						|
 | 
						|
	echo 127.0.0.1 postgres | sudo tee -a /etc/hosts > /dev/null
 | 
						|
 | 
						|
	sudo service postgresql restart
 | 
						|
}
 | 
						|
 | 
						|
postgresql_install() {
 | 
						|
	xargs sudo apt-get -y -o Dpkg::Options::='--force-confdef' -o Dpkg::Options::='--force-confnew' install <<-packages
 | 
						|
		postgresql-$PGVERSION
 | 
						|
		postgresql-server-dev-$PGVERSION
 | 
						|
		postgresql-contrib-$PGVERSION
 | 
						|
	packages
 | 
						|
}
 | 
						|
 | 
						|
postgresql_uninstall() {
 | 
						|
	sudo service postgresql stop
 | 
						|
	xargs sudo apt-get -y --purge remove <<-packages
 | 
						|
		libpq-dev
 | 
						|
		libpq5
 | 
						|
		postgresql
 | 
						|
		postgresql-client-common
 | 
						|
		postgresql-common
 | 
						|
	packages
 | 
						|
	sudo rm -rf /var/lib/postgresql
 | 
						|
}
 | 
						|
 | 
						|
$1
 |