Compare commits

...

4 Commits

9 changed files with 155 additions and 7 deletions

13
asgard/k0s.md Normal file
View File

@ -0,0 +1,13 @@
# [asgard] K0S
## Installation
`curl -sSLf https://get.k0s.sh | sudo K0S_VERSION=v1.29.4+k0s.0 sh`
`sudo mkdir /etc/k0s`
`sudo k0s config create | sudo tee /etc/k0s/k0s.yml`
`sudo k0s install controller --data-dir /data/k0s --single -c /etc/k0s/k0s.yml`
`sudo k0s start`

43
asgard/storage.md Normal file
View File

@ -0,0 +1,43 @@
# [asgard] Stockage
## Schéma de partitionnement cible
- **vda** (disque système cloud-init) 10G
- vda14 (BIOS boot)
- vda15 (EFI)
- vda1 (partition racine /)
- **vdb** (disque secondaire LVM) 5G
### Schéma de partitionnement LVM
- **data** (LVM volume group) : **vdb**
- **k0s** (LVM logical volume) : 5G
## Initialisation LVM pour le disque secondaire
Création du *physical volume* **vdb**
`sudo pvcreate /dev/vdb`
Création du *volume groupe* **data**
`sudo vgcreate data /dev/vdb`
Création du *logical volume* **k0s**
`sudo lvcreate -l+100%FREE -n k0s data`
### Formatage et montage des volumes de données
Formatage du volume en EXT4
`sudo mkfs.ext4 /dev/data/k0s`
Création des répertoires `/data/k0s`
`sudo mkdir -p /data/k0s`
Montage des volumes. Via `/etc/fstab`
```
/dev/data/k0s /data/k0s ext4 rw,discard,errors=remount-ro 0 1
```
`sudo mount /data/k0s`

10
midgard/backup/install Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
set -e
BASEDIR=$(dirname "$0")
install -o root -g root -m 755 "$BASEDIR/mkpsqlbackup" /usr/local/bin/mkpsqlbackup
install -o root -g root -m 644 "$BASEDIR/mkpsqlbackup.conf" /etc/mkpsqlbackup.conf
install -o root -g root -m 644 "$BASEDIR/mkpsqlbackup.service" /etc/systemd/system/mkpsqlbackup.service
install -o root -g root -m 644 "$BASEDIR/mkpsqlbackup.timer" /etc/systemd/system/mkpsqlbackup.timer

View File

@ -0,0 +1,35 @@
#!/bin/sh
set -e
# Default configuration
DATABASES=''
BACKUP_DIR=/data/backup/postgresql
RETENTION_DAYS=7
if ! source /etc/mkpsqlbackup.conf ; then
echo '[MKPSQLBACKUP] : Unable to load configuration file' >&2
exit 1
fi
if [ "$(id -un)" != 'postgres' ] ; then
echo '[MKPSQLBACKUP] : This script must be run as postgres user' >&2
exit 2
fi
FINAL_BACKUP_DIR="$BACKUP_DIR/-$(date '+%Y-%m-%d')"
echo "[MKPSQLBACKUP] : Creating backup directory $FINAL_BACKUP_DIR"
if ! mkdir -p "$FINAL_BACKUP_DIR" ; then
echo "[MKPSQLBACKUP] : Unable to create backup directory $FINAL_BACKUP_DIR"
exit 3
fi
for db in DATABASES ; do
echo "[MKPSQLBACKUP] : Backup of $db"
if ! pg_dump -Fc "$db" -f "$FINAL_BACKUP_DIR/$db" ; then
echo "[MKPSQLBACKUP] : Unable to backup database $db" >&2
fi
done
echo '[MKPSQLBACKUP] : Purging old backups'
find "$BACKUP_DIR" -maxdepth 1 mindepth 1 -mtime +"$RETENTION_DAYS" -exec rm -rf '{}' ';'

View File

@ -0,0 +1,3 @@
DATABASES=''
BACKUP_DIR=/data/backup/postgresql
RETENTION_DAYS=7

View File

@ -0,0 +1,5 @@
[Unit]
Description=Performing PostgreSQL database backups
[Service]
ExecStart=/usr/local/bin/mkpsqlbackup

View File

@ -0,0 +1,10 @@
[Unit]
Description=Performing PostgreSQL database backups every days at 3:00am
[Timer]
# Run every days at 3:00am
OnCalendar=*-*-* 3:00:00
Persistent=true
[Install]
WantedBy=timers.target

21
midgard/postgresql.md Normal file
View File

@ -0,0 +1,21 @@
# [midgard] PostgreSQL
## Installation
`sudo curl -o /etc/apt/trusted.gpg.d/pgdg.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc`
`echo "deb [signed-by=/etc/apt/trusted.gpg.d/pgdg.asc] https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list`
`sudo apt update`
`sudo apt install postgresql-16`
## Configuration
`sudo chown postgres:postgres /data/pgdata /data/pglog`
`sudo pg_dropcluster --stop 16 main`
`sudo pg_createcluster -d /data/pgdata/16/midgard -l /data/pglog/postgresql-16-midgard.log 16 midgard`
`sudo pg_ctlcluster start 16 midgard`

View File

@ -6,12 +6,13 @@
- vda15 (EFI) - vda15 (EFI)
- vda1 (partition racine /) - vda1 (partition racine /)
- **vdb** (disque secondaire LVM) 5G - **vdb** (disque secondaire LVM) 6G
### Schéma de partitionnement LVM ### Schéma de partitionnement LVM
- **data** (LVM volume group) : **vdb** - **data** (LVM volume group) : **vdb**
- **pgdata** (LVM logical volume) : 4G - **pgdata** (LVM logical volume) : 4G
- **pglog** (LVM logical volume) : 1G - **pglog** (LVM logical volume) : 1G
- **backup** (LVM logical volume) : 1G
## Initialisation LVM pour le disque secondaire ## Initialisation LVM pour le disque secondaire
@ -23,11 +24,13 @@ Création du *volume groupe* **data**
`sudo vgcreate data /dev/vdb` `sudo vgcreate data /dev/vdb`
Création des *logical volumes* **pgdata** et **pglog** Création des *logical volumes* **pgdata**, **pglog** et **backup**
`sudo lvcreate -L 4G -n pgdata data` `sudo lvcreate -L 4G -n pgdata data`
`sudo lvcreate -l+100%FREE -n pglog data` `sudo lvcreate -L 1G -n pglog data`
`sudo lvcreate -l+100%FREE -n backup data`
### Formatage et montage des volumes de données ### Formatage et montage des volumes de données
Formatage les deux volumes en EXT4 Formatage les deux volumes en EXT4
@ -36,17 +39,22 @@ Formatage les deux volumes en EXT4
`sudo mkfs.ext4 /dev/data/pgdata` `sudo mkfs.ext4 /dev/data/pgdata`
Création des répertoires `/data/pgdata` et `/data/pglog` `sudo mkfs.ext4 /dev/data/backup`
`sudo mkdir -p /data/pgdata /data/pglog` Création des répertoires `/data/pgdata`, `/data/pglog` et `/data/backup`
`sudo mkdir -p /data/pgdata /data/pglog /data/backup`
Montage des volumes. Via `/etc/fstab` Montage des volumes. Via `/etc/fstab`
``` ```
/dev/data/pgdata /data/pgdata ext4 rw,discard,errors=remount-ro,x-systemd.growfs 0 1 /dev/data/pgdata /data/pgdata ext4 rw,discard,errors=remount-ro 0 1
/dev/data/pglog /data/pglog ext4 rw,discard,errors=remount-ro,x-systemd.growfs 0 1 /dev/data/pglog /data/pglog ext4 rw,discard,errors=remount-ro 0 1
/dev/data/backup /data/backup ext4 rw,discard,errors=remount-ro 0 1
``` ```
`sudo mount /data/pgdata` `sudo mount /data/pgdata`
`sudo mount /data/pglog` `sudo mount /data/pglog`
`sudo mount /data/backup`