PostgreSQL install on Ubuntu/Windows. (#636)

* added windows installation script for postgresql

* removed if from Start-PostreSQL

* added script to packar template.

* changed postgresql.sh for ubuntu.

* postgresql stop and disalbe services.

* change name of the functions

* Stop postgreSQL after validation instead of start.

* added validation and re-work installation prcoedur

* remove redundunt code from psql

* correct intendation

* path to Path

* added PostgreSQL validation procedure.

* Removed useless last line.

* redundunt parameter passed in function call.

* removed repeated part of code.

* removed Stop function since it was useless.

* spaces

* spaces =

* Update Windows2019-Azure.json

* resolve confictls

* added validate and install postgresql

* added password to choco install and variables.

* add new system variables.

* added --params flag

* added correct quotas

* added logging for PostgreSQL install

Co-authored-by: Dariy.Nurgaleev <d.nurgaleev@trueengineering.ru>
This commit is contained in:
Darii Nurgaleev
2020-06-02 19:52:42 +07:00
committed by GitHub
parent c6a872a71e
commit 3be17cf239
5 changed files with 100 additions and 3 deletions

View File

@@ -7,10 +7,26 @@
# Source the helpers for use with the script
source $HELPER_SCRIPTS/document.sh
#Preparing repo for PostgreSQL 12.
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ `lsb_release -cs`-pgdg main" | tee /etc/apt/sources.list.d/pgdg.list
echo "Install PostgreSQL"
apt update
apt install postgresql postgresql-client
echo "Install libpq-dev"
apt-get install libpq-dev
echo "Install Postgresql Client"
apt-get install postgresql-client
#Verify that PostgreSQL is ready for accept incoming connections.
# exit codes:
# ready - 0
# reject - 1
# connection timeout - 2
pg_isready
DocumentInstalledItem "$(psql -V 2>&1 | cut -d ' ' -f 1,2,3)"
# Disable postgresql.service
systemctl is-active --quiet postgresql.service && systemctl stop postgresql.service
systemctl disable postgresql.service

View File

@@ -312,6 +312,12 @@
"scripts":[
"{{ template_dir }}/scripts/Installers/Install-7zip.ps1"
]
},
{
"type": "powershell",
"scripts":[
"{{ template_dir }}/scripts/Installers/Install-PostgreSQL.ps1"
]
},
{
"type": "powershell",
@@ -519,6 +525,12 @@
"{{ template_dir }}/scripts/Installers/Install-MysqlCli.ps1"
]
},
{
"type": "powershell",
"scripts":[
"{{ template_dir }}/scripts/Installers/Validate-PostgreSQL.ps1"
]
},
{
"type": "powershell",
"scripts":[

View File

@@ -621,6 +621,12 @@
"{{ template_dir }}/scripts/Installers/Install-Vcpkg.ps1"
]
},
{
"type": "powershell",
"scripts":[
"{{ template_dir }}/scripts/Installers/Install-PostgreSQL.ps1"
]
},
{
"type": "powershell",
"scripts":[
@@ -944,6 +950,12 @@
"{{ template_dir }}/scripts/Installers/Validate-Vcpkg.ps1"
]
},
{
"type": "powershell",
"scripts":[
"{{ template_dir }}/scripts/Installers/Validate-PostgreSQL.ps1"
]
},
{
"type": "powershell",
"scripts":[

View File

@@ -0,0 +1,22 @@
$ErrorActionPreference = "Stop"
Import-Module -Name ImageHelpers
#Define user and password for PostgreSQL database
$postgresusr="postgres"
$postgrespwd="root"
#Prepare environment variable for validation
Set-SystemVariable -SystemVariable PGUSER -Value $postgresusr
Set-SystemVariable -SystemVariable PGPASSWORD -Value $postgrespwd
#Install latest PostgreSQL
cinst postgresql --params "/Password:$postgrespwd" --params-global --debug --verbose
#Get Path to pg_ctl.exe
$paths = (Get-CimInstance Win32_Service -Filter "Name LIKE 'postgresql-%'").PathName
#Parse output of command above to obtain pure path
$pgbin = $paths.split('"')[1].replace("\pg_ctl.exe", "")
#Added PostgreSQL bin path into PATH variable.
Add-MachinePathItem $pgbin

View File

@@ -0,0 +1,35 @@
$PGUSER="postgres"
function Validate-PostgreSQL {
$pgready = Start-Process -FilePath pg_isready -Wait -PassThru
$exitCode = $pgready.ExitCode
if ($exitCode -eq 0)
{
Write-Host -Object "PostgreSQL has been successfully installed."
}
else
{
Write-Host -Object "PostgreSQL is not ready. Exitcode: $exitCode"
exit $exitCode
}
}
$paths = (Get-CimInstance Win32_Service -Filter "Name LIKE 'postgresql-%'").PathName
$pgservice = (Get-CimInstance Win32_Service -Filter "Name LIKE 'postgresql-%'").Name
$pgroot = $paths.split('"')[1].replace("\bin\pg_ctl.exe", "")
$psqlVersion = pg_config --version | Out-String
Validate-PostgreSQL
# Adding description of the software to Markdown
$SoftwareName = "PostgreSQL"
$Description = @"
_Version:_ $psqlVersion<br/>
_Default Path:_ $pgroot<br/>
_User:_ $env:PGUSER<br/>
_Password:_ $env:PGPASSWORD
"@
Add-SoftwareDetailsToMarkdown -SoftwareName $SoftwareName -DescriptionMarkdown $Description
#Stop and disable PostgreSQL service
Stop-Service -Name $pgservice
Set-Service $pgservice -StartupType Disabled