Python – PSQL postgresql Client check and installer.

The script performs a check to see if PSQL client is installed. If it is not installed then it will check if the postgres-contrib RPM package is installed and if not it will go ahead and install it. Then regardless it will continue with the installation of the PSQL package. Note: The script does not know how to handle SSH not being up on the remote server. It will quit if SSH is not running on a server.

The script can be run by issuing the following command

$ fab -f file_2.py check_PSQL 
from fabric.api import *
from fabric.api import settings
from fabric.api import run, roles
import socket
 
 
 
 
env.roledefs = {
    'db': ['10.0.0.20', '10.0.0.21'],
    'web': ['web1', 'web2', 'web3'],
}
 
 
env.use_ssh_config = False
env.user = "root"
env.password = "ILoveCake!"
env.port = 22
 
 
check_PSQL_hosts_error=[]
 
hostname = socket.gethostname()
 
 
@roles('db')
#Function that checks if PSQL is installed.
def check_PSQL():
 
    with settings(abort_exception = Exception):
        try: #Check if psql is installed. If it is exit function and execute post_install_check_PSQL function
            if run("which psql", warn_only = True).succeeded:
                pass
            else: #If it is not installed it will check to see if psql94 yum RPM package is installed
                if run("rpm -q postgresql94-contrib").succeeded:
                    run ("yum install -y postgresql94-contrib") #if it is installed then it will install the PSQL package
        except Exception: #if psql94 yum RPM package is NOT installed it will install it and then procceed with the install of PSQL
            run ("rpm -Uvh http://yum.postgresql.org/9.4/redhat/rhel-6-x86_64/pgdg-centos94-9.4-1.noarch.rpm")
            run ("yum install -y postgresql94-contrib")
 
def post_install_check_PSQL(): #This function performs a post install check. It checks if PSQL is installed or not.
                               #If PSQL is not installed then it will append to a list the name fo the server and display the server name
                               #with the failure.
 
    with settings(abort_exception = Exception):
        try:
            run("which psql", warn_only = True).succeeded
            print "PSQL is installed"
 
        except Exception:
            check_PSQL_hosts_error.append(hostname)
            print "Issue with PSQL instal on following server"
            print check_PSQL_hosts_error
 
 
 
check_PSQL()
post_install_check_PSQL()
Share Button