Add #!/bin/install_docker_base.sh
This commit is contained in:
226
#!/bin/install_docker_base.sh
Normal file
226
#!/bin/install_docker_base.sh
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "========================================"
|
||||||
|
echo " SIMATICA - Docker Bootstrap"
|
||||||
|
echo "========================================"
|
||||||
|
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
#
|
||||||
|
# Aggiornamenti iniziali
|
||||||
|
#
|
||||||
|
apt-get clean
|
||||||
|
apt-get update
|
||||||
|
apt-get dist-upgrade -y
|
||||||
|
apt-get autoremove -y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Rimozione eventuali vecchie versioni Docker
|
||||||
|
#
|
||||||
|
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
|
||||||
|
apt-get remove -y "$pkg" || true
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# Pacchetti base
|
||||||
|
#
|
||||||
|
apt-get install -y \
|
||||||
|
ca-certificates \
|
||||||
|
curl \
|
||||||
|
gnupg \
|
||||||
|
lsb-release \
|
||||||
|
rsync \
|
||||||
|
parted \
|
||||||
|
software-properties-common
|
||||||
|
|
||||||
|
#
|
||||||
|
# Configurazione secondo disco
|
||||||
|
#
|
||||||
|
if [ -b /dev/sdb ]; then
|
||||||
|
|
||||||
|
echo "[INFO] Secondo disco rilevato: /dev/sdb"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Se non esiste partizione, la crea
|
||||||
|
#
|
||||||
|
if ! blkid /dev/sdb1 >/dev/null 2>&1; then
|
||||||
|
|
||||||
|
echo "[INFO] Creo partizione su /dev/sdb"
|
||||||
|
|
||||||
|
parted -s /dev/sdb mklabel gpt
|
||||||
|
parted -s /dev/sdb mkpart primary ext4 0% 100%
|
||||||
|
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
mkfs.ext4 -F /dev/sdb1
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Mount /mnt/docker
|
||||||
|
#
|
||||||
|
mkdir -p /mnt/docker
|
||||||
|
|
||||||
|
UUID=$(blkid -s UUID -o value /dev/sdb1)
|
||||||
|
|
||||||
|
if ! grep -q "$UUID" /etc/fstab; then
|
||||||
|
echo "UUID=$UUID /mnt/docker ext4 defaults,nofail 0 2" >> /etc/fstab
|
||||||
|
fi
|
||||||
|
|
||||||
|
mount -a
|
||||||
|
|
||||||
|
echo "[OK] Disco Docker montato"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
echo "[WARNING] Nessun secondo disco trovato"
|
||||||
|
|
||||||
|
mkdir -p /mnt/docker
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Installazione Docker ufficiale
|
||||||
|
#
|
||||||
|
install -m 0755 -d /etc/apt/keyrings
|
||||||
|
|
||||||
|
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
|
||||||
|
-o /etc/apt/keyrings/docker.asc
|
||||||
|
|
||||||
|
chmod a+r /etc/apt/keyrings/docker.asc
|
||||||
|
|
||||||
|
echo \
|
||||||
|
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
|
||||||
|
https://download.docker.com/linux/ubuntu \
|
||||||
|
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" \
|
||||||
|
> /etc/apt/sources.list.d/docker.list
|
||||||
|
|
||||||
|
apt-get update
|
||||||
|
|
||||||
|
apt-get install -y \
|
||||||
|
docker-ce \
|
||||||
|
docker-ce-cli \
|
||||||
|
containerd.io \
|
||||||
|
docker-buildx-plugin \
|
||||||
|
docker-compose-plugin
|
||||||
|
|
||||||
|
#
|
||||||
|
# Stop servizi
|
||||||
|
#
|
||||||
|
systemctl stop docker.socket || true
|
||||||
|
systemctl stop docker || true
|
||||||
|
systemctl stop containerd || true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Directory dedicate
|
||||||
|
#
|
||||||
|
mkdir -p /mnt/docker/docker
|
||||||
|
mkdir -p /mnt/docker/containerd
|
||||||
|
mkdir -p /mnt/docker/portainer
|
||||||
|
|
||||||
|
mkdir -p /etc/docker
|
||||||
|
mkdir -p /etc/containerd
|
||||||
|
|
||||||
|
#
|
||||||
|
# Migrazione eventuali dati esistenti
|
||||||
|
#
|
||||||
|
rsync -aHAXx /var/lib/docker/ /mnt/docker/docker/ 2>/dev/null || true
|
||||||
|
rsync -aHAXx /var/lib/containerd/ /mnt/docker/containerd/ 2>/dev/null || true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Docker data-root
|
||||||
|
#
|
||||||
|
cat >/etc/docker/daemon.json <<EOF
|
||||||
|
{
|
||||||
|
"data-root": "/mnt/docker/docker",
|
||||||
|
"log-driver": "json-file",
|
||||||
|
"log-opts": {
|
||||||
|
"max-size": "50m",
|
||||||
|
"max-file": "3"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# Containerd config
|
||||||
|
#
|
||||||
|
containerd config default >/etc/containerd/config.toml
|
||||||
|
|
||||||
|
sed -i 's#^root = .*#root = "/mnt/docker/containerd"#' \
|
||||||
|
/etc/containerd/config.toml
|
||||||
|
|
||||||
|
sed -i 's#^state = .*#state = "/run/containerd"#' \
|
||||||
|
/etc/containerd/config.toml
|
||||||
|
|
||||||
|
#
|
||||||
|
# Symlink containerd
|
||||||
|
#
|
||||||
|
rm -rf /var/lib/containerd || true
|
||||||
|
|
||||||
|
ln -s /mnt/docker/containerd /var/lib/containerd
|
||||||
|
|
||||||
|
#
|
||||||
|
# Avvio servizi
|
||||||
|
#
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
systemctl enable containerd
|
||||||
|
systemctl enable docker
|
||||||
|
|
||||||
|
systemctl start containerd
|
||||||
|
systemctl start docker
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verifiche Docker
|
||||||
|
#
|
||||||
|
docker --version
|
||||||
|
docker compose version
|
||||||
|
|
||||||
|
docker run --rm hello-world
|
||||||
|
|
||||||
|
#
|
||||||
|
# Installazione Portainer
|
||||||
|
#
|
||||||
|
docker volume create portainer_data
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name portainer \
|
||||||
|
--restart always \
|
||||||
|
-p 10443:9443 \
|
||||||
|
-p 8099:9000 \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v /mnt/docker/portainer:/data \
|
||||||
|
portainer/portainer-ce:latest
|
||||||
|
|
||||||
|
#
|
||||||
|
# Prerequisiti Wazuh / Elasticsearch
|
||||||
|
#
|
||||||
|
sysctl -w vm.max_map_count=262144
|
||||||
|
|
||||||
|
echo 'vm.max_map_count=262144' \
|
||||||
|
>/etc/sysctl.d/99-wazuh.conf
|
||||||
|
|
||||||
|
sysctl --system
|
||||||
|
|
||||||
|
#
|
||||||
|
# MOTD Simatica
|
||||||
|
#
|
||||||
|
cat >/etc/motd <<EOF
|
||||||
|
========================================
|
||||||
|
SIMATICA - Docker Server
|
||||||
|
========================================
|
||||||
|
Docker Root : /mnt/docker/docker
|
||||||
|
Portainer : https://$(hostname):10443
|
||||||
|
========================================
|
||||||
|
EOF
|
||||||
|
|
||||||
|
#
|
||||||
|
# Pulizia finale
|
||||||
|
#
|
||||||
|
apt-get autoremove -y
|
||||||
|
apt-get clean
|
||||||
|
|
||||||
|
echo "========================================"
|
||||||
|
echo " Bootstrap completato correttamente"
|
||||||
|
echo "========================================"
|
||||||
Reference in New Issue
Block a user