I've upgraded postgresql to the latest version. I've also created the systemd unit service file to start/stop/reload postgres using systemd. It's started by a script which checks to see if the /var/db/pgsql/data folder is empty, if it is, it calls initdb to initialize the database and get your default config files setup.
I started with the service file defined in postgres' docs. I updated the ExecStart to call out to postgresql.sh, since the service was setup as Type=notify, I had to add a NotifyAccess=all to that it would allow any pid to send the notification to systemd. This seemed to work ok for starting, but reloading/stopping seemed to be sending the kill signals to the wrong pid. I attempted to fix that by defining a PIDFile and pointing it to the pid file /var/db/pgsql/data/postmaster.pid that postgres uses, but it didn't help. I ended up changing this to be a forking service and use pg_ctl to control everything. That seemed to do the trick, Start/Stop/Reload all work without any errors. If you do attempt to mess with getting the Type=notify working, be sure you compile postgres with the --with-systemd option.
All of this is to say that the unit file is going against the sample service file and method. That stems from the use of the script to start postgres so we can determine if we should run initdb first, instead of starting it directly, like the sample service file.
I believe this fixes T648