--- /dev/null
+#!/bin/sh
+
+
+export PAGER=
+
+
+sleep 1
+systemctl --quiet is-active NetworkManager.service
+NM_RC=$?
+CYCLES_WAITED=0
+while [ $NM_RC -ne 0 ]
+do
+ if [ $CYCLES_WAITED -ge 10 ]
+ then
+ exit 1
+ fi
+ if [ $CYCLES_WAITED -eq 0 ]
+ then
+ echo -n "Waiting for NetworkManager"
+ fi
+ echo -n .
+ sleep 1
+ CYCLES_WAITED=$(( $CYCLES_WAITED + 1 ))
+ systemctl --quiet is-active NetworkManager.service
+ NM_RC=$?
+done
+[ $CYCLES_WAITED -gt 0 ] && echo
+
+# wait for the two network connections to come up
+# the two connections being the loopback and eth0
+CONNECTION_DEVICES_UP=$(nmcli --terse connection show --active | wc -l)
+CYCLES_WAITED=0
+while [ $CONNECTION_DEVICES_UP -lt 2 ]
+do
+ if [ $CYCLES_WAITED -ge 10 ]
+ then
+ echo
+ nmcli connection show
+ exit 1
+ fi
+ if [ $CYCLES_WAITED -eq 0 ]
+ then
+ echo -n "Waiting for the network connection"
+ fi
+ echo -n .
+ sleep 1
+ CYCLES_WAITED=$(( $CYCLES_WAITED + 1 ))
+ CONNECTION_DEVICES_UP=$(nmcli --terse connection show --active \
+ | wc -l)
+done
+[ $CYCLES_WAITED -gt 0 ] && echo
+
+CONNECTIONS=$(nmcli --terse connection show \
+ | grep ':802-3-ethernet:' | wc -l)
+if [ $CONNECTIONS -ne 1 ]
+then
+ echo "There are $CONNECTIONS ethernet connections (instead of 1):"
+ nmcli connection show
+fi
+
+CONNECTION_DEVICE="eth0"
+CONNECTION_ID="internal"
+
+nmcli --terse connection show \
+ | grep ':802-3-ethernet:' \
+ | while read CONNECTION_LINE
+do
+ CONNECTION_UUID=$(echo $CONNECTION_LINE | cut -f 2 -d ':')
+ nmcli connection delete uuid "$CONNECTION_UUID"
+done
+
+nmcli connection add \
+ connection.autoconnect yes \
+ connection.id $CONNECTION_ID \
+ connection.interface-name $CONNECTION_DEVICE \
+ connection.type 802-3-ethernet \
+ ipv4.addresses "10.228.109.153/16" \
+ ipv4.dns "10.228.109.159, 10.228.92.159" \
+ ipv4.dns-search "in.useribm.hu" \
+ ipv4.gateway "10.228.109.254" \
+ ipv4.method "manual" \
+ ipv6.addresses "2001:1aa1:000a:7dae:000c:18ff:fe03:6d99/64" \
+ ipv6.dns "2001:1aa1:000a:7dae:000c:18ff:fe03:5c9f, 2001:1aa1:000a:7dae:000c:18ff:fe03:6d9f" \
+ ipv6.dns-search "in.useribm.hu" \
+ ipv6.gateway "2001:1aa1:000a:7dae:000c:18ff:fe03:6dfe" \
+ ipv6.method "manual" \
+ save yes
+
+cat <<EOF >/etc/NetworkManager/conf.d/${CONNECTION_DEVICE}.conf
+[device]
+match-device=interface-name:$CONNECTION_DEVICE
+allowed-connections=id:$CONNECTION_ID
+keep-configuration=no
+EOF
+
+nmcli connection show
+
+hostnamectl hostname pgs.in.useribm.hu
+hostnamectl
--- /dev/null
+#!/bin/sh
+
+
+sleep 1
+systemctl --quiet is-active dbus.service
+DBUS_RC=$?
+WAITED=0
+while [ $DBUS_RC -ne 0 ]
+do
+ if [ $WAITED -eq 0 ]
+ then
+ echo -n "Waiting for dbus.service"
+ fi
+ echo -n .
+ sleep 1
+ WAITED=1
+ systemctl --quiet is-active dbus.service
+ DBUS_RC=$?
+done
+[ $WAITED -ne 0 ] && echo
+timedatectl set-timezone Europe/Budapest
--- /dev/null
+#!/bin/sh
+
+
+POSTGRESQL_PATH=/data/postgresql
+DUMP_PATH=$POSTGRESQL_PATH/dumps
+WAL_ARCHIVE_PATH=$POSTGRESQL_PATH/wal-archive
+
+
+if [ ! -d $POSTGRESQL_PATH ]
+then
+ mkdir $POSTGRESQL_PATH
+fi
+chown postgres:postgres $POSTGRESQL_PATH
+if [ ! -d $DUMP_PATH ]
+then
+ mkdir $DUMP_PATH
+fi
+chown postgres:postgres $DUMP_PATH
+if [ ! -d $WAL_ARCHIVE_PATH ]
+then
+ mkdir $WAL_ARCHIVE_PATH
+fi
+
+# create the main database cluster
+MAIN_DBC_NAME=main-dbc
+MAIN_DBC_PATH=$POSTGRESQL_PATH/$MAIN_DBC_NAME
+MAIN_DBC_DUMP_PATH=$DUMP_PATH/$MAIN_DBC_NAME
+MAIN_DBC_WAL_ARCHIVE_PATH=$WAL_ARCHIVE_PATH/$MAIN_DBC_NAME
+
+if [ ! -d $MAIN_DBC_DUMP_PATH ]
+then
+ mkdir $MAIN_DBC_DUMP_PATH
+fi
+chown postgres:postgres $MAIN_DBC_DUMP_PATH
+if [ ! -d $MAIN_DBC_WAL_ARCHIVE_PATH ]
+then
+ mkdir $MAIN_DBC_WAL_ARCHIVE_PATH
+fi
+chown postgres:postgres $MAIN_DBC_WAL_ARCHIVE_PATH
+
+postgresql-new-systemd-unit \
+ --unit postgresql@main \
+ --datadir $MAIN_DBC_PATH
+
+if [ ! -d $MAIN_DBC_PATH ]
+then
+ postgresql-setup \
+ --initdb \
+ --port=5432 \
+ --unit=postgresql@main
+fi
+
+# create the test & devel database cluster
+TD_DBC_NAME=td-dbc
+TD_DBC_PATH=$POSTGRESQL_PATH/$TD_DBC_NAME
+
+postgresql-new-systemd-unit \
+ --unit postgresql@td \
+ --datadir $TD_DBC_PATH
+
+if [ ! -d $TD_DBC_PATH ]
+then
+ postgresql-setup \
+ --initdb \
+ --port=54321 \
+ --unit=postgresql@td
+fi
--- /dev/null
+#!/bin/sh
+
+
+systemctl enable postgresql@main.service
+systemctl start postgresql@main.service
+systemctl enable postgresql@td.service
+systemctl start postgresql@td.service
+systemctl enable NetworkManager-wait-online.service
+systemctl start NetworkManager-wait-online.service
+
+systemctl enable logrotate.timer
+systemctl start logrotate.timer
--- /dev/null
+# mode file (relative to /c3d)
+755 firstboot/scripts/*.sh
+600 postinstall/install-data/etc/ssh/ssh_host_*_key
+644 postinstall/install-data/etc/ssh/ssh_host_*_key.pub
+600 postinstall/install-data/etc/ssh/sshd_config.d/*.conf
+755 postinstall/install-data/usr/local/bin/*.sh
+755 postinstall/scripts/*.sh
--- /dev/null
+# owner file (relative to /c3d)
--- /dev/null
+mszabo
+scripts
+zfelleg
--- /dev/null
+mszabo
+scripts
+zfelleg
--- /dev/null
+-----BEGIN OPENSSH PRIVATE KEY-----
+b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
+QyNTUxOQAAACAetByRKBVJsbs9pLpL2wWQf3j1XPw3ApZ1lJhYXkE7MQAAAIj2Unip9lJ4
+qQAAAAtzc2gtZWQyNTUxOQAAACAetByRKBVJsbs9pLpL2wWQf3j1XPw3ApZ1lJhYXkE7MQ
+AAAEDMaDC7S5XnxSgkUe7au4hkFcyb//HYG3lzXFw1+Uz1ER60HJEoFUmxuz2kukvbBZB/
+ePVc/DcClnWUmFheQTsxAAAAAAECAwQF
+-----END OPENSSH PRIVATE KEY-----
--- /dev/null
+ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAINF/tKvdmYHq6OMGh3S1vzmu5DaXHe7Tntd4i9Evk1oXAAAAIB60HJEoFUmxuz2kukvbBZB/ePVc/DcClnWUmFheQTsxAAAAAAAAAAAAAAACAAAAEXBncy5pbi51c2VyaWJtLmh1AAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAzAAAAC3NzaC1lZDI1NTE5AAAAIEXYIIzrUSx8/BQ6/ttkSr5oEyB5F5Yg4bp1DOkqDON9AAAAUwAAAAtzc2gtZWQyNTUxOQAAAECaRgvkNcRXtYeM7ugx1jO6P9LsuvheeBueJ/KJMz/SYb+ZOaZjFz/O7WT8aO2B9G/7o+KIjElxl3bQORMOcakH ssh_host_ed25519_key.pub
--- /dev/null
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB60HJEoFUmxuz2kukvbBZB/ePVc/DcClnWUmFheQTsx
--- /dev/null
+HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
--- /dev/null
+AuthorizedPrincipalsFile /etc/ssh/authorized-principals.%u
--- /dev/null
+TrustedUserCAKeys /etc/ssh/trusted-user-ca.keys
--- /dev/null
+ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICcf/XXU8dNVtbveGmwbdnRJfYIItzxKmgRkzlp0k6r5 user-CA
--- /dev/null
+#!/bin/sh
+
+
+# Any %p in the string is replaced by the path name of the file to
+# archive, and any %f is replaced by only the file name. (The path
+# name is relative to the working directory of the server, i.e., the
+# cluster's data directory.) Use %% to embed an actual % character in
+# the command. It is important for the command to return a zero exit
+# status only if it succeeds.
+
+
+FQ_WAL_FILE=$1
+WAL_FILE=$2
+POSTGRESQL_PATH=/data/postgresql
+WAL_ARCHIVE_PATH=$POSTGRESQL_PATH/wal-archive
+MAIN_DBC_NAME=main-dbc
+MAIN_DBC_PATH=$POSTGRESQL_PATH/$MAIN_DBC_NAME
+MAIN_DBC_WAL_ARCHIVE_PATH=$WAL_ARCHIVE_PATH/$MAIN_DBC_NAME
+
+
+if [ -f $MAIN_DBC_WAL_ARCHIVE_PATH/${WAL_FILE}.gz ]
+then
+ ARCHIVED_CHECKSUM=$(md5sum $MAIN_DBC_WAL_ARCHIVE_PATH/${WAL_FILE}.gz \
+ | cut -f 1 -d ' ')
+ CURRENT_CHECKSUM=$(gzip --to-stdout $MAIN_DBC_PATH/$FQ_WAL_FILE \
+ | md5sum | cut -f 1 -d ' ')
+ if [ "$ARCHIVED_CHECKSUM" == "$CURRENT_CHECKSUM" ]
+ then
+ exit 0
+ else
+ exit 1
+ fi
+else
+ cp --archive $MAIN_DBC_PATH/$FQ_WAL_FILE $MAIN_DBC_WAL_ARCHIVE_PATH
+ gzip $MAIN_DBC_WAL_ARCHIVE_PATH/$WAL_FILE
+fi
--- /dev/null
+#!/bin/sh
+
+
+CURRENT_DATE=$(date +%Y%m%d)
+POSTGRESQL_PATH=/data/postgresql
+DUMP_PATH=$POSTGRESQL_PATH/dumps
+WAL_ARCHIVE_PATH=$POSTGRESQL_PATH/wal-archive
+MAIN_DBC_NAME=main-dbc
+MAIN_DBC_DUMP_PATH=$DUMP_PATH/$MAIN_DBC_NAME
+MAIN_DBC_WAL_ARCHIVE_PATH=$WAL_ARCHIVE_PATH/$MAIN_DBC_NAME
+MAIN_DBC_DUMP_FILE=$MAIN_DBC_DUMP_PATH/dumpall.$CURRENT_DATE
+
+
+pg_dumpall --clean --if-exists --file=$MAIN_DBC_DUMP_FILE
+gzip $MAIN_DBC_DUMP_FILE
+
+# non-start-or-middle-of-months
+NONSOMOMS=$(ls $MAIN_DBC_DUMP_PATH/dumpall.* \
+ | grep --invert-match \
+ --regexp='01.gz$' \
+ --regexp='15.gz$' | wc -l)
+while [ $NONSOMOMS -gt 5 ]
+do
+ FIRST_NONSOMOM=$(ls $MAIN_DBC_DUMP_PATH/dumpall.* \
+ | grep --invert-match \
+ --regexp='01.gz$' \
+ --regexp='15.gz$' | wc -l)
+ rm --force --recursive $FIRST_NONSOMOM
+ NONSOMOMS=$(ls $MAIN_DBC_DUMP_PATH/dumpall.* \
+ | grep --invert-match \
+ --regexp='01.gz$' \
+ --regexp='15.gz$' | wc -l)
+done
+
+# start-or-middle-of-months
+SOMOMS=$(ls $MAIN_DBC_DUMP_PATH/dumpall.* \
+ | grep --regexp='01.gz$' \
+ --regexp='15.gz$' | wc -l)
+while [ $SOMOMS -gt 5 ]
+do
+ FIRST_SOMOM=$(ls $MAIN_DBC_DUMP_PATH/dumpall.* \
+ | grep --regexp='01.gz$' \
+ --regexp='15.gz$' | wc -l)
+ rm --force --recursive $FIRST_SOMOM
+ SOMOMS=$(ls $MAIN_DBC_DUMP_PATH/dumpall.* \
+ | grep --regexp='01.gz$' \
+ --regexp='15.gz$' | wc -l)
+done
+
+# WAL
+OLDEST_DUMP_FILE=$(ls -t $MAIN_DBC_DUMP_PATH/dumpall.* | head -n 1)
+find $MAIN_DBC_WAL_ARCHIVE_PATH ! -newer $OLDEST_DUMP_FILE | xargs rm --force
--- /dev/null
+#!/bin/sh
+
+
+# Any %f in the string is replaced by the name of the file to retrieve
+# from the archive, and any %p is replaced by the copy destination path
+# name on the server. (The path name is relative to the current working
+# directory, i.e., the cluster's data directory.) Any %r is replaced by
+# the name of the file containing the last valid restart point. That is
+# the earliest file that must be kept to allow a restore to be
+# restartable, so this information can be used to truncate the archive
+# to just the minimum required to support restarting from the current
+# restore. %r is typically only used by warm-standby configurations.
+# Write %% to embed an actual % character.
+# It is important for the command to return a zero exit status only if
+# it succeeds. The command will be asked for file names that are not
+# present in the archive; it must return nonzero when so asked.
+
+
+FQ_WAL_FILE=$1
+WAL_FILE=$2
+POSTGRESQL_PATH=/data/postgresql
+WAL_ARCHIVE_PATH=$POSTGRESQL_PATH/wal-archive
+MAIN_DBC_NAME=main-dbc
+MAIN_DBC_PATH=$POSTGRESQL_PATH/$MAIN_DBC_NAME
+MAIN_DBC_WAL_ARCHIVE_PATH=$WAL_ARCHIVE_PATH/$MAIN_DBC_NAME
+
+
+if [ -f $MAIN_DBC_WAL_ARCHIVE_PATH/${WAL_FILE}.gz ]
+then
+ cp --archive $MAIN_DBC_WAL_ARCHIVE_PATH/${WAL_FILE}.gz \
+ $MAIN_DBC_PATH/${FQ_WAL_FILE}.gz
+ gunzip $MAIN_DBC_PATH/${FQ_WAL_FILE}.gz
+else
+ exit 1
+fi
--- /dev/null
+#!/bin/sh
+
+
+systemctl disable NetworkManager-wait-online.service
+
+systemctl disable logrotate.timer
--- /dev/null
+#!/bin/sh
+
+
+echo '10 2 * * * postgresql /usr/local/bin/backup_postgresql.sh' >>/etc/crontab
--- /dev/null
+lxc.include = /usr/share/lxc/config/common.conf
+
+lxc.uts.name = pgs.in.useribm.hu
+lxc.rootfs.path = __CONTAINER_PATH__/rootfs
+lxc.mount.auto = proc sys
+lxc.mount.entry = __CONTAINER_FILESYSTEMS_PATH__ data none bind,create=dir 0 0
+
+lxc.net.0.type = veth
+lxc.net.0.flags = up
+lxc.net.0.link = brci-dev
+lxc.net.0.hwaddr = 02:0c:18:03:6d:99
+
+lxc.autodev = 1
+
+lxc.cgroup2.devices.allow = a
+lxc.cgroup2.memory.high = 12G
+lxc.cgroup2.memory.max = 16G
+
+lxc.group = in
+
+lxc.idmap = u 0 100000 100000
+lxc.idmap = g 0 100000 100000
+
+lxc.signal.halt = SIGRTMIN+4
+
+lxc.start.auto = 1
+lxc.start.order = __CONTAINER_START_ORDER__
+lxc.start.delay = 5
--- /dev/null
+DISTRIBUTION=Fedora
+DISTRIBUTION_VERSION=42
+SPEC_PACKAGES="cronie \
+ glibc-all-langpacks \
+ glibc-langpack-en \
+ glibc-langpack-hu \
+ glibc-locale-source \
+ postgresql-server \
+ openssh-clients \
+ openssh-server"
pns.pm 12
group 3:
- ws.pm 21
- xfr.pm 22
+ mx.pm 21
+ ws.pm 22
+ xfr.pm 23
group 4:
ifg.in 31
group 6:
db2.in 51
fds.in 52
- pki.in 53
- slycpx.in 54
- slycrm.in 55
- sns.in 56
- wiki.in 57
+ pgs.in 53
+ pki.in 54
+ slycpx.in 55
+ slycrm.in 56
+ sns.in 57
+ wiki.in 58
group 7:
git.pm 61